--- /dev/null
+{
+ "phabricator.uri": "https://phabricator.kde.org/project/profile/34/"
+}
--- /dev/null
+# 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*
--- /dev/null
+REVIEWBOARD_URL = "https://git.reviewboard.kde.org"
+REPOSITORY = "git://anongit.kde.org/libkleo"
+BRANCH = "master"
+TARGET_GROUPS = "kdepim"
+TARGET_PEOPLE = "mlaurent"
--- /dev/null
+cmake_minimum_required(VERSION 3.0)
+set(PIM_VERSION "5.6.3")
+
+project(libkleo VERSION ${PIM_VERSION})
+
+set(KF5_VERSION "5.35.0")
+find_package(ECM ${KF5_VERSION} CONFIG REQUIRED)
+set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH})
+set(LIBRARY_NAMELINK)
+include(GenerateExportHeader)
+include(ECMSetupVersion)
+include(ECMGenerateHeaders)
+include(ECMGeneratePriFile)
+include(CMakePackageConfigHelpers)
+include(ECMSetupVersion)
+include(FeatureSummary)
+include(KDEInstallDirs)
+include(KDECMakeSettings)
+include(KDEFrameworkCompilerSettings NO_POLICY_SCOPE)
+include(ECMQtDeclareLoggingCategory)
+include(ECMAddTests)
+include(ECMCoverageOption)
+
+
+set(LIBKLEO_LIB_VERSION ${PIM_VERSION})
+set(QT_REQUIRED_VERSION "5.7.0")
+set(KDEPIMTEXTEDIT_VERSION "5.6.3")
+
+find_package(Qt5 ${QT_REQUIRED_VERSION} CONFIG REQUIRED Widgets)
+find_package(KF5I18n ${KF5_VERSION} CONFIG REQUIRED)
+find_package(KF5Config ${KF5_VERSION} CONFIG REQUIRED)
+find_package(KF5WidgetsAddons ${KF5_VERSION} CONFIG REQUIRED)
+find_package(KF5Completion ${KF5_VERSION} CONFIG REQUIRED)
+find_package(KF5WindowSystem ${KF5_VERSION} CONFIG REQUIRED)
+find_package(KF5CoreAddons ${KF5_VERSION} CONFIG REQUIRED)
+find_package(KF5Codecs ${KF5_VERSION} CONFIG REQUIRED)
+find_package(KF5ItemModels ${KF5_VERSION} CONFIG REQUIRED)
+find_package(KF5PimTextEdit ${KDEPIMTEXTEDIT_VERSION} CONFIG)
+
+set(GPGMEPP_LIB_VERSION "1.7.1")
+find_package(Gpgmepp ${GPGMEPP_LIB_VERSION})
+set_package_properties(Gpgmepp PROPERTIES DESCRIPTION "GpgME++ Library" URL "http://www.gnupg.org" TYPE REQUIRED PURPOSE "GpgME++ is required for OpenPGP support")
+find_package(QGpgme ${GPGMEPP_LIB_VERSION} CONFIG REQUIRED)
+
+
+find_package(Boost 1.34.0)
+set_package_properties(Boost PROPERTIES DESCRIPTION "Boost C++ Libraries" URL "http://www.boost.org" TYPE REQUIRED PURPOSE "Boost is required for building most KDEPIM applications")
+
+
+set_package_properties(KF5PimTextEdit PROPERTIES DESCRIPTION
+ "A textedit with PIM-specific features."
+ URL "https://projects.kde.org/projects/kde/pim/kpimtextedit"
+ TYPE OPTIONAL PURPOSE "Improved audit log viewer.")
+
+ecm_setup_version(PROJECT VARIABLE_PREFIX LIBKLEO
+ VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/libkleo_version.h"
+ PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/KF5LibkleoConfigVersion.cmake"
+ SOVERSION 5
+)
+
+########### Targets ###########
+add_definitions(-DQT_DISABLE_DEPRECATED_BEFORE=0)
+#add_definitions(-DQT_DISABLE_DEPRECATED_BEFORE=0x060000)
+remove_definitions( -DQT_NO_CAST_FROM_ASCII )
+add_definitions(-DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT)
+add_definitions(-DQT_NO_URL_CAST_FROM_STRING)
+add_definitions(-DQT_USE_QSTRINGBUILDER)
+
+
+########### CMake Config Files ###########
+set(CMAKECONFIG_INSTALL_DIR "${KDE_INSTALL_CMAKEPACKAGEDIR}/KF5Libkleo")
+
+configure_package_config_file(
+ "${CMAKE_CURRENT_SOURCE_DIR}/KF5LibkleoConfig.cmake.in"
+ "${CMAKE_CURRENT_BINARY_DIR}/KF5LibkleoConfig.cmake"
+ INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR}
+)
+
+install(FILES
+ "${CMAKE_CURRENT_BINARY_DIR}/KF5LibkleoConfig.cmake"
+ "${CMAKE_CURRENT_BINARY_DIR}/KF5LibkleoConfigVersion.cmake"
+ DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
+ COMPONENT Devel
+)
+
+install(EXPORT KF5LibkleoTargets DESTINATION "${CMAKECONFIG_INSTALL_DIR}" FILE KF5LibkleoTargets.cmake NAMESPACE KF5::)
+
+install(FILES
+ ${CMAKE_CURRENT_BINARY_DIR}/libkleo_version.h
+ DESTINATION ${KDE_INSTALL_INCLUDEDIR_KF5} COMPONENT Devel
+)
+
+
+
+add_subdirectory(src)
+install( FILES libkleo.renamecategories libkleo.categories DESTINATION ${KDE_INSTALL_CONFDIR} )
+feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES)
+ki18n_install(po)
--- /dev/null
+NOTE! The GPL below is copyrighted by the Free Software Foundation, but
+the instance of code that it refers to (the kde programs) are copyrighted
+by the authors who actually wrote it.
+
+---------------------------------------------------------------------------
+
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 51 Franklin Street, 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.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+\f
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+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 give any other recipients of the Program a copy of this License
+along with the Program.
+
+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 Program or any portion
+of it, thus forming a work based on the Program, 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) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+\f
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+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 Program, 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 Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) 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; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, 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 executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or 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 counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+\f
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program 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.
+
+ 5. 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 Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. 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 Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program 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 Program.
+
+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.
+\f
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program 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.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the 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 Program
+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 Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, 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
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "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 PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. 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 PROGRAM 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 PROGRAM (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 PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), 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 Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) 19yy <name of author>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program 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 General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) 19yy name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Library General
+Public License instead of this License.
--- /dev/null
+
+ 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.
+\f
+ 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.
+\f
+ 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.
+\f
+ 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.
+\f
+ 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.
+\f
+ 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.
+\f
+ 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.
+\f
+ 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.
+\f
+ 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
+\f
+ How to Apply These Terms to Your New Libraries
+
+ If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change. You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms
+of the ordinary General Public License).
+
+ To apply these terms, attach the following notices to the library.
+It is safest to attach them to the start of each source file to most
+effectively convey the exclusion of warranty; and each file should
+have at least the "copyright" line and a pointer to where the full
+notice is found.
+
+
+ <one line to give the library's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU 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.
+
+ <signature of Ty Coon>, 1 April 1990
+ Ty Coon, President of Vice
+
+That's all there is to it!
+
+
--- /dev/null
+@PACKAGE_INIT@
+
+include(CMakeFindDependencyMacro)
+find_dependency(Gpgmepp "@GPGMEPP_LIB_VERSION@")
+include("${CMAKE_CURRENT_LIST_DIR}/KF5LibkleoTargets.cmake")
--- /dev/null
+// DOXYGEN_REFERENCES = kdecore kdeui gpgme++ qgpgme
--- /dev/null
+org.kde.pim.kleo_ui libkleo (kleo_ui)
+org.kde.pim.gpgme_backend libkleo (gpgme_backend)
--- /dev/null
+log_kleo_ui org.kde.pim.kleo_ui
+log_gpgme_backend org.kde.pim.gpgme_backend
--- /dev/null
+EXCLUDE license
--- /dev/null
+# translation of libkleopatra.po to
+# Youssef Chahibi <chahibi@gmail.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: libkleopatra\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2017-07-12 06:56+0200\n"
+"PO-Revision-Date: 2007-10-14 15:57+0000\n"
+"Last-Translator: Youssef Chahibi <chahibi@gmail.com>\n"
+"Language-Team: <en@li.org>\n"
+"Language: ar\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
+"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: kleo/checksumdefinition.cpp:107
+#, kde-format
+msgid "Error in checksum definition %1: %2"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:157
+#, kde-format
+msgid "Cannot use both %f and | in '%1'"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:167
+#, kde-format
+msgid "Quoting error in '%1' entry"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:170
+#, kde-format
+msgid "'%1' too complex (would need shell)"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:174
+#, kde-format
+msgid "'%1' entry is empty/missing"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:183
+#, kde-format
+msgid "'%1' empty or not found"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:222
+#, kde-format
+msgid "'id' entry is empty/missing"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:225
+#, kde-format
+msgid "'output-file' entry is empty/missing"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:228
+#, kde-format
+msgid "'file-patterns' entry is empty/missing"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:395
+#, kde-format
+msgid "Caught unknown exception in group %1"
+msgstr ""
+
+#: kleo/dn.cpp:507
+#, kde-format
+msgid "Common name"
+msgstr "Common name"
+
+#: kleo/dn.cpp:508
+#, kde-format
+msgid "Surname"
+msgstr "Surname"
+
+#: kleo/dn.cpp:509
+#, kde-format
+msgid "Given name"
+msgstr "Given name"
+
+#: kleo/dn.cpp:510
+#, kde-format
+msgid "Location"
+msgstr "Location"
+
+#: kleo/dn.cpp:511
+#, kde-format
+msgid "Title"
+msgstr "Title"
+
+#: kleo/dn.cpp:512
+#, kde-format
+msgid "Organizational unit"
+msgstr "Organizational unit"
+
+#: kleo/dn.cpp:513
+#, kde-format
+msgid "Organization"
+msgstr "Organization"
+
+#: kleo/dn.cpp:514
+#, kde-format
+msgid "Postal code"
+msgstr "Postal code"
+
+#: kleo/dn.cpp:515
+#, kde-format
+msgid "Country code"
+msgstr "Country code"
+
+#: kleo/dn.cpp:516
+#, kde-format
+msgid "State or province"
+msgstr "State or province"
+
+#: kleo/dn.cpp:517
+#, kde-format
+msgid "Domain component"
+msgstr "Domain component"
+
+#: kleo/dn.cpp:518
+#, kde-format
+msgid "Business category"
+msgstr "Business category"
+
+#: kleo/dn.cpp:519
+#, kde-format
+msgid "Email address"
+msgstr "Email address"
+
+#: kleo/dn.cpp:520
+#, kde-format
+msgid "Mail address"
+msgstr "Mail address"
+
+#: kleo/dn.cpp:521
+#, kde-format
+msgid "Mobile phone number"
+msgstr "Mobile phone number"
+
+#: kleo/dn.cpp:522
+#, kde-format
+msgid "Telephone number"
+msgstr "Telephone number"
+
+#: kleo/dn.cpp:523
+#, kde-format
+msgid "Fax number"
+msgstr "Fax number"
+
+#: kleo/dn.cpp:524
+#, kde-format
+msgid "Street address"
+msgstr "Street address"
+
+#: kleo/dn.cpp:525
+#, kde-format
+msgid "Unique ID"
+msgstr "Unique ID"
+
+#: kleo/enum.cpp:57
+#, kde-format
+msgid "Inline OpenPGP (deprecated)"
+msgstr "Inline OpenPGP (deprecated)"
+
+#: kleo/enum.cpp:62
+#, kde-format
+msgid "OpenPGP/MIME"
+msgstr "OpenPGP/MIME"
+
+#: kleo/enum.cpp:67 ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "S/MIME"
+msgstr "S/MIME"
+
+#: kleo/enum.cpp:72
+#, fuzzy, kde-format
+msgid "S/MIME Opaque"
+msgstr "S معتم"
+
+#: kleo/enum.cpp:104
+#, kde-format
+msgid "Any"
+msgstr "Any"
+
+#: kleo/enum.cpp:177
+#, kde-format
+msgid "Never Encrypt"
+msgstr "Never Encrypt"
+
+#: kleo/enum.cpp:179
+#, kde-format
+msgid "Always Encrypt"
+msgstr "Always Encrypt"
+
+#: kleo/enum.cpp:181
+#, kde-format
+msgid "Always Encrypt If Possible"
+msgstr "Always Encrypt If Possible"
+
+#: kleo/enum.cpp:183 kleo/enum.cpp:240
+#, kde-format
+msgid "Ask"
+msgstr "Ask"
+
+#: kleo/enum.cpp:185 kleo/enum.cpp:242
+#, kde-format
+msgid "Ask Whenever Possible"
+msgstr "Ask Whenever Possible"
+
+#: kleo/enum.cpp:187
+#, fuzzy, kde-kuit-format
+msgctxt "no specific preference"
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder> لا شيء</placeholder>"
+
+#: kleo/enum.cpp:234
+#, kde-format
+msgid "Never Sign"
+msgstr "Never Sign"
+
+#: kleo/enum.cpp:236
+#, kde-format
+msgid "Always Sign"
+msgstr "Always Sign"
+
+#: kleo/enum.cpp:238
+#, kde-format
+msgid "Always Sign If Possible"
+msgstr "Always Sign If Possible"
+
+#: kleo/enum.cpp:244
+#, fuzzy, kde-format
+msgctxt "no specific preference"
+msgid "<none>"
+msgstr "<لا شيء>"
+
+#: kleo/keyfiltermanager.cpp:85
+#, fuzzy, kde-format
+msgid "All Certificates"
+msgstr "ابدأ شهادة المدير"
+
+#: kleo/keyfiltermanager.cpp:100
+#, kde-format
+msgid "My Certificates"
+msgstr ""
+
+#: kleo/keyfiltermanager.cpp:118
+#, fuzzy, kde-format
+msgid "Trusted Certificates"
+msgstr "ابدأ شهادة المدير"
+
+#: kleo/keyfiltermanager.cpp:135
+#, fuzzy, kde-format
+msgid "Fully Trusted Certificates"
+msgstr "ابدأ شهادة المدير"
+
+#: kleo/keyfiltermanager.cpp:152
+#, fuzzy, kde-format
+msgid "Other Certificates"
+msgstr "ابدأ شهادة المدير"
+
+#: kleo/keyfiltermanager.cpp:166
+#, fuzzy, kde-format
+msgid "VS-compliant Certificates"
+msgstr "ابدأ شهادة المدير"
+
+#: kleo/keyfiltermanager.cpp:184
+#, fuzzy, kde-format
+msgid "Not validated Certificates"
+msgstr "ابدأ شهادة المدير"
+
+#: ui/auditlogviewer.cpp:49
+#, kde-format
+msgid "View GnuPG Audit Log"
+msgstr ""
+
+#: ui/auditlogviewer.cpp:53
+#, kde-format
+msgid "&Copy to Clipboard"
+msgstr ""
+
+#: ui/auditlogviewer.cpp:59
+#, kde-format
+msgid "&Save to Disk..."
+msgstr ""
+
+#: ui/auditlogviewer.cpp:95
+#, kde-format
+msgid "Choose File to Save GnuPG Audit Log to"
+msgstr ""
+
+#: ui/auditlogviewer.cpp:118
+#, kde-format
+msgid "Could not save to file \"%1\": %2"
+msgstr ""
+
+#: ui/auditlogviewer.cpp:120
+#, kde-format
+msgid "File Save Error"
+msgstr ""
+
+#: ui/cryptoconfigdialog.cpp:44
+#, kde-format
+msgid "Configure GnuPG Backend"
+msgstr ""
+
+#: ui/cryptoconfigdialog.cpp:55
+#, kde-format
+msgid "&Reset"
+msgstr "&Reset"
+
+#: ui/cryptoconfigmodule.cpp:160
+#, fuzzy, kde-format
+msgid "GpgConf Error"
+msgstr "Encryption keys:"
+
+#: ui/cryptoconfigmodule.cpp:216
+#, kde-format
+msgid ""
+"The gpgconf tool used to provide the information for this dialog does not "
+"seem to be installed properly. It did not return any components. Try running "
+"\"%1\" on the command line for more information."
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:496
+#, kde-format
+msgctxt ""
+"Translate this to 'yes' or 'no' (use the English words!) depending on "
+"whether your language uses Sentence style capitalisation in GUI labels (yes) "
+"or not (no). Context: We get some backend strings in that have the wrong "
+"capitalizaion (in English, at least) so we need to force the first character "
+"to upper-case. It is this behaviour you can control for your language with "
+"this translation."
+msgid "yes"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:546
+#, kde-format
+msgid "0 - None"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:547
+#, kde-format
+msgid "1 - Basic"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:548
+#, kde-format
+msgid "2 - Verbose"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:549
+#, kde-format
+msgid "3 - More Verbose"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:550
+#, kde-format
+msgid "4 - All"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:559
+#, kde-format
+msgid "Set the debugging level to"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:787
+#, kde-format
+msgid "Show..."
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:787 ui/cryptoconfigmodule.cpp:876
+#, kde-format
+msgid "Edit..."
+msgstr "Edit..."
+
+#: ui/cryptoconfigmodule.cpp:841
+#, kde-format
+msgid "Configure LDAP Servers"
+msgstr "Configure LDAP Servers"
+
+#: ui/cryptoconfigmodule.cpp:862
+#, fuzzy, kde-format
+#| msgid "No server configured yet"
+msgid "None configured"
+msgstr "No server configured yet"
+
+#: ui/cryptoconfigmodule.cpp:864
+#, fuzzy, kde-format
+msgid "1 server configured"
+msgid_plural "%1 servers configured"
+msgstr[0] "خادم مُهيّء"
+msgstr[1] "خادم مُهيّء"
+msgstr[2] ""
+msgstr[3] ""
+msgstr[4] ""
+msgstr[5] ""
+
+#: ui/cryptoconfigmodule.cpp:879
+#, kde-format
+msgid "Use keyserver at"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:968
+#, fuzzy, kde-format
+msgid "Configure Keyservers"
+msgstr "Configure LDAP Servers"
+
+#: ui/directoryserviceswidget.cpp:67
+#, fuzzy, kde-format
+msgctxt "default server name, keep it a valid domain name, ie. no spaces"
+msgid "server"
+msgstr "never"
+
+#: ui/directoryserviceswidget.cpp:95
+#, kde-format
+msgid "hkp"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:96
+#, kde-format
+msgid "http"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:97
+#, kde-format
+msgid "https"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:98
+#, kde-format
+msgid "ftp"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:99
+#, kde-format
+msgid "ftps"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:100
+#, kde-format
+msgid "ldap"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:101
+#, kde-format
+msgid "ldaps"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:588
+#, fuzzy, kde-format
+msgid "Server Name"
+msgstr "اسم الخادم"
+
+#: ui/directoryserviceswidget.cpp:589
+#, fuzzy, kde-format
+msgid "Server Port"
+msgstr "اسم الخادم"
+
+#: ui/directoryserviceswidget.cpp:590
+#, fuzzy, kde-format
+msgid "Base DN"
+msgstr "الأساس DN"
+
+#: ui/directoryserviceswidget.cpp:591
+#, fuzzy, kde-format
+msgid "User Name"
+msgstr "اسم المستخدم"
+
+#: ui/directoryserviceswidget.cpp:592
+#, fuzzy, kde-format
+msgid "Password"
+msgstr "كلمة المرور"
+
+#: ui/directoryserviceswidget.cpp:614
+#, kde-format
+msgid "(read-only)"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:616
+#, kde-format
+msgctxt "amended tooltip; %1: original tooltip"
+msgid "%1 (read-only)"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:739
+#, kde-format
+msgid ""
+"Enter the name or IP address of the server hosting the directory service."
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:741
+#, kde-format
+msgid ""
+"<b>(Optional, the default is fine in most cases)</b> Pick the port number "
+"the directory service is listening on."
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:744
+#, kde-format
+msgid ""
+"<b>(Only for LDAP)</b> Enter the base DN for this LDAP server to limit "
+"searches to only that subtree of the directory."
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:747
+#, kde-format
+msgid "<b>(Optional)</b> Enter your user name here, if needed."
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:749
+#, kde-format
+msgid ""
+"<b>(Optional, not recommended)</b> Enter your password here, if needed. Note "
+"that the password will be saved in the clear in a config file in your home "
+"directory."
+msgstr ""
+
+#. i18n: ectx: property (windowTitle), widget (QWidget, DirectoryServicesWidget)
+#: ui/directoryserviceswidget.ui:14
+#, fuzzy, kde-format
+msgid "Directory Services Configuration"
+msgstr "دليل الخدمات إعدادات"
+
+#. i18n: ectx: property (text), widget (QLabel, pgpKSLabel)
+#: ui/directoryserviceswidget.ui:22
+#, fuzzy, kde-format
+#| msgid "OpenPGP Key Selection"
+msgid "OpenPGP Keyserver:"
+msgstr "OpenPGP Key Selection"
+
+#. i18n: ectx: property (title), widget (QGroupBox, x500LA)
+#: ui/directoryserviceswidget.ui:35
+#, fuzzy, kde-format
+msgid "X509 Directory services:"
+msgstr "س دليل:"
+
+#. i18n: ectx: property (whatsThis), widget (QTreeView, treeView)
+#: ui/directoryserviceswidget.ui:43
+#, kde-format
+msgid ""
+"This is a list of all directory services that are configured for use with "
+"X.509."
+msgstr ""
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:70
+#, fuzzy, kde-format
+msgid "Click to add a service"
+msgstr "نقر إلى اضف a خدمة"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:73
+#, kde-format
+msgid ""
+"Click this button to create a new directory service entry as a clone of the "
+"currently selected one (or with default values, if no other is selected). "
+"You can then configure details in the table on the left hand."
+msgstr ""
+
+#. i18n: ectx: property (text), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:76
+#, kde-format
+msgid "New"
+msgstr ""
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:92
+#, fuzzy, kde-format
+msgid "Click to remove the currently selected service"
+msgstr "نقر إلى أزِل مُنتقى خدمة"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:95
+#, kde-format
+msgid ""
+"Click this button to remove the currently selected directory service. The "
+"change will only take effect once you acknowledge the main configuration "
+"dialog."
+msgstr ""
+
+#. i18n: ectx: property (text), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:98
+#, kde-format
+msgid "Delete"
+msgstr ""
+
+#. i18n: ectx: property (whatsThis), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:128
+#, kde-format
+msgid ""
+"Use this option to switch display of username and password information on or "
+"off in the above table."
+msgstr ""
+
+#. i18n: ectx: property (text), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:131
+#, kde-format
+msgid "Show user and password information"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:73
+#, kde-format
+msgid "Description"
+msgstr "Description"
+
+#: ui/dnattributeorderconfigwidget.cpp:91
+#, kde-format
+msgid "Available attributes:"
+msgstr "Available attributes:"
+
+#: ui/dnattributeorderconfigwidget.cpp:92
+#, kde-format
+msgid "Current attribute order:"
+msgstr "Current attribute order:"
+
+#: ui/dnattributeorderconfigwidget.cpp:112
+#, kde-format
+msgid "All others"
+msgstr "All others"
+
+#: ui/dnattributeorderconfigwidget.cpp:129
+#, kde-format
+msgid "Move to top"
+msgstr "Move to top"
+
+#: ui/dnattributeorderconfigwidget.cpp:130
+#, kde-format
+msgid "Move one up"
+msgstr "Move one up"
+
+#: ui/dnattributeorderconfigwidget.cpp:131
+#, kde-format
+msgid "Remove from current attribute order"
+msgstr "Remove from current attribute order"
+
+#: ui/dnattributeorderconfigwidget.cpp:132
+#, kde-format
+msgid "Add to current attribute order"
+msgstr "Add to current attribute order"
+
+#: ui/dnattributeorderconfigwidget.cpp:133
+#, kde-format
+msgid "Move one down"
+msgstr "Move one down"
+
+#: ui/dnattributeorderconfigwidget.cpp:134
+#, kde-format
+msgid "Move to bottom"
+msgstr "Move to bottom"
+
+#: ui/keyapprovaldialog.cpp:87
+#, fuzzy, kde-kuit-format
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder> لا شيء</placeholder>"
+
+#: ui/keyapprovaldialog.cpp:88
+#, kde-format
+msgid "Never Encrypt with This Key"
+msgstr "Never Encrypt with This Key"
+
+#: ui/keyapprovaldialog.cpp:89
+#, kde-format
+msgid "Always Encrypt with This Key"
+msgstr "Always Encrypt with This Key"
+
+#: ui/keyapprovaldialog.cpp:90
+#, kde-format
+msgid "Encrypt Whenever Encryption is Possible"
+msgstr "Encrypt Whenever Encryption is Possible"
+
+#: ui/keyapprovaldialog.cpp:91
+#, kde-format
+msgid "Always Ask"
+msgstr "Always Ask"
+
+#: ui/keyapprovaldialog.cpp:92
+#, kde-format
+msgid "Ask Whenever Encryption is Possible"
+msgstr "Ask Whenever Encryption is Possible"
+
+#: ui/keyapprovaldialog.cpp:113
+#, kde-format
+msgid "Encryption Key Approval"
+msgstr "Encryption Key Approval"
+
+#: ui/keyapprovaldialog.cpp:129
+#, kde-format
+msgid "The following keys will be used for encryption:"
+msgstr "The following keys will be used for encryption:"
+
+#: ui/keyapprovaldialog.cpp:145
+#, kde-format
+msgid "Your keys:"
+msgstr "Your keys:"
+
+#: ui/keyapprovaldialog.cpp:157
+#, kde-format
+msgid "Recipient:"
+msgstr "Recipient:"
+
+#: ui/keyapprovaldialog.cpp:162
+#, kde-format
+msgid "Encryption keys:"
+msgstr "Encryption keys:"
+
+#: ui/keyapprovaldialog.cpp:169
+#, kde-format
+msgid "Encryption preference:"
+msgstr "Encryption preference:"
+
+#: ui/keyrequester.cpp:118
+#, fuzzy, kde-format
+msgid "Clear"
+msgstr "امسح"
+
+#: ui/keyrequester.cpp:121
+#, kde-format
+msgid "Change..."
+msgstr "Change..."
+
+#: ui/keyrequester.cpp:232 ui/keyselectiondialog.cpp:256
+#, fuzzy, kde-kuit-format
+msgid "<placeholder>unknown</placeholder>"
+msgstr "<placeholder> مجهول</placeholder>"
+
+#: ui/keyrequester.cpp:246 ui/keyselectiondialog.cpp:657
+#, kde-format
+msgid ""
+"<qt><p>An error occurred while fetching the keys from the backend:</p><p><b>"
+"%1</b></p></qt>"
+msgstr ""
+"<qt><p>An error occurred while fetching the keys from the backend:</p><p><b>"
+"%1</b></p></qt>"
+
+#: ui/keyrequester.cpp:251 ui/keyrequester.cpp:283 ui/keyrequester.cpp:306
+#: ui/keyselectiondialog.cpp:630 ui/keyselectiondialog.cpp:662
+#, kde-format
+msgid "Key Listing Failed"
+msgstr "Key Listing Failed"
+
+#: ui/keyrequester.cpp:281
+#, kde-format
+msgid ""
+"The OpenPGP backend does not support listing keys. Check your installation."
+msgstr ""
+"The OpenPGP backend does not support listing keys. Check your installation."
+
+#: ui/keyrequester.cpp:304
+#, kde-format
+msgid ""
+"The S/MIME backend does not support listing keys. Check your installation."
+msgstr ""
+"The S/MIME backend does not support listing keys. Check your installation."
+
+#: ui/keyrequester.cpp:426
+#, kde-format
+msgid "OpenPGP Key Selection"
+msgstr "OpenPGP Key Selection"
+
+#: ui/keyrequester.cpp:427
+#, kde-format
+msgid "Please select an OpenPGP key to use."
+msgstr "Please select an OpenPGP key to use."
+
+#: ui/keyrequester.cpp:429
+#, kde-format
+msgid "S/MIME Key Selection"
+msgstr "S/MIME Key Selection"
+
+#: ui/keyrequester.cpp:430
+#, kde-format
+msgid "Please select an S/MIME key to use."
+msgstr "Please select an S/MIME key to use."
+
+#: ui/keyrequester.cpp:432
+#, kde-format
+msgid "Key Selection"
+msgstr "Key Selection"
+
+#: ui/keyrequester.cpp:433
+#, kde-format
+msgid "Please select an (OpenPGP or S/MIME) key to use."
+msgstr "Please select an (OpenPGP or S/MIME) key to use."
+
+#: ui/keyselectioncombo.cpp:195
+#, kde-format
+msgctxt "Name <email> (validity, type, created: date)"
+msgid "%1 (%2, %3, created: %4)"
+msgstr ""
+
+#: ui/keyselectioncombo.cpp:196
+#, kde-format
+msgctxt "Name <email>"
+msgid "%1 <%2>"
+msgstr ""
+
+#: ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "OpenPGP"
+msgstr "OpenPGP"
+
+#: ui/keyselectioncombo.cpp:347
+#, fuzzy, kde-format
+#| msgid "Fetching keys..."
+msgid "Loading keys ..."
+msgstr "Fetching keys..."
+
+#: ui/keyselectiondialog.cpp:98
+#, kde-format
+msgid "The key is not valid."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:106
+#, kde-format
+msgid "The key is expired."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:110
+#, kde-format
+msgid "The key is revoked."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:114
+#, kde-format
+msgid "The key is disabled."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:122
+#, fuzzy, kde-format
+#| msgid "The following keys will be used for encryption:"
+msgid "The key is not designated for encryption."
+msgstr "The following keys will be used for encryption:"
+
+#: ui/keyselectiondialog.cpp:128
+#, kde-format
+msgid "The key is not designated for signing."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:134
+#, kde-format
+msgid "The key is not designated for certifying."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:140
+#, kde-format
+msgid "The key is not designated for authentication."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:148
+#, kde-format
+msgid "The key is not secret."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:163
+#, kde-format
+msgid "The key is not trusted enough."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:169
+#, kde-format
+msgid "The key can be used."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:230
+#, kde-format
+msgid "Key ID"
+msgstr "Key ID"
+
+#: ui/keyselectiondialog.cpp:231
+#, kde-format
+msgid "User ID"
+msgstr "User ID"
+
+#: ui/keyselectiondialog.cpp:279
+#, kde-format
+msgid "never"
+msgstr "never"
+
+#: ui/keyselectiondialog.cpp:289 ui/keyselectiondialog.cpp:291
+#: ui/keyselectiondialog.cpp:300 ui/keyselectiondialog.cpp:302
+#, kde-format
+msgid "unknown"
+msgstr "unknown"
+
+#: ui/keyselectiondialog.cpp:289
+#, kde-format
+msgid "OpenPGP key for <b>%1</b>"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:291
+#, kde-format
+msgid "S/MIME key for <b>%1</b>"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:298
+#, kde-format
+msgctxt "Key creation date"
+msgid "Created"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:299
+#, kde-format
+msgctxt "Key Expiration date"
+msgid "Expiry"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:300
+#, kde-format
+msgctxt "Key fingerprint"
+msgid "Fingerprint"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:302
+#, kde-format
+msgctxt "Key issuer"
+msgid "Issuer"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:304
+#, kde-format
+msgctxt "Key status"
+msgid "Status"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:456
+#, fuzzy, kde-format
+msgid "Search for &External Certificates"
+msgstr "ابدأ شهادة المدير"
+
+#: ui/keyselectiondialog.cpp:470
+#, kde-format
+msgid "&Search for:"
+msgstr "&Search for:"
+
+#: ui/keyselectiondialog.cpp:494
+#, kde-format
+msgid "&Remember choice"
+msgstr "&Remember choice"
+
+#: ui/keyselectiondialog.cpp:497
+#, kde-format
+msgid ""
+"<qt><p>If you check this box your choice will be stored and you will not be "
+"asked again.</p></qt>"
+msgstr ""
+"<qt><p>If you check this box your choice will be stored and you will not be "
+"asked again.</p></qt>"
+
+#: ui/keyselectiondialog.cpp:509
+#, kde-format
+msgid "&Reread Keys"
+msgstr "&Reread Keys"
+
+#: ui/keyselectiondialog.cpp:510
+#, fuzzy, kde-format
+msgid "&Start Certificate Manager"
+msgstr "ابدأ شهادة المدير"
+
+#: ui/keyselectiondialog.cpp:628
+#, kde-format
+msgid "No backends found for listing keys. Check your installation."
+msgstr "No backends found for listing keys. Check your installation."
+
+#: ui/keyselectiondialog.cpp:644
+#, fuzzy, kde-format
+msgid "Could not start certificate manager; please check your installation."
+msgstr "لا يمكن بدء مسيّر الشهادات. الرجاء التأكد من نظامك."
+
+#: ui/keyselectiondialog.cpp:646
+#, fuzzy, kde-format
+msgid "Certificate Manager Error"
+msgstr "شهادة المدير خطأ"
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Checking selected keys..."
+msgstr "Checking selected keys..."
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Fetching keys..."
+msgstr "Fetching keys..."
+
+#: ui/keyselectiondialog.cpp:731
+#, fuzzy, kde-format
+msgid ""
+"<qt>One backend returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgid_plural ""
+"<qt>%1 backends returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgstr[0] "<qt> واحد منتهى خلفي مخرجات<p> لا الكل متوفّر</p></qt>"
+msgstr[1] "<qt> واحد منتهى خلفي مخرجات<p> لا الكل متوفّر</p></qt>"
+msgstr[2] ""
+msgstr[3] ""
+msgstr[4] ""
+msgstr[5] ""
+
+#: ui/keyselectiondialog.cpp:736
+#, kde-format
+msgid "Key List Result"
+msgstr "Key List Result"
+
+#: ui/keyselectiondialog.cpp:856
+#, kde-format
+msgid "Recheck Key"
+msgstr "Recheck Key"
+
+#: ui/messagebox.cpp:71
+#, kde-format
+msgid "Your system does not have support for GnuPG Audit Logs"
+msgstr ""
+
+#: ui/messagebox.cpp:72
+#, kde-format
+msgid "System Error"
+msgstr ""
+
+#: ui/messagebox.cpp:79
+#, kde-format
+msgid ""
+"An error occurred while trying to retrieve the GnuPG Audit Log:\n"
+"%1"
+msgstr ""
+
+#: ui/messagebox.cpp:81
+#, kde-format
+msgid "GnuPG Audit Log Error"
+msgstr ""
+
+#: ui/messagebox.cpp:88
+#, kde-format
+msgid "No GnuPG Audit Log available for this operation."
+msgstr ""
+
+#: ui/messagebox.cpp:89
+#, kde-format
+msgid "No GnuPG Audit Log"
+msgstr ""
+
+#: ui/messagebox.cpp:109 ui/messagebox.cpp:115
+#, kde-format
+msgid "GnuPG Audit Log Viewer"
+msgstr ""
+
+#: ui/messagebox.cpp:121
+#, kde-format
+msgid "Signing failed: %1"
+msgstr "Signing failed: %1"
+
+#: ui/messagebox.cpp:122
+#, kde-format
+msgid "Signing successful"
+msgstr ""
+
+#: ui/messagebox.cpp:133
+#, kde-format
+msgid "Encryption failed: %1"
+msgstr "Encryption failed: %1"
+
+#: ui/messagebox.cpp:134
+#, fuzzy, kde-format
+msgid "Encryption successful"
+msgstr "Encryption keys:"
+
+#: ui/messagebox.cpp:155
+#, fuzzy, kde-format
+msgid "Signing Result"
+msgstr "Scan Results"
+
+#: ui/messagebox.cpp:167
+#, kde-format
+msgid "Signing Error"
+msgstr ""
+
+#: ui/messagebox.cpp:179 ui/messagebox.cpp:203
+#, fuzzy, kde-format
+msgid "Encryption Result"
+msgstr "Encryption keys:"
+
+#: ui/messagebox.cpp:191 ui/messagebox.cpp:215
+#, fuzzy, kde-format
+msgid "Encryption Error"
+msgstr "Encryption keys:"
+
+#: ui/messagebox.cpp:263
+#, kde-format
+msgid "&Show Audit Log"
+msgstr ""
+
+#: ui/progressdialog.cpp:91
+#, kde-format
+msgid "%1: %2"
+msgstr "%1: %2"
+
+#, fuzzy
+#~ msgctxt "New OpenPGP Directory Server"
+#~ msgid "OpenPGP"
+#~ msgstr "OpenPGP"
+
+#, fuzzy
+#~ msgid "General"
+#~ msgstr "عام"
+
+#, fuzzy
+#~ msgid "Chiasmus command line tool"
+#~ msgstr "أمر سطر أداة"
+
+#, fuzzy
+#~ msgid "Unsupported protocol \"%1\""
+#~ msgstr ""
+#~ "غير مدعوم مراسم\n"
+#~ "ميفاق"
+
+#, fuzzy
+#~ msgid "File \"%1\" does not exist or is not executable."
+#~ msgstr "ملف ليس أو هو ليس تنفيذي."
+
+#, fuzzy
+#~ msgid "Output from chiasmus"
+#~ msgstr "مخرجات من"
+
+#, fuzzy
+#~ msgid "Decryption failed: %1"
+#~ msgstr "فك التشفيرّ failed 1"
+
+#, fuzzy
+#~ msgid ""
+#~ "The following was received on stderr:\n"
+#~ "%1"
+#~ msgstr "الـ متابعة يعمل n 1"
+
+#, fuzzy
+#~ msgid "Failed to load %1: %2"
+#~ msgstr "فشل إلى التحميل 2"
+
+#, fuzzy
+#~ msgid "Library does not contain the symbol \"Chiasmus\"."
+#~ msgstr "المكتبة ليس تحوي على رمز."
+
+#, fuzzy
+#~ msgid "Scanning directory %1..."
+#~ msgstr "جاري المسح دليل."
+
+#~ msgid "GpgME"
+#~ msgstr "GpgME"
+
+#~ msgid "GPGME was compiled without support for %1."
+#~ msgstr "GPGME was compiled without support for %1."
+
+#~ msgid "Engine %1 is not installed properly."
+#~ msgstr "Engine %1 is not installed properly."
+
+#~ msgid "Engine %1 version %2 installed, but at least version %3 is required."
+#~ msgstr ""
+#~ "Engine %1 version %2 installed, but at least version %3 is required."
+
+#~ msgid "Unknown problem with engine for protocol %1."
+#~ msgstr "Unknown problem with engine for protocol %1."
+
+#, fuzzy
+#~ msgid "program terminated unexpectedly"
+#~ msgstr "برنامج"
+
+#, fuzzy
+#~ msgid "program not found or cannot be started"
+#~ msgstr "برنامج ليس موجود أو"
+
+#, fuzzy
+#~ msgid "<qt>Failed to execute gpgconf:<p>%1</p></qt>"
+#~ msgstr "<qt> فشل إلى نفِّذ<p></p></qt>"
+
+#, fuzzy
+#~ msgid ""
+#~ "Could not start gpgconf.\n"
+#~ "Check that gpgconf is in the PATH and that it can be started."
+#~ msgstr ""
+#~ "Could not start gpgconf\n"
+#~ "Check that gpgconf is in the PATH and that it can be started"
+
+#~ msgid "Error from gpgconf while saving configuration: %1"
+#~ msgstr "Error from gpgconf while saving configuration: %1"
+
+#~ msgid "Generating DSA key..."
+#~ msgstr "Generating DSA key..."
+
+#~ msgid "Generating ElGamal key..."
+#~ msgstr "Generating ElGamal key..."
+
+#~ msgid "Searching for a large prime number..."
+#~ msgstr "Searching for a large prime number..."
+
+#, fuzzy
+#~ msgid ""
+#~ "Waiting for new entropy from random number generator (you might want to "
+#~ "exercise the harddisks or move the mouse)..."
+#~ msgstr "منتظر لـ جديد من عشوائي رقم مولِّد إلى أو انقل الماوس."
+
+#~ msgid "Please wait..."
+#~ msgstr "Please wait..."
+
+#~ msgid ""
+#~ "Starting gpg-agent (you should consider starting a global instance "
+#~ "instead)..."
+#~ msgstr ""
+#~ "Starting gpg-agent (you should consider starting a global instance "
+#~ "instead)..."
+
+#, fuzzy
+#~ msgid "While scanning for %1 support in backend %2:"
+#~ msgstr "بينما لـ دعم بوصة منتهى خلفي:"
+
+#, fuzzy
+#~ msgctxt "progress info: \"%1 of %2\""
+#~ msgid "%1/%2"
+#~ msgstr "%1/%2"
+
+#~ msgid ""
+#~ "OpenPGP key for %1\n"
+#~ "Created: %2\n"
+#~ "Expiry: %3\n"
+#~ "Fingerprint: %4"
+#~ msgstr ""
+#~ "OpenPGP key for %1\n"
+#~ "Created: %2\n"
+#~ "Expiry: %3\n"
+#~ "Fingerprint: %4"
+
+#~ msgid ""
+#~ "S/MIME key for %1\n"
+#~ "Created: %2\n"
+#~ "Expiry: %3\n"
+#~ "Fingerprint: %4\n"
+#~ "Issuer: %5"
+#~ msgstr ""
+#~ "S/MIME key for %1\n"
+#~ "Created: %2\n"
+#~ "Expiry: %3\n"
+#~ "Fingerprint: %4\n"
+#~ "Issuer: %5"
+
+#, fuzzy
+#~ msgid "Add or Change Directory Service"
+#~ msgstr "إضافة أو غيّر دليل الخدمة"
+
+#, fuzzy
+#~ msgid "&Server name:"
+#~ msgstr "الخادم الاسم:"
+
+#, fuzzy
+#~ msgid "389"
+#~ msgstr "389"
+
+#, fuzzy
+#~ msgid "&User name (optional):"
+#~ msgstr "المستخدم الاسم اختياري:"
+
+#, fuzzy
+#~ msgid "Pass&word (optional):"
+#~ msgstr "كلمة المرور اختياري:"
+
+#, fuzzy
+#~ msgid "&OK"
+#~ msgstr "&موافق"
+
+#, fuzzy
+#~ msgid "&Cancel"
+#~ msgstr "إل&غاء"
+
+#, fuzzy
+#~ msgid "&Base DN:"
+#~ msgstr "الأساس DN:"
+
+#, fuzzy
+#~ msgid "&Port:"
+#~ msgstr "ال&منفذ:"
+
+#, fuzzy
+#~ msgctxt "NAME OF TRANSLATORS"
+#~ msgid "Your names"
+#~ msgstr "Mohamed SAAD محمد سعد"
+
+#, fuzzy
+#~ msgctxt "EMAIL OF TRANSLATORS"
+#~ msgid "Your emails"
+#~ msgstr "metehyi@free.fr"
+
+#~ msgid "failed"
+#~ msgstr "failed"
+
+#, fuzzy
+#~ msgctxt ""
+#~ "Items in Kleo::BackendConfigWidget listview (1: protocol; 2: "
+#~ "implementation name)"
+#~ msgid "%1 (%2)"
+#~ msgstr "%1 (%2)"
+
+#~ msgid "Available Backends"
+#~ msgstr "Available Backends"
+
+#~ msgid "Confi&gure..."
+#~ msgstr "Confi&gure..."
+
+#~ msgid "Rescan"
+#~ msgstr "Rescan"
+
+#~ msgid "The following problems where encountered during scanning:"
+#~ msgstr "The following problems where encountered during scanning:"
+
+#, fuzzy
+#~| msgid "Scan Results"
+#~ msgctxt "@title:window Results of the scanning"
+#~ msgid "Scan Results"
+#~ msgstr "Scan Results"
+
+#~ msgid "(Unknown Protocol)"
+#~ msgstr "(Unknown Protocol)"
+
+#~ msgid "Error while initializing plugin \"%1\""
+#~ msgstr "Error while initializing plugin \"%1\""
+
+#~ msgid ""
+#~ "You need a passphrase to unlock the secret key for user:<br/> %1 (retry)"
+#~ msgstr ""
+#~ "You need a passphrase to unlock the secret key for user:<br/> %1 (retry)"
+
+#~ msgid "You need a passphrase to unlock the secret key for user:<br/> %1"
+#~ msgstr "You need a passphrase to unlock the secret key for user:<br/> %1"
+
+#, fuzzy
+#~ msgid ""
+#~ "This dialog will reappear every time the passphrase is needed. For a more "
+#~ "secure solution that also allows caching the passphrase, use gpg-agent."
+#~ msgstr "هذا حوار كل وقت هو لـ a المزيد آمن التّخبئة استخدام."
+
+#, fuzzy
+#~ msgid "gpg-agent was found in %1, but does not appear to be running."
+#~ msgstr "موجود بوصة ليس ظهور إلى جاري التنفيذ."
+
+#~ msgid "gpg-agent is part of gnupg-%1, which you can download from %2"
+#~ msgstr "gpg-agent is part of gnupg-%1, which you can download from %2"
+
+#, fuzzy
+#~ msgid "For information on how to set up gpg-agent, see %1"
+#~ msgstr "لـ معلومات يعمل إلى set أعلى 1"
+
+#, fuzzy
+#~ msgid "Enter passphrase:"
+#~ msgstr "إدخال:"
+
+#~ msgid "Passphrase Dialog"
+#~ msgstr "Passphrase Dialog"
+
+#, fuzzy
+#~ msgid "Configure"
+#~ msgstr "اضبط"
+
+#, fuzzy
+#~ msgid "Select Directory Services to Use Here"
+#~ msgstr "انتقِ دليل الخدمات إلى إستعمل هنا"
+
+#, fuzzy
+#~ msgid ""
+#~ "<qt>\n"
+#~ "<h1>X.500 Directory Services</h1>\n"
+#~ "You can use X.500 directory services to retrieve certificates and "
+#~ "certificate revocation lists that are not saved locally. Ask your local "
+#~ "administrator if you want to make use of this feature and are unsure "
+#~ "which directory service you can use.\n"
+#~ "<p>\n"
+#~ "If you do not use a directory service, you can still use local "
+#~ "certificates.\n"
+#~ "</qt>"
+#~ msgstr ""
+#~ "<qt>\n"
+#~ "<h1> س دليل الخدمات</h1> استخدام س دليل إلى و شهادة سحب :: إبطال قوائم "
+#~ "ليس إسأل محليّ مسيّر IF إلى make استخدام من ميزة و دليل خدمة استخدام\n"
+#~ "<p> ليس استخدام a دليل خدمة استخدام محليّ\n"
+#~ "</qt>"
+
+#, fuzzy
+#~ msgid "Port"
+#~ msgstr "منفذ"
+
+#, fuzzy
+#~ msgid ""
+#~ "<qt>\n"
+#~ "<h1>Add a Directory Service</h1>\n"
+#~ "By clicking this button, you can select a new directory service to be "
+#~ "used for retrieving certificates and CRLs. You will be asked for the "
+#~ "server name and an optional description.\n"
+#~ "</qt>"
+#~ msgstr ""
+#~ "<qt>\n"
+#~ "<h1> إضافة a دليل الخدمة</h1> زر تحديد a جديد دليل خدمة إلى مُستخدَم لـ و "
+#~ "أنت لـ خادم الاسم و اختياري الوصف\n"
+#~ "</qt>"
+
+#, fuzzy
+#~ msgid "&Add Service..."
+#~ msgstr "إضافة الخدمة."
+
+#, fuzzy
+#~ msgid ""
+#~ "<qt>\n"
+#~ "<h1>Remove Directory Service</h1>\n"
+#~ "By clicking this button, you can remove the currently selected directory "
+#~ "service in the list above. You will have a chance to rethink your "
+#~ "decision before the entry is deleted from the list.\n"
+#~ "</qt>"
+#~ msgstr ""
+#~ "<qt>\n"
+#~ "<h1> احذف دليل الخدمة</h1> زر أزِل مُنتقى دليل خدمة بوصة قائمة أعلى أنت a "
+#~ "إلى قبل خانة هو محذوف من قائمة\n"
+#~ "</qt>"
+
+#, fuzzy
+#~ msgid "&Remove Service"
+#~ msgstr "احذف الخدمة"
+
+#, fuzzy
+#~ msgid "<placeholder>unnamed</placeholder>"
+#~ msgstr "<placeholder> غير مسمى</placeholder>"
--- /dev/null
+# Copyright (C) YEAR This_file_is_part_of_KDE
+# This file is distributed under the same license as the PACKAGE package.
+#
+# enolp <enolp@softastur.org>, 2016.
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2017-07-12 06:56+0200\n"
+"PO-Revision-Date: 2016-12-19 02:55+0100\n"
+"Last-Translator: enolp <enolp@softastur.org>\n"
+"Language-Team: Asturian <alministradores@softastur.org>\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"
+
+#: kleo/checksumdefinition.cpp:107
+#, kde-format
+msgid "Error in checksum definition %1: %2"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:157
+#, kde-format
+msgid "Cannot use both %f and | in '%1'"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:167
+#, kde-format
+msgid "Quoting error in '%1' entry"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:170
+#, kde-format
+msgid "'%1' too complex (would need shell)"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:174
+#, kde-format
+msgid "'%1' entry is empty/missing"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:183
+#, kde-format
+msgid "'%1' empty or not found"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:222
+#, kde-format
+msgid "'id' entry is empty/missing"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:225
+#, kde-format
+msgid "'output-file' entry is empty/missing"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:228
+#, kde-format
+msgid "'file-patterns' entry is empty/missing"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:395
+#, kde-format
+msgid "Caught unknown exception in group %1"
+msgstr ""
+
+#: kleo/dn.cpp:507
+#, kde-format
+msgid "Common name"
+msgstr ""
+
+#: kleo/dn.cpp:508
+#, kde-format
+msgid "Surname"
+msgstr ""
+
+#: kleo/dn.cpp:509
+#, kde-format
+msgid "Given name"
+msgstr ""
+
+#: kleo/dn.cpp:510
+#, kde-format
+msgid "Location"
+msgstr "Allugamientu"
+
+#: kleo/dn.cpp:511
+#, kde-format
+msgid "Title"
+msgstr ""
+
+#: kleo/dn.cpp:512
+#, kde-format
+msgid "Organizational unit"
+msgstr ""
+
+#: kleo/dn.cpp:513
+#, kde-format
+msgid "Organization"
+msgstr ""
+
+#: kleo/dn.cpp:514
+#, kde-format
+msgid "Postal code"
+msgstr ""
+
+#: kleo/dn.cpp:515
+#, kde-format
+msgid "Country code"
+msgstr ""
+
+#: kleo/dn.cpp:516
+#, kde-format
+msgid "State or province"
+msgstr ""
+
+#: kleo/dn.cpp:517
+#, kde-format
+msgid "Domain component"
+msgstr ""
+
+#: kleo/dn.cpp:518
+#, kde-format
+msgid "Business category"
+msgstr ""
+
+#: kleo/dn.cpp:519
+#, kde-format
+msgid "Email address"
+msgstr ""
+
+#: kleo/dn.cpp:520
+#, kde-format
+msgid "Mail address"
+msgstr ""
+
+#: kleo/dn.cpp:521
+#, kde-format
+msgid "Mobile phone number"
+msgstr ""
+
+#: kleo/dn.cpp:522
+#, kde-format
+msgid "Telephone number"
+msgstr ""
+
+#: kleo/dn.cpp:523
+#, kde-format
+msgid "Fax number"
+msgstr ""
+
+#: kleo/dn.cpp:524
+#, kde-format
+msgid "Street address"
+msgstr ""
+
+#: kleo/dn.cpp:525
+#, kde-format
+msgid "Unique ID"
+msgstr ""
+
+#: kleo/enum.cpp:57
+#, kde-format
+msgid "Inline OpenPGP (deprecated)"
+msgstr ""
+
+#: kleo/enum.cpp:62
+#, kde-format
+msgid "OpenPGP/MIME"
+msgstr ""
+
+#: kleo/enum.cpp:67 ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "S/MIME"
+msgstr ""
+
+#: kleo/enum.cpp:72
+#, kde-format
+msgid "S/MIME Opaque"
+msgstr ""
+
+#: kleo/enum.cpp:104
+#, kde-format
+msgid "Any"
+msgstr ""
+
+#: kleo/enum.cpp:177
+#, kde-format
+msgid "Never Encrypt"
+msgstr ""
+
+#: kleo/enum.cpp:179
+#, kde-format
+msgid "Always Encrypt"
+msgstr ""
+
+#: kleo/enum.cpp:181
+#, kde-format
+msgid "Always Encrypt If Possible"
+msgstr ""
+
+#: kleo/enum.cpp:183 kleo/enum.cpp:240
+#, kde-format
+msgid "Ask"
+msgstr ""
+
+#: kleo/enum.cpp:185 kleo/enum.cpp:242
+#, kde-format
+msgid "Ask Whenever Possible"
+msgstr ""
+
+#: kleo/enum.cpp:187
+#, kde-kuit-format
+msgctxt "no specific preference"
+msgid "<placeholder>none</placeholder>"
+msgstr ""
+
+#: kleo/enum.cpp:234
+#, kde-format
+msgid "Never Sign"
+msgstr ""
+
+#: kleo/enum.cpp:236
+#, kde-format
+msgid "Always Sign"
+msgstr ""
+
+#: kleo/enum.cpp:238
+#, kde-format
+msgid "Always Sign If Possible"
+msgstr ""
+
+#: kleo/enum.cpp:244
+#, kde-format
+msgctxt "no specific preference"
+msgid "<none>"
+msgstr ""
+
+#: kleo/keyfiltermanager.cpp:85
+#, kde-format
+msgid "All Certificates"
+msgstr ""
+
+#: kleo/keyfiltermanager.cpp:100
+#, kde-format
+msgid "My Certificates"
+msgstr ""
+
+#: kleo/keyfiltermanager.cpp:118
+#, kde-format
+msgid "Trusted Certificates"
+msgstr ""
+
+#: kleo/keyfiltermanager.cpp:135
+#, kde-format
+msgid "Fully Trusted Certificates"
+msgstr ""
+
+#: kleo/keyfiltermanager.cpp:152
+#, kde-format
+msgid "Other Certificates"
+msgstr ""
+
+#: kleo/keyfiltermanager.cpp:166
+#, kde-format
+msgid "VS-compliant Certificates"
+msgstr ""
+
+#: kleo/keyfiltermanager.cpp:184
+#, kde-format
+msgid "Not validated Certificates"
+msgstr ""
+
+#: ui/auditlogviewer.cpp:49
+#, kde-format
+msgid "View GnuPG Audit Log"
+msgstr ""
+
+#: ui/auditlogviewer.cpp:53
+#, kde-format
+msgid "&Copy to Clipboard"
+msgstr ""
+
+#: ui/auditlogviewer.cpp:59
+#, kde-format
+msgid "&Save to Disk..."
+msgstr ""
+
+#: ui/auditlogviewer.cpp:95
+#, kde-format
+msgid "Choose File to Save GnuPG Audit Log to"
+msgstr ""
+
+#: ui/auditlogviewer.cpp:118
+#, kde-format
+msgid "Could not save to file \"%1\": %2"
+msgstr ""
+
+#: ui/auditlogviewer.cpp:120
+#, kde-format
+msgid "File Save Error"
+msgstr ""
+
+#: ui/cryptoconfigdialog.cpp:44
+#, kde-format
+msgid "Configure GnuPG Backend"
+msgstr ""
+
+#: ui/cryptoconfigdialog.cpp:55
+#, kde-format
+msgid "&Reset"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:160
+#, kde-format
+msgid "GpgConf Error"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:216
+#, kde-format
+msgid ""
+"The gpgconf tool used to provide the information for this dialog does not "
+"seem to be installed properly. It did not return any components. Try running "
+"\"%1\" on the command line for more information."
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:496
+#, kde-format
+msgctxt ""
+"Translate this to 'yes' or 'no' (use the English words!) depending on "
+"whether your language uses Sentence style capitalisation in GUI labels (yes) "
+"or not (no). Context: We get some backend strings in that have the wrong "
+"capitalizaion (in English, at least) so we need to force the first character "
+"to upper-case. It is this behaviour you can control for your language with "
+"this translation."
+msgid "yes"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:546
+#, kde-format
+msgid "0 - None"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:547
+#, kde-format
+msgid "1 - Basic"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:548
+#, kde-format
+msgid "2 - Verbose"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:549
+#, kde-format
+msgid "3 - More Verbose"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:550
+#, kde-format
+msgid "4 - All"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:559
+#, kde-format
+msgid "Set the debugging level to"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:787
+#, kde-format
+msgid "Show..."
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:787 ui/cryptoconfigmodule.cpp:876
+#, kde-format
+msgid "Edit..."
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:841
+#, kde-format
+msgid "Configure LDAP Servers"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:862
+#, kde-format
+msgid "None configured"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:864
+#, kde-format
+msgid "1 server configured"
+msgid_plural "%1 servers configured"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ui/cryptoconfigmodule.cpp:879
+#, kde-format
+msgid "Use keyserver at"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:968
+#, kde-format
+msgid "Configure Keyservers"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:67
+#, kde-format
+msgctxt "default server name, keep it a valid domain name, ie. no spaces"
+msgid "server"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:95
+#, kde-format
+msgid "hkp"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:96
+#, kde-format
+msgid "http"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:97
+#, kde-format
+msgid "https"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:98
+#, kde-format
+msgid "ftp"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:99
+#, kde-format
+msgid "ftps"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:100
+#, kde-format
+msgid "ldap"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:101
+#, kde-format
+msgid "ldaps"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:588
+#, kde-format
+msgid "Server Name"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:589
+#, kde-format
+msgid "Server Port"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:590
+#, kde-format
+msgid "Base DN"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:591
+#, kde-format
+msgid "User Name"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:592
+#, kde-format
+msgid "Password"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:614
+#, kde-format
+msgid "(read-only)"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:616
+#, kde-format
+msgctxt "amended tooltip; %1: original tooltip"
+msgid "%1 (read-only)"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:739
+#, kde-format
+msgid ""
+"Enter the name or IP address of the server hosting the directory service."
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:741
+#, kde-format
+msgid ""
+"<b>(Optional, the default is fine in most cases)</b> Pick the port number "
+"the directory service is listening on."
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:744
+#, kde-format
+msgid ""
+"<b>(Only for LDAP)</b> Enter the base DN for this LDAP server to limit "
+"searches to only that subtree of the directory."
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:747
+#, kde-format
+msgid "<b>(Optional)</b> Enter your user name here, if needed."
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:749
+#, kde-format
+msgid ""
+"<b>(Optional, not recommended)</b> Enter your password here, if needed. Note "
+"that the password will be saved in the clear in a config file in your home "
+"directory."
+msgstr ""
+
+#. i18n: ectx: property (windowTitle), widget (QWidget, DirectoryServicesWidget)
+#: ui/directoryserviceswidget.ui:14
+#, kde-format
+msgid "Directory Services Configuration"
+msgstr ""
+
+#. i18n: ectx: property (text), widget (QLabel, pgpKSLabel)
+#: ui/directoryserviceswidget.ui:22
+#, kde-format
+msgid "OpenPGP Keyserver:"
+msgstr ""
+
+#. i18n: ectx: property (title), widget (QGroupBox, x500LA)
+#: ui/directoryserviceswidget.ui:35
+#, kde-format
+msgid "X509 Directory services:"
+msgstr ""
+
+#. i18n: ectx: property (whatsThis), widget (QTreeView, treeView)
+#: ui/directoryserviceswidget.ui:43
+#, kde-format
+msgid ""
+"This is a list of all directory services that are configured for use with "
+"X.509."
+msgstr ""
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:70
+#, kde-format
+msgid "Click to add a service"
+msgstr ""
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:73
+#, kde-format
+msgid ""
+"Click this button to create a new directory service entry as a clone of the "
+"currently selected one (or with default values, if no other is selected). "
+"You can then configure details in the table on the left hand."
+msgstr ""
+
+#. i18n: ectx: property (text), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:76
+#, kde-format
+msgid "New"
+msgstr ""
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:92
+#, kde-format
+msgid "Click to remove the currently selected service"
+msgstr ""
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:95
+#, kde-format
+msgid ""
+"Click this button to remove the currently selected directory service. The "
+"change will only take effect once you acknowledge the main configuration "
+"dialog."
+msgstr ""
+
+#. i18n: ectx: property (text), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:98
+#, kde-format
+msgid "Delete"
+msgstr ""
+
+#. i18n: ectx: property (whatsThis), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:128
+#, kde-format
+msgid ""
+"Use this option to switch display of username and password information on or "
+"off in the above table."
+msgstr ""
+
+#. i18n: ectx: property (text), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:131
+#, kde-format
+msgid "Show user and password information"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:73
+#, kde-format
+msgid "Description"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:91
+#, kde-format
+msgid "Available attributes:"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:92
+#, kde-format
+msgid "Current attribute order:"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:112
+#, kde-format
+msgid "All others"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:129
+#, kde-format
+msgid "Move to top"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:130
+#, kde-format
+msgid "Move one up"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:131
+#, kde-format
+msgid "Remove from current attribute order"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:132
+#, kde-format
+msgid "Add to current attribute order"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:133
+#, kde-format
+msgid "Move one down"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:134
+#, kde-format
+msgid "Move to bottom"
+msgstr ""
+
+#: ui/keyapprovaldialog.cpp:87
+#, kde-kuit-format
+msgid "<placeholder>none</placeholder>"
+msgstr ""
+
+#: ui/keyapprovaldialog.cpp:88
+#, kde-format
+msgid "Never Encrypt with This Key"
+msgstr ""
+
+#: ui/keyapprovaldialog.cpp:89
+#, kde-format
+msgid "Always Encrypt with This Key"
+msgstr ""
+
+#: ui/keyapprovaldialog.cpp:90
+#, kde-format
+msgid "Encrypt Whenever Encryption is Possible"
+msgstr ""
+
+#: ui/keyapprovaldialog.cpp:91
+#, kde-format
+msgid "Always Ask"
+msgstr ""
+
+#: ui/keyapprovaldialog.cpp:92
+#, kde-format
+msgid "Ask Whenever Encryption is Possible"
+msgstr ""
+
+#: ui/keyapprovaldialog.cpp:113
+#, kde-format
+msgid "Encryption Key Approval"
+msgstr ""
+
+#: ui/keyapprovaldialog.cpp:129
+#, kde-format
+msgid "The following keys will be used for encryption:"
+msgstr ""
+
+#: ui/keyapprovaldialog.cpp:145
+#, kde-format
+msgid "Your keys:"
+msgstr ""
+
+#: ui/keyapprovaldialog.cpp:157
+#, kde-format
+msgid "Recipient:"
+msgstr ""
+
+#: ui/keyapprovaldialog.cpp:162
+#, kde-format
+msgid "Encryption keys:"
+msgstr ""
+
+#: ui/keyapprovaldialog.cpp:169
+#, kde-format
+msgid "Encryption preference:"
+msgstr ""
+
+#: ui/keyrequester.cpp:118
+#, kde-format
+msgid "Clear"
+msgstr ""
+
+#: ui/keyrequester.cpp:121
+#, kde-format
+msgid "Change..."
+msgstr ""
+
+#: ui/keyrequester.cpp:232 ui/keyselectiondialog.cpp:256
+#, kde-kuit-format
+msgid "<placeholder>unknown</placeholder>"
+msgstr ""
+
+#: ui/keyrequester.cpp:246 ui/keyselectiondialog.cpp:657
+#, kde-format
+msgid ""
+"<qt><p>An error occurred while fetching the keys from the backend:</p><p><b>"
+"%1</b></p></qt>"
+msgstr ""
+
+#: ui/keyrequester.cpp:251 ui/keyrequester.cpp:283 ui/keyrequester.cpp:306
+#: ui/keyselectiondialog.cpp:630 ui/keyselectiondialog.cpp:662
+#, kde-format
+msgid "Key Listing Failed"
+msgstr ""
+
+#: ui/keyrequester.cpp:281
+#, kde-format
+msgid ""
+"The OpenPGP backend does not support listing keys. Check your installation."
+msgstr ""
+
+#: ui/keyrequester.cpp:304
+#, kde-format
+msgid ""
+"The S/MIME backend does not support listing keys. Check your installation."
+msgstr ""
+
+#: ui/keyrequester.cpp:426
+#, kde-format
+msgid "OpenPGP Key Selection"
+msgstr ""
+
+#: ui/keyrequester.cpp:427
+#, kde-format
+msgid "Please select an OpenPGP key to use."
+msgstr ""
+
+#: ui/keyrequester.cpp:429
+#, kde-format
+msgid "S/MIME Key Selection"
+msgstr ""
+
+#: ui/keyrequester.cpp:430
+#, kde-format
+msgid "Please select an S/MIME key to use."
+msgstr ""
+
+#: ui/keyrequester.cpp:432
+#, kde-format
+msgid "Key Selection"
+msgstr ""
+
+#: ui/keyrequester.cpp:433
+#, kde-format
+msgid "Please select an (OpenPGP or S/MIME) key to use."
+msgstr ""
+
+#: ui/keyselectioncombo.cpp:195
+#, kde-format
+msgctxt "Name <email> (validity, type, created: date)"
+msgid "%1 (%2, %3, created: %4)"
+msgstr ""
+
+#: ui/keyselectioncombo.cpp:196
+#, kde-format
+msgctxt "Name <email>"
+msgid "%1 <%2>"
+msgstr ""
+
+#: ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "OpenPGP"
+msgstr ""
+
+#: ui/keyselectioncombo.cpp:347
+#, kde-format
+msgid "Loading keys ..."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:98
+#, kde-format
+msgid "The key is not valid."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:106
+#, kde-format
+msgid "The key is expired."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:110
+#, kde-format
+msgid "The key is revoked."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:114
+#, kde-format
+msgid "The key is disabled."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:122
+#, kde-format
+msgid "The key is not designated for encryption."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:128
+#, kde-format
+msgid "The key is not designated for signing."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:134
+#, kde-format
+msgid "The key is not designated for certifying."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:140
+#, kde-format
+msgid "The key is not designated for authentication."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:148
+#, kde-format
+msgid "The key is not secret."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:163
+#, kde-format
+msgid "The key is not trusted enough."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:169
+#, kde-format
+msgid "The key can be used."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:230
+#, kde-format
+msgid "Key ID"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:231
+#, kde-format
+msgid "User ID"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:279
+#, kde-format
+msgid "never"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:289 ui/keyselectiondialog.cpp:291
+#: ui/keyselectiondialog.cpp:300 ui/keyselectiondialog.cpp:302
+#, kde-format
+msgid "unknown"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:289
+#, kde-format
+msgid "OpenPGP key for <b>%1</b>"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:291
+#, kde-format
+msgid "S/MIME key for <b>%1</b>"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:298
+#, kde-format
+msgctxt "Key creation date"
+msgid "Created"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:299
+#, kde-format
+msgctxt "Key Expiration date"
+msgid "Expiry"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:300
+#, kde-format
+msgctxt "Key fingerprint"
+msgid "Fingerprint"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:302
+#, kde-format
+msgctxt "Key issuer"
+msgid "Issuer"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:304
+#, kde-format
+msgctxt "Key status"
+msgid "Status"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:456
+#, kde-format
+msgid "Search for &External Certificates"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:470
+#, kde-format
+msgid "&Search for:"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:494
+#, kde-format
+msgid "&Remember choice"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:497
+#, kde-format
+msgid ""
+"<qt><p>If you check this box your choice will be stored and you will not be "
+"asked again.</p></qt>"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:509
+#, kde-format
+msgid "&Reread Keys"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:510
+#, kde-format
+msgid "&Start Certificate Manager"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:628
+#, kde-format
+msgid "No backends found for listing keys. Check your installation."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:644
+#, kde-format
+msgid "Could not start certificate manager; please check your installation."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:646
+#, kde-format
+msgid "Certificate Manager Error"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Checking selected keys..."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Fetching keys..."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:731
+#, kde-format
+msgid ""
+"<qt>One backend returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgid_plural ""
+"<qt>%1 backends returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ui/keyselectiondialog.cpp:736
+#, kde-format
+msgid "Key List Result"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:856
+#, kde-format
+msgid "Recheck Key"
+msgstr ""
+
+#: ui/messagebox.cpp:71
+#, kde-format
+msgid "Your system does not have support for GnuPG Audit Logs"
+msgstr ""
+
+#: ui/messagebox.cpp:72
+#, kde-format
+msgid "System Error"
+msgstr ""
+
+#: ui/messagebox.cpp:79
+#, kde-format
+msgid ""
+"An error occurred while trying to retrieve the GnuPG Audit Log:\n"
+"%1"
+msgstr ""
+
+#: ui/messagebox.cpp:81
+#, kde-format
+msgid "GnuPG Audit Log Error"
+msgstr ""
+
+#: ui/messagebox.cpp:88
+#, kde-format
+msgid "No GnuPG Audit Log available for this operation."
+msgstr ""
+
+#: ui/messagebox.cpp:89
+#, kde-format
+msgid "No GnuPG Audit Log"
+msgstr ""
+
+#: ui/messagebox.cpp:109 ui/messagebox.cpp:115
+#, kde-format
+msgid "GnuPG Audit Log Viewer"
+msgstr ""
+
+#: ui/messagebox.cpp:121
+#, kde-format
+msgid "Signing failed: %1"
+msgstr ""
+
+#: ui/messagebox.cpp:122
+#, kde-format
+msgid "Signing successful"
+msgstr ""
+
+#: ui/messagebox.cpp:133
+#, kde-format
+msgid "Encryption failed: %1"
+msgstr ""
+
+#: ui/messagebox.cpp:134
+#, kde-format
+msgid "Encryption successful"
+msgstr ""
+
+#: ui/messagebox.cpp:155
+#, kde-format
+msgid "Signing Result"
+msgstr ""
+
+#: ui/messagebox.cpp:167
+#, kde-format
+msgid "Signing Error"
+msgstr ""
+
+#: ui/messagebox.cpp:179 ui/messagebox.cpp:203
+#, kde-format
+msgid "Encryption Result"
+msgstr ""
+
+#: ui/messagebox.cpp:191 ui/messagebox.cpp:215
+#, kde-format
+msgid "Encryption Error"
+msgstr ""
+
+#: ui/messagebox.cpp:263
+#, kde-format
+msgid "&Show Audit Log"
+msgstr ""
+
+#: ui/progressdialog.cpp:91
+#, kde-format
+msgid "%1: %2"
+msgstr ""
--- /dev/null
+# Copyright (C) YEAR This_file_is_part_of_KDE
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Zlatko Popov <zlatkopopov@fsa-bg.org>, 2006, 2007, 2009.
+msgid ""
+msgstr ""
+"Project-Id-Version: libkleopatra\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2017-07-12 06:56+0200\n"
+"PO-Revision-Date: 2009-02-17 17:15+0000\n"
+"Last-Translator: Zlatko Popov <zlatkopopov@fsa-bg.org>\n"
+"Language-Team: Bulgarian <dict@fsa-bg.org>\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"
+
+#: kleo/checksumdefinition.cpp:107
+#, kde-format
+msgid "Error in checksum definition %1: %2"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:157
+#, kde-format
+msgid "Cannot use both %f and | in '%1'"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:167
+#, kde-format
+msgid "Quoting error in '%1' entry"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:170
+#, kde-format
+msgid "'%1' too complex (would need shell)"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:174
+#, kde-format
+msgid "'%1' entry is empty/missing"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:183
+#, kde-format
+msgid "'%1' empty or not found"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:222
+#, kde-format
+msgid "'id' entry is empty/missing"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:225
+#, kde-format
+msgid "'output-file' entry is empty/missing"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:228
+#, kde-format
+msgid "'file-patterns' entry is empty/missing"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:395
+#, kde-format
+msgid "Caught unknown exception in group %1"
+msgstr ""
+
+#: kleo/dn.cpp:507
+#, kde-format
+msgid "Common name"
+msgstr "Лично име"
+
+#: kleo/dn.cpp:508
+#, kde-format
+msgid "Surname"
+msgstr "Фамилно име"
+
+#: kleo/dn.cpp:509
+#, kde-format
+msgid "Given name"
+msgstr "Бащино име"
+
+#: kleo/dn.cpp:510
+#, kde-format
+msgid "Location"
+msgstr "Местоположение"
+
+#: kleo/dn.cpp:511
+#, kde-format
+msgid "Title"
+msgstr "Звание"
+
+#: kleo/dn.cpp:512
+#, kde-format
+msgid "Organizational unit"
+msgstr "Департамент"
+
+#: kleo/dn.cpp:513
+#, kde-format
+msgid "Organization"
+msgstr "Организация"
+
+#: kleo/dn.cpp:514
+#, kde-format
+msgid "Postal code"
+msgstr "Пощенски код"
+
+#: kleo/dn.cpp:515
+#, kde-format
+msgid "Country code"
+msgstr "Код на държава"
+
+#: kleo/dn.cpp:516
+#, kde-format
+msgid "State or province"
+msgstr "Област"
+
+#: kleo/dn.cpp:517
+#, kde-format
+msgid "Domain component"
+msgstr "Сфера"
+
+#: kleo/dn.cpp:518
+#, kde-format
+msgid "Business category"
+msgstr "Бизнес категория"
+
+#: kleo/dn.cpp:519
+#, kde-format
+msgid "Email address"
+msgstr "Адрес за е-поща"
+
+#: kleo/dn.cpp:520
+#, kde-format
+msgid "Mail address"
+msgstr "Пощенски адрес"
+
+#: kleo/dn.cpp:521
+#, kde-format
+msgid "Mobile phone number"
+msgstr "Мобилен телефон"
+
+#: kleo/dn.cpp:522
+#, kde-format
+msgid "Telephone number"
+msgstr "Телефон"
+
+#: kleo/dn.cpp:523
+#, kde-format
+msgid "Fax number"
+msgstr "Факс"
+
+#: kleo/dn.cpp:524
+#, kde-format
+msgid "Street address"
+msgstr "Улица"
+
+#: kleo/dn.cpp:525
+#, kde-format
+msgid "Unique ID"
+msgstr "Уникален номер"
+
+#: kleo/enum.cpp:57
+#, kde-format
+msgid "Inline OpenPGP (deprecated)"
+msgstr "Inline OpenPGP (deprecated)"
+
+#: kleo/enum.cpp:62
+#, kde-format
+msgid "OpenPGP/MIME"
+msgstr "OpenPGP/MIME"
+
+#: kleo/enum.cpp:67 ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "S/MIME"
+msgstr "S/MIME"
+
+#: kleo/enum.cpp:72
+#, kde-format
+msgid "S/MIME Opaque"
+msgstr "S/MIME Opaque"
+
+#: kleo/enum.cpp:104
+#, kde-format
+msgid "Any"
+msgstr "Случайно"
+
+#: kleo/enum.cpp:177
+#, kde-format
+msgid "Never Encrypt"
+msgstr "Никога"
+
+#: kleo/enum.cpp:179
+#, kde-format
+msgid "Always Encrypt"
+msgstr "Винаги"
+
+#: kleo/enum.cpp:181
+#, kde-format
+msgid "Always Encrypt If Possible"
+msgstr "Винаги когато е възможно"
+
+#: kleo/enum.cpp:183 kleo/enum.cpp:240
+#, kde-format
+msgid "Ask"
+msgstr "Потвърждение"
+
+#: kleo/enum.cpp:185 kleo/enum.cpp:242
+#, kde-format
+msgid "Ask Whenever Possible"
+msgstr "Потвърждение когато е възможно"
+
+#: kleo/enum.cpp:187
+#, kde-kuit-format
+msgctxt "no specific preference"
+msgid "<placeholder>none</placeholder>"
+msgstr ""
+
+#: kleo/enum.cpp:234
+#, kde-format
+msgid "Never Sign"
+msgstr "Никога"
+
+#: kleo/enum.cpp:236
+#, kde-format
+msgid "Always Sign"
+msgstr "Винаги"
+
+#: kleo/enum.cpp:238
+#, kde-format
+msgid "Always Sign If Possible"
+msgstr "Винаги когато е възможно"
+
+#: kleo/enum.cpp:244
+#, fuzzy, kde-format
+#| msgid "<none>"
+msgctxt "no specific preference"
+msgid "<none>"
+msgstr "<без>"
+
+#: kleo/keyfiltermanager.cpp:85
+#, kde-format
+msgid "All Certificates"
+msgstr ""
+
+#: kleo/keyfiltermanager.cpp:100
+#, kde-format
+msgid "My Certificates"
+msgstr ""
+
+#: kleo/keyfiltermanager.cpp:118
+#, kde-format
+msgid "Trusted Certificates"
+msgstr ""
+
+#: kleo/keyfiltermanager.cpp:135
+#, kde-format
+msgid "Fully Trusted Certificates"
+msgstr ""
+
+#: kleo/keyfiltermanager.cpp:152
+#, kde-format
+msgid "Other Certificates"
+msgstr ""
+
+#: kleo/keyfiltermanager.cpp:166
+#, kde-format
+msgid "VS-compliant Certificates"
+msgstr ""
+
+#: kleo/keyfiltermanager.cpp:184
+#, kde-format
+msgid "Not validated Certificates"
+msgstr ""
+
+#: ui/auditlogviewer.cpp:49
+#, kde-format
+msgid "View GnuPG Audit Log"
+msgstr ""
+
+#: ui/auditlogviewer.cpp:53
+#, kde-format
+msgid "&Copy to Clipboard"
+msgstr ""
+
+#: ui/auditlogviewer.cpp:59
+#, kde-format
+msgid "&Save to Disk..."
+msgstr ""
+
+#: ui/auditlogviewer.cpp:95
+#, kde-format
+msgid "Choose File to Save GnuPG Audit Log to"
+msgstr ""
+
+#: ui/auditlogviewer.cpp:118
+#, kde-format
+msgid "Could not save to file \"%1\": %2"
+msgstr ""
+
+#: ui/auditlogviewer.cpp:120
+#, kde-format
+msgid "File Save Error"
+msgstr ""
+
+#: ui/cryptoconfigdialog.cpp:44
+#, kde-format
+msgid "Configure GnuPG Backend"
+msgstr ""
+
+#: ui/cryptoconfigdialog.cpp:55
+#, kde-format
+msgid "&Reset"
+msgstr "Ану&лиране"
+
+#: ui/cryptoconfigmodule.cpp:160
+#, fuzzy, kde-format
+#| msgid "Encryption keys:"
+msgid "GpgConf Error"
+msgstr "Ключове:"
+
+#: ui/cryptoconfigmodule.cpp:216
+#, kde-format
+msgid ""
+"The gpgconf tool used to provide the information for this dialog does not "
+"seem to be installed properly. It did not return any components. Try running "
+"\"%1\" on the command line for more information."
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:496
+#, kde-format
+msgctxt ""
+"Translate this to 'yes' or 'no' (use the English words!) depending on "
+"whether your language uses Sentence style capitalisation in GUI labels (yes) "
+"or not (no). Context: We get some backend strings in that have the wrong "
+"capitalizaion (in English, at least) so we need to force the first character "
+"to upper-case. It is this behaviour you can control for your language with "
+"this translation."
+msgid "yes"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:546
+#, kde-format
+msgid "0 - None"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:547
+#, kde-format
+msgid "1 - Basic"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:548
+#, kde-format
+msgid "2 - Verbose"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:549
+#, kde-format
+msgid "3 - More Verbose"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:550
+#, kde-format
+msgid "4 - All"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:559
+#, kde-format
+msgid "Set the debugging level to"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:787
+#, kde-format
+msgid "Show..."
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:787 ui/cryptoconfigmodule.cpp:876
+#, kde-format
+msgid "Edit..."
+msgstr "Редактиране..."
+
+#: ui/cryptoconfigmodule.cpp:841
+#, kde-format
+msgid "Configure LDAP Servers"
+msgstr "Настройване на сървъри LDAP"
+
+#: ui/cryptoconfigmodule.cpp:862
+#, fuzzy, kde-format
+#| msgid "No server configured yet"
+msgid "None configured"
+msgstr "Няма настроени сървъри"
+
+#: ui/cryptoconfigmodule.cpp:864
+#, fuzzy, kde-format
+#| msgid "No server configured yet"
+msgid "1 server configured"
+msgid_plural "%1 servers configured"
+msgstr[0] "Няма настроени сървъри"
+msgstr[1] "Няма настроени сървъри"
+
+#: ui/cryptoconfigmodule.cpp:879
+#, kde-format
+msgid "Use keyserver at"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:968
+#, fuzzy, kde-format
+#| msgid "Configure LDAP Servers"
+msgid "Configure Keyservers"
+msgstr "Настройване на сървъри LDAP"
+
+#: ui/directoryserviceswidget.cpp:67
+#, fuzzy, kde-format
+#| msgid "never"
+msgctxt "default server name, keep it a valid domain name, ie. no spaces"
+msgid "server"
+msgstr "никога"
+
+#: ui/directoryserviceswidget.cpp:95
+#, kde-format
+msgid "hkp"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:96
+#, kde-format
+msgid "http"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:97
+#, kde-format
+msgid "https"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:98
+#, kde-format
+msgid "ftp"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:99
+#, kde-format
+msgid "ftps"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:100
+#, kde-format
+msgid "ldap"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:101
+#, kde-format
+msgid "ldaps"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:588
+#, kde-format
+msgid "Server Name"
+msgstr "Сървър"
+
+#: ui/directoryserviceswidget.cpp:589
+#, fuzzy, kde-format
+#| msgid "Server Name"
+msgid "Server Port"
+msgstr "Сървър"
+
+#: ui/directoryserviceswidget.cpp:590
+#, kde-format
+msgid "Base DN"
+msgstr "Базов индекс"
+
+#: ui/directoryserviceswidget.cpp:591
+#, kde-format
+msgid "User Name"
+msgstr "Потребител"
+
+#: ui/directoryserviceswidget.cpp:592
+#, kde-format
+msgid "Password"
+msgstr "Парола"
+
+#: ui/directoryserviceswidget.cpp:614
+#, kde-format
+msgid "(read-only)"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:616
+#, kde-format
+msgctxt "amended tooltip; %1: original tooltip"
+msgid "%1 (read-only)"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:739
+#, kde-format
+msgid ""
+"Enter the name or IP address of the server hosting the directory service."
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:741
+#, kde-format
+msgid ""
+"<b>(Optional, the default is fine in most cases)</b> Pick the port number "
+"the directory service is listening on."
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:744
+#, kde-format
+msgid ""
+"<b>(Only for LDAP)</b> Enter the base DN for this LDAP server to limit "
+"searches to only that subtree of the directory."
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:747
+#, kde-format
+msgid "<b>(Optional)</b> Enter your user name here, if needed."
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:749
+#, kde-format
+msgid ""
+"<b>(Optional, not recommended)</b> Enter your password here, if needed. Note "
+"that the password will be saved in the clear in a config file in your home "
+"directory."
+msgstr ""
+
+#. i18n: ectx: property (windowTitle), widget (QWidget, DirectoryServicesWidget)
+#: ui/directoryserviceswidget.ui:14
+#, kde-format
+msgid "Directory Services Configuration"
+msgstr "Настройки на директорийна услуга"
+
+#. i18n: ectx: property (text), widget (QLabel, pgpKSLabel)
+#: ui/directoryserviceswidget.ui:22
+#, fuzzy, kde-format
+#| msgid "OpenPGP Key Selection"
+msgid "OpenPGP Keyserver:"
+msgstr "Избор на ключ OpenPGP"
+
+#. i18n: ectx: property (title), widget (QGroupBox, x500LA)
+#: ui/directoryserviceswidget.ui:35
+#, fuzzy, kde-format
+#| msgid "X.&500 directory services:"
+msgid "X509 Directory services:"
+msgstr "&Директорийна услуга X.500:"
+
+#. i18n: ectx: property (whatsThis), widget (QTreeView, treeView)
+#: ui/directoryserviceswidget.ui:43
+#, kde-format
+msgid ""
+"This is a list of all directory services that are configured for use with "
+"X.509."
+msgstr ""
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:70
+#, kde-format
+msgid "Click to add a service"
+msgstr "Добавяне на услуга"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:73
+#, kde-format
+msgid ""
+"Click this button to create a new directory service entry as a clone of the "
+"currently selected one (or with default values, if no other is selected). "
+"You can then configure details in the table on the left hand."
+msgstr ""
+
+#. i18n: ectx: property (text), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:76
+#, kde-format
+msgid "New"
+msgstr ""
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:92
+#, kde-format
+msgid "Click to remove the currently selected service"
+msgstr "Изтриване на избраната услуга"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:95
+#, kde-format
+msgid ""
+"Click this button to remove the currently selected directory service. The "
+"change will only take effect once you acknowledge the main configuration "
+"dialog."
+msgstr ""
+
+#. i18n: ectx: property (text), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:98
+#, kde-format
+msgid "Delete"
+msgstr ""
+
+#. i18n: ectx: property (whatsThis), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:128
+#, kde-format
+msgid ""
+"Use this option to switch display of username and password information on or "
+"off in the above table."
+msgstr ""
+
+#. i18n: ectx: property (text), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:131
+#, kde-format
+msgid "Show user and password information"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:73
+#, kde-format
+msgid "Description"
+msgstr "Описание"
+
+#: ui/dnattributeorderconfigwidget.cpp:91
+#, kde-format
+msgid "Available attributes:"
+msgstr "Налични атрибути:"
+
+#: ui/dnattributeorderconfigwidget.cpp:92
+#, kde-format
+msgid "Current attribute order:"
+msgstr "Подредба на атрибутите:"
+
+#: ui/dnattributeorderconfigwidget.cpp:112
+#, kde-format
+msgid "All others"
+msgstr "Всички останали"
+
+#: ui/dnattributeorderconfigwidget.cpp:129
+#, kde-format
+msgid "Move to top"
+msgstr "Преместване в началото"
+
+#: ui/dnattributeorderconfigwidget.cpp:130
+#, kde-format
+msgid "Move one up"
+msgstr "Преместване нагоре"
+
+#: ui/dnattributeorderconfigwidget.cpp:131
+#, kde-format
+msgid "Remove from current attribute order"
+msgstr "Премахване от текущата подредба на атрибутите"
+
+#: ui/dnattributeorderconfigwidget.cpp:132
+#, kde-format
+msgid "Add to current attribute order"
+msgstr "Добавяне към текущата подредба на атрибутите"
+
+#: ui/dnattributeorderconfigwidget.cpp:133
+#, kde-format
+msgid "Move one down"
+msgstr "Преместване надолу"
+
+#: ui/dnattributeorderconfigwidget.cpp:134
+#, kde-format
+msgid "Move to bottom"
+msgstr "Преместване в края"
+
+#: ui/keyapprovaldialog.cpp:87
+#, kde-kuit-format
+msgid "<placeholder>none</placeholder>"
+msgstr ""
+
+#: ui/keyapprovaldialog.cpp:88
+#, kde-format
+msgid "Never Encrypt with This Key"
+msgstr "Никога"
+
+#: ui/keyapprovaldialog.cpp:89
+#, kde-format
+msgid "Always Encrypt with This Key"
+msgstr "Винаги"
+
+#: ui/keyapprovaldialog.cpp:90
+#, kde-format
+msgid "Encrypt Whenever Encryption is Possible"
+msgstr "Винаги когато е възможно"
+
+#: ui/keyapprovaldialog.cpp:91
+#, kde-format
+msgid "Always Ask"
+msgstr "Потвърждение"
+
+#: ui/keyapprovaldialog.cpp:92
+#, kde-format
+msgid "Ask Whenever Encryption is Possible"
+msgstr "Потвърждение когато е възможно"
+
+#: ui/keyapprovaldialog.cpp:113
+#, kde-format
+msgid "Encryption Key Approval"
+msgstr "Потвърждение на ключовете"
+
+#: ui/keyapprovaldialog.cpp:129
+#, kde-format
+msgid "The following keys will be used for encryption:"
+msgstr "Следните ключове ще бъдат използвани за шифроване:"
+
+#: ui/keyapprovaldialog.cpp:145
+#, kde-format
+msgid "Your keys:"
+msgstr "Ключове:"
+
+#: ui/keyapprovaldialog.cpp:157
+#, kde-format
+msgid "Recipient:"
+msgstr "Получател:"
+
+#: ui/keyapprovaldialog.cpp:162
+#, kde-format
+msgid "Encryption keys:"
+msgstr "Ключове:"
+
+#: ui/keyapprovaldialog.cpp:169
+#, kde-format
+msgid "Encryption preference:"
+msgstr "Настройки:"
+
+#: ui/keyrequester.cpp:118
+#, kde-format
+msgid "Clear"
+msgstr ""
+
+#: ui/keyrequester.cpp:121
+#, kde-format
+msgid "Change..."
+msgstr "Редактиране..."
+
+#: ui/keyrequester.cpp:232 ui/keyselectiondialog.cpp:256
+#, kde-kuit-format
+msgid "<placeholder>unknown</placeholder>"
+msgstr ""
+
+#: ui/keyrequester.cpp:246 ui/keyselectiondialog.cpp:657
+#, kde-format
+msgid ""
+"<qt><p>An error occurred while fetching the keys from the backend:</p><p><b>"
+"%1</b></p></qt>"
+msgstr ""
+"<qt><p>Грешка при заявка на ключовете от шифроващата програма:</p><p><b>%1</"
+"b></p></qt>"
+
+#: ui/keyrequester.cpp:251 ui/keyrequester.cpp:283 ui/keyrequester.cpp:306
+#: ui/keyselectiondialog.cpp:630 ui/keyselectiondialog.cpp:662
+#, kde-format
+msgid "Key Listing Failed"
+msgstr "Грешка при заявка на ключовете"
+
+#: ui/keyrequester.cpp:281
+#, kde-format
+msgid ""
+"The OpenPGP backend does not support listing keys. Check your installation."
+msgstr ""
+"Външната шифроваща програма OpenPGP не поддържа списък на ключове. Проверете "
+"инсталацията си."
+
+#: ui/keyrequester.cpp:304
+#, kde-format
+msgid ""
+"The S/MIME backend does not support listing keys. Check your installation."
+msgstr ""
+"Външната шифроваща програма S/MIME не поддържа списък на ключове. Проверете "
+"инсталацията си."
+
+#: ui/keyrequester.cpp:426
+#, kde-format
+msgid "OpenPGP Key Selection"
+msgstr "Избор на ключ OpenPGP"
+
+#: ui/keyrequester.cpp:427
+#, kde-format
+msgid "Please select an OpenPGP key to use."
+msgstr "Моля, изберете ключ OpenPGP, който ще бъде използван."
+
+#: ui/keyrequester.cpp:429
+#, kde-format
+msgid "S/MIME Key Selection"
+msgstr "Избор на ключ S/MIME"
+
+#: ui/keyrequester.cpp:430
+#, kde-format
+msgid "Please select an S/MIME key to use."
+msgstr "Моля, изберете ключ S/MIME, който ще бъде използван."
+
+#: ui/keyrequester.cpp:432
+#, kde-format
+msgid "Key Selection"
+msgstr "Избор на ключ"
+
+#: ui/keyrequester.cpp:433
+#, kde-format
+msgid "Please select an (OpenPGP or S/MIME) key to use."
+msgstr "Моля, изберете ключ OpenPGP или S/MIME, който ще бъде използван."
+
+#: ui/keyselectioncombo.cpp:195
+#, kde-format
+msgctxt "Name <email> (validity, type, created: date)"
+msgid "%1 (%2, %3, created: %4)"
+msgstr ""
+
+#: ui/keyselectioncombo.cpp:196
+#, kde-format
+msgctxt "Name <email>"
+msgid "%1 <%2>"
+msgstr ""
+
+#: ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "OpenPGP"
+msgstr "OpenPGP"
+
+#: ui/keyselectioncombo.cpp:347
+#, fuzzy, kde-format
+#| msgid "Fetching keys..."
+msgid "Loading keys ..."
+msgstr "Изтегляне на ключовете..."
+
+#: ui/keyselectiondialog.cpp:98
+#, kde-format
+msgid "The key is not valid."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:106
+#, kde-format
+msgid "The key is expired."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:110
+#, kde-format
+msgid "The key is revoked."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:114
+#, kde-format
+msgid "The key is disabled."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:122
+#, fuzzy, kde-format
+#| msgid "The following keys will be used for encryption:"
+msgid "The key is not designated for encryption."
+msgstr "Следните ключове ще бъдат използвани за шифроване:"
+
+#: ui/keyselectiondialog.cpp:128
+#, kde-format
+msgid "The key is not designated for signing."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:134
+#, kde-format
+msgid "The key is not designated for certifying."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:140
+#, kde-format
+msgid "The key is not designated for authentication."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:148
+#, kde-format
+msgid "The key is not secret."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:163
+#, kde-format
+msgid "The key is not trusted enough."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:169
+#, kde-format
+msgid "The key can be used."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:230
+#, kde-format
+msgid "Key ID"
+msgstr "Номер на ключ"
+
+#: ui/keyselectiondialog.cpp:231
+#, kde-format
+msgid "User ID"
+msgstr "Номер на потребител"
+
+#: ui/keyselectiondialog.cpp:279
+#, kde-format
+msgid "never"
+msgstr "никога"
+
+#: ui/keyselectiondialog.cpp:289 ui/keyselectiondialog.cpp:291
+#: ui/keyselectiondialog.cpp:300 ui/keyselectiondialog.cpp:302
+#, kde-format
+msgid "unknown"
+msgstr "неизвестно"
+
+#: ui/keyselectiondialog.cpp:289
+#, kde-format
+msgid "OpenPGP key for <b>%1</b>"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:291
+#, kde-format
+msgid "S/MIME key for <b>%1</b>"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:298
+#, kde-format
+msgctxt "Key creation date"
+msgid "Created"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:299
+#, kde-format
+msgctxt "Key Expiration date"
+msgid "Expiry"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:300
+#, kde-format
+msgctxt "Key fingerprint"
+msgid "Fingerprint"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:302
+#, kde-format
+msgctxt "Key issuer"
+msgid "Issuer"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:304
+#, kde-format
+msgctxt "Key status"
+msgid "Status"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:456
+#, kde-format
+msgid "Search for &External Certificates"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:470
+#, kde-format
+msgid "&Search for:"
+msgstr "&Търсене за:"
+
+#: ui/keyselectiondialog.cpp:494
+#, kde-format
+msgid "&Remember choice"
+msgstr "&Запомняне на избора"
+
+#: ui/keyselectiondialog.cpp:497
+#, kde-format
+msgid ""
+"<qt><p>If you check this box your choice will be stored and you will not be "
+"asked again.</p></qt>"
+msgstr ""
+"<qt><p>Ако отметката е включена, вашият избор ще бъде запомнен и няма да "
+"бъдете питани отново.</p></qt>"
+
+#: ui/keyselectiondialog.cpp:509
+#, kde-format
+msgid "&Reread Keys"
+msgstr "О&бновяване на ключовете"
+
+#: ui/keyselectiondialog.cpp:510
+#, kde-format
+msgid "&Start Certificate Manager"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:628
+#, kde-format
+msgid "No backends found for listing keys. Check your installation."
+msgstr ""
+"Не е намерена външна шифроваща програма за изпълнение на заявка за ключове. "
+"Проверете инсталацията си."
+
+#: ui/keyselectiondialog.cpp:644
+#, kde-format
+msgid "Could not start certificate manager; please check your installation."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:646
+#, kde-format
+msgid "Certificate Manager Error"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Checking selected keys..."
+msgstr "Проверка на избраните ключове..."
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Fetching keys..."
+msgstr "Изтегляне на ключовете..."
+
+#: ui/keyselectiondialog.cpp:731
+#, fuzzy, kde-format
+#| msgid ""
+#| "_n: <qt>One backend returned truncated output.<br>Not all available keys "
+#| "are shown</qt>\n"
+#| "<qt>%n backends returned truncated output.<br>Not all available keys are "
+#| "shown</qt>"
+msgid ""
+"<qt>One backend returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgid_plural ""
+"<qt>%1 backends returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgstr[0] ""
+"<qt>Външната шифроваща програма не върна пълен списък с ключове.<br>Не "
+"всички налични ключове са показани.</qt>\n"
+"<qt>Външните шифроващи програми (%n) не върнаха пълен списък с ключове."
+"<br>Не всички налични ключове са показани.</qt>"
+msgstr[1] ""
+"<qt>Външната шифроваща програма не върна пълен списък с ключове.<br>Не "
+"всички налични ключове са показани.</qt>\n"
+"<qt>Външните шифроващи програми (%n) не върнаха пълен списък с ключове."
+"<br>Не всички налични ключове са показани.</qt>"
+
+#: ui/keyselectiondialog.cpp:736
+#, kde-format
+msgid "Key List Result"
+msgstr "Ключове"
+
+#: ui/keyselectiondialog.cpp:856
+#, kde-format
+msgid "Recheck Key"
+msgstr "Проверка на ключовете"
+
+#: ui/messagebox.cpp:71
+#, kde-format
+msgid "Your system does not have support for GnuPG Audit Logs"
+msgstr ""
+
+#: ui/messagebox.cpp:72
+#, kde-format
+msgid "System Error"
+msgstr ""
+
+#: ui/messagebox.cpp:79
+#, kde-format
+msgid ""
+"An error occurred while trying to retrieve the GnuPG Audit Log:\n"
+"%1"
+msgstr ""
+
+#: ui/messagebox.cpp:81
+#, kde-format
+msgid "GnuPG Audit Log Error"
+msgstr ""
+
+#: ui/messagebox.cpp:88
+#, kde-format
+msgid "No GnuPG Audit Log available for this operation."
+msgstr ""
+
+#: ui/messagebox.cpp:89
+#, kde-format
+msgid "No GnuPG Audit Log"
+msgstr ""
+
+#: ui/messagebox.cpp:109 ui/messagebox.cpp:115
+#, kde-format
+msgid "GnuPG Audit Log Viewer"
+msgstr ""
+
+#: ui/messagebox.cpp:121
+#, kde-format
+msgid "Signing failed: %1"
+msgstr "Подписването се провали: %1"
+
+#: ui/messagebox.cpp:122
+#, kde-format
+msgid "Signing successful"
+msgstr ""
+
+#: ui/messagebox.cpp:133
+#, kde-format
+msgid "Encryption failed: %1"
+msgstr "Грешка при кодиране: %1"
+
+#: ui/messagebox.cpp:134
+#, fuzzy, kde-format
+#| msgid "Encryption keys:"
+msgid "Encryption successful"
+msgstr "Ключове:"
+
+#: ui/messagebox.cpp:155
+#, fuzzy, kde-format
+#| msgid "Scan Results"
+msgid "Signing Result"
+msgstr "Резултат"
+
+#: ui/messagebox.cpp:167
+#, kde-format
+msgid "Signing Error"
+msgstr ""
+
+#: ui/messagebox.cpp:179 ui/messagebox.cpp:203
+#, fuzzy, kde-format
+#| msgid "Encryption keys:"
+msgid "Encryption Result"
+msgstr "Ключове:"
+
+#: ui/messagebox.cpp:191 ui/messagebox.cpp:215
+#, fuzzy, kde-format
+#| msgid "Encryption keys:"
+msgid "Encryption Error"
+msgstr "Ключове:"
+
+#: ui/messagebox.cpp:263
+#, kde-format
+msgid "&Show Audit Log"
+msgstr ""
+
+#: ui/progressdialog.cpp:91
+#, kde-format
+msgid "%1: %2"
+msgstr "%1: %2"
+
+#, fuzzy
+#~| msgid "OpenPGP"
+#~ msgctxt "New OpenPGP Directory Server"
+#~ msgid "OpenPGP"
+#~ msgstr "OpenPGP"
+
+#~ msgid "General"
+#~ msgstr "Общи"
+
+#~ msgid "Chiasmus"
+#~ msgstr "Chiasmus"
+
+#~ msgid "Chiasmus command line tool"
+#~ msgstr "Интерфейс чрез командния ред към Chiasmus"
+
+#~ msgid "Unsupported protocol \"%1\""
+#~ msgstr "Неподдържан протокол \"%1\""
+
+#~ msgid "File \"%1\" does not exist or is not executable."
+#~ msgstr "Файлът \"%1\" не съществува или не е изпълним."
+
+#~ msgid "Output from chiasmus"
+#~ msgstr "Изход от chiasmus"
+
+#~ msgid "Decryption failed: %1"
+#~ msgstr "Грешка при разкодиране: %1"
+
+#~ msgid ""
+#~ "The following was received on stderr:\n"
+#~ "%1"
+#~ msgstr ""
+#~ "Следният текст се получи на стандартния изход за грешка:\n"
+#~ "%1"
+
+#~ msgid "Failed to load %1: %2"
+#~ msgstr "Грешка при зареждане на %1: %2"
+
+#~ msgid "Library does not contain the symbol \"Chiasmus\"."
+#~ msgstr "Библиотеката не съдържа символа \"Chiasmus\"."
+
+#~ msgid "Scanning directory %1..."
+#~ msgstr "Сканиране на директорията %1..."
+
+#~ msgid "GpgME"
+#~ msgstr "GpgME"
+
+#~ msgid "GPGME was compiled without support for %1."
+#~ msgstr "Програмата GPGME е била компилирана без поддръжка на %1."
+
+#~ msgid "Engine %1 is not installed properly."
+#~ msgstr "Външната шифроваща програма %1 не е инсталирана правилно."
+
+#~ msgid "Engine %1 version %2 installed, but at least version %3 is required."
+#~ msgstr ""
+#~ "Инсталирана е външната шифроваща програма %1 версия %2, но е необходима "
+#~ "поне версия %3."
+
+#~ msgid "Unknown problem with engine for protocol %1."
+#~ msgstr "Неизвестен проблем с външната шифроваща програма за протокола %1."
+
+#, fuzzy
+#~| msgid "program cannot be executed"
+#~ msgid "program terminated unexpectedly"
+#~ msgstr "програмата не може да бъде стартирана"
+
+#, fuzzy
+#~| msgid "program cannot be executed"
+#~ msgid "program not found or cannot be started"
+#~ msgstr "програмата не може да бъде стартирана"
+
+#, fuzzy
+#~| msgid "<qt>Failed to execute gpgconf:<br>%1</qt>"
+#~ msgid "<qt>Failed to execute gpgconf:<p>%1</p></qt>"
+#~ msgstr "<qt>Грешка при изпълнение на:<br>%1</qt>"
+
+#, fuzzy
+#~| msgid ""
+#~| "Could not start gpgconf\n"
+#~| "Check that gpgconf is in the PATH and that it can be started"
+#~ msgid ""
+#~ "Could not start gpgconf.\n"
+#~ "Check that gpgconf is in the PATH and that it can be started."
+#~ msgstr ""
+#~ "Програмата gpgconf не може да бъде стартирана.\n"
+#~ "Проверете дали програмата се намира в описанието на променливата PATH и е "
+#~ "изпълнима."
+
+#~ msgid "Error from gpgconf while saving configuration: %1"
+#~ msgstr "Грешка при записа настройките на gpgconf: %1"
+
+#~ msgid "Generating DSA key..."
+#~ msgstr "Генериране на ключ DSA..."
+
+#~ msgid "Generating ElGamal key..."
+#~ msgstr "Генериране на ключ ElGamal..."
+
+#~ msgid "Searching for a large prime number..."
+#~ msgstr "Търсене на голямо просто число..."
+
+#, fuzzy
+#~| msgid ""
+#~| "Waiting for new entropy from random number generator (you might want to "
+#~| "excercise the harddisks or move the mouse)..."
+#~ msgid ""
+#~ "Waiting for new entropy from random number generator (you might want to "
+#~ "exercise the harddisks or move the mouse)..."
+#~ msgstr ""
+#~ "Изчакване за инициализация на генератора за случайни числа (желателно е "
+#~ "да движете мишката в случайни посоки)..."
+
+#~ msgid "Please wait..."
+#~ msgstr "Моля, изчакайте..."
+
+#~ msgid ""
+#~ "Starting gpg-agent (you should consider starting a global instance "
+#~ "instead)..."
+#~ msgstr ""
+#~ "Стартиране на програмата gpg (желателно е да стартирате една глобална "
+#~ "инстанция)..."
+
+#~ msgid "While scanning for %1 support in backend %2:"
+#~ msgstr "Претърсване за поддръжка на %1 в модула %2:"
+
+#, fuzzy
+#~| msgid "%1: %2"
+#~ msgctxt "progress info: \"%1 of %2\""
+#~ msgid "%1/%2"
+#~ msgstr "%1: %2"
+
+#~ msgid ""
+#~ "OpenPGP key for %1\n"
+#~ "Created: %2\n"
+#~ "Expiry: %3\n"
+#~ "Fingerprint: %4"
+#~ msgstr ""
+#~ "Ключ OpenPGP за %1\n"
+#~ "Създаден на: %2\n"
+#~ "Валидност до: %3\n"
+#~ "Отпечатък: %4"
+
+#~ msgid ""
+#~ "S/MIME key for %1\n"
+#~ "Created: %2\n"
+#~ "Expiry: %3\n"
+#~ "Fingerprint: %4\n"
+#~ "Issuer: %5"
+#~ msgstr ""
+#~ "Ключ S/MIME за %1\n"
+#~ "Създаден на: %2\n"
+#~ "Валидност до: %3\n"
+#~ "Отпечатък: %4\n"
+#~ "Издаващ орган: %5"
+
+#~ msgid "Add or Change Directory Service"
+#~ msgstr "Добавяне или промяна на директорийна услуга"
+
+#~ msgid "&Server name:"
+#~ msgstr "&Сървър:"
+
+#~ msgid "389"
+#~ msgstr "389"
+
+#~ msgid "&User name (optional):"
+#~ msgstr "Потре&бител (незадължителен):"
+
+#~ msgid "Pass&word (optional):"
+#~ msgstr "Па&рола (незадължителна):"
+
+#~ msgid "&Base DN:"
+#~ msgstr "Базов &индекс:"
+
+#~ msgid "&Port:"
+#~ msgstr "Пор&т:"
+
+#, fuzzy
+#~| msgid "Surname"
+#~ msgctxt "NAME OF TRANSLATORS"
+#~ msgid "Your names"
+#~ msgstr "Фамилно име"
+
+#, fuzzy
+#~| msgid "Your keys:"
+#~ msgctxt "EMAIL OF TRANSLATORS"
+#~ msgid "Your emails"
+#~ msgstr "Ключове:"
+
+#~ msgid "failed"
+#~ msgstr "грешка"
+
+#, fuzzy
+#~| msgid "%1: %2"
+#~ msgctxt ""
+#~ "Items in Kleo::BackendConfigWidget listview (1: protocol; 2: "
+#~ "implementation name)"
+#~ msgid "%1 (%2)"
+#~ msgstr "%1: %2"
+
+#~ msgid "Available Backends"
+#~ msgstr "Налични програми"
+
+#~ msgid "Confi&gure..."
+#~ msgstr "&Настройване..."
+
+#~ msgid "Rescan"
+#~ msgstr "Претърсване"
+
+#~ msgid "The following problems where encountered during scanning:"
+#~ msgstr "При претърсването възникнаха следните проблеми:"
+
+#, fuzzy
+#~| msgid "Scan Results"
+#~ msgctxt "@title:window Results of the scanning"
+#~ msgid "Scan Results"
+#~ msgstr "Резултат"
+
+#~ msgid "(Unknown Protocol)"
+#~ msgstr "(Неизвестен протокол)"
+
+#~ msgid "Error while initializing plugin \"%1\""
+#~ msgstr "Грешка при стартиране на приставката \"%1\"."
--- /dev/null
+# Bosnian translation for kdepim
+# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
+# This file is distributed under the same license as the kdepim package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: kdepim\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2017-07-12 06:56+0200\n"
+"PO-Revision-Date: 2015-02-04 15:11+0000\n"
+"Last-Translator: Samir Ribić <Unknown>\n"
+"Language-Team: Bosnian <bs@li.org>\n"
+"Language: bs\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"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: 2015-02-05 06:34+0000\n"
+"X-Generator: Launchpad (build 17331)\n"
+
+#: kleo/checksumdefinition.cpp:107
+#, kde-format
+msgid "Error in checksum definition %1: %2"
+msgstr "Greška u definiciji kontrolne sume %1: %2"
+
+#: kleo/checksumdefinition.cpp:157
+#, kde-format
+msgid "Cannot use both %f and | in '%1'"
+msgstr "Ne može se istovremeno koristiti %f i | u '%1'"
+
+#: kleo/checksumdefinition.cpp:167
+#, kde-format
+msgid "Quoting error in '%1' entry"
+msgstr "Greška citiranja u '%1' elementu"
+
+#: kleo/checksumdefinition.cpp:170
+#, kde-format
+msgid "'%1' too complex (would need shell)"
+msgstr "'%1' previše kompleksno (potrebna je školjka)"
+
+#: kleo/checksumdefinition.cpp:174
+#, kde-format
+msgid "'%1' entry is empty/missing"
+msgstr "'%1' element nedostaje ili je prazan"
+
+#: kleo/checksumdefinition.cpp:183
+#, kde-format
+msgid "'%1' empty or not found"
+msgstr "'%1' nedostaje ili je prazan"
+
+#: kleo/checksumdefinition.cpp:222
+#, kde-format
+msgid "'id' entry is empty/missing"
+msgstr "'id' element nedostaje ili je prazan"
+
+#: kleo/checksumdefinition.cpp:225
+#, kde-format
+msgid "'output-file' entry is empty/missing"
+msgstr "'output-file' element nedostaje ili je prazan"
+
+#: kleo/checksumdefinition.cpp:228
+#, kde-format
+msgid "'file-patterns' entry is empty/missing"
+msgstr "'file-patterns' element nedostaje ili je prazan"
+
+#: kleo/checksumdefinition.cpp:395
+#, kde-format
+msgid "Caught unknown exception in group %1"
+msgstr "Dohvaćen neočekivan izuzetak u grupi %1"
+
+#: kleo/dn.cpp:507
+#, kde-format
+msgid "Common name"
+msgstr "Uobičajeno ime"
+
+#: kleo/dn.cpp:508
+#, kde-format
+msgid "Surname"
+msgstr "Prezime"
+
+#: kleo/dn.cpp:509
+#, kde-format
+msgid "Given name"
+msgstr "Ime"
+
+#: kleo/dn.cpp:510
+#, kde-format
+msgid "Location"
+msgstr "Lokacija"
+
+#: kleo/dn.cpp:511
+#, kde-format
+msgid "Title"
+msgstr "Naziv"
+
+#: kleo/dn.cpp:512
+#, kde-format
+msgid "Organizational unit"
+msgstr "Organizaciona jedinica"
+
+#: kleo/dn.cpp:513
+#, kde-format
+msgid "Organization"
+msgstr "Organizacija"
+
+#: kleo/dn.cpp:514
+#, kde-format
+msgid "Postal code"
+msgstr "Poštanski broj"
+
+#: kleo/dn.cpp:515
+#, kde-format
+msgid "Country code"
+msgstr "Kôd države"
+
+#: kleo/dn.cpp:516
+#, kde-format
+msgid "State or province"
+msgstr "Država ili provincija"
+
+#: kleo/dn.cpp:517
+#, kde-format
+msgid "Domain component"
+msgstr "Komponenta domena"
+
+#: kleo/dn.cpp:518
+#, kde-format
+msgid "Business category"
+msgstr "Poslovna kategorija"
+
+#: kleo/dn.cpp:519
+#, kde-format
+msgid "Email address"
+msgstr "Email adresa"
+
+#: kleo/dn.cpp:520
+#, kde-format
+msgid "Mail address"
+msgstr "Poštanska adresa"
+
+#: kleo/dn.cpp:521
+#, kde-format
+msgid "Mobile phone number"
+msgstr "Broj mobilnog telefona"
+
+#: kleo/dn.cpp:522
+#, kde-format
+msgid "Telephone number"
+msgstr "Broj telefona"
+
+#: kleo/dn.cpp:523
+#, kde-format
+msgid "Fax number"
+msgstr "Broj faksa"
+
+#: kleo/dn.cpp:524
+#, kde-format
+msgid "Street address"
+msgstr "Adresa"
+
+#: kleo/dn.cpp:525
+#, kde-format
+msgid "Unique ID"
+msgstr "Jedinstveni id."
+
+#: kleo/enum.cpp:57
+#, kde-format
+msgid "Inline OpenPGP (deprecated)"
+msgstr "OpenPGP u liniji (zastarjelo)"
+
+#: kleo/enum.cpp:62
+#, kde-format
+msgid "OpenPGP/MIME"
+msgstr "OpenPGP/MIME"
+
+#: kleo/enum.cpp:67 ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "S/MIME"
+msgstr "S/MIME"
+
+#: kleo/enum.cpp:72
+#, kde-format
+msgid "S/MIME Opaque"
+msgstr "S/MIME, neprozirno"
+
+#: kleo/enum.cpp:104
+#, kde-format
+msgid "Any"
+msgstr "Bilo koji"
+
+#: kleo/enum.cpp:177
+#, kde-format
+msgid "Never Encrypt"
+msgstr "Nikad ne šifruj"
+
+#: kleo/enum.cpp:179
+#, kde-format
+msgid "Always Encrypt"
+msgstr "Uvijek šifruj"
+
+#: kleo/enum.cpp:181
+#, kde-format
+msgid "Always Encrypt If Possible"
+msgstr "Uvijek šifruj ako je moguće"
+
+#: kleo/enum.cpp:183 kleo/enum.cpp:240
+#, kde-format
+msgid "Ask"
+msgstr "Pitaj"
+
+#: kleo/enum.cpp:185 kleo/enum.cpp:242
+#, kde-format
+msgid "Ask Whenever Possible"
+msgstr "Pitaj kada je moguće"
+
+#: kleo/enum.cpp:187
+#, kde-kuit-format
+msgctxt "no specific preference"
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>ništa</placeholder>"
+
+#: kleo/enum.cpp:234
+#, kde-format
+msgid "Never Sign"
+msgstr "Nikad ne potpisuj"
+
+#: kleo/enum.cpp:236
+#, kde-format
+msgid "Always Sign"
+msgstr "Uvijek potpisuj"
+
+#: kleo/enum.cpp:238
+#, kde-format
+msgid "Always Sign If Possible"
+msgstr "Uvijek potpisuj ako je moguće"
+
+#: kleo/enum.cpp:244
+#, kde-format
+msgctxt "no specific preference"
+msgid "<none>"
+msgstr "<nijedno>"
+
+#: kleo/keyfiltermanager.cpp:85
+#, kde-format
+msgid "All Certificates"
+msgstr "Svi certifikati"
+
+#: kleo/keyfiltermanager.cpp:100
+#, kde-format
+msgid "My Certificates"
+msgstr "Moji certifikati"
+
+#: kleo/keyfiltermanager.cpp:118
+#, kde-format
+msgid "Trusted Certificates"
+msgstr "Certifikati u koje se vjeruje"
+
+#: kleo/keyfiltermanager.cpp:135
+#, fuzzy, kde-format
+#| msgid "Trusted Certificates"
+msgid "Fully Trusted Certificates"
+msgstr "Certifikati u koje se vjeruje"
+
+#: kleo/keyfiltermanager.cpp:152
+#, kde-format
+msgid "Other Certificates"
+msgstr "Ostali certifikati"
+
+#: kleo/keyfiltermanager.cpp:166
+#, fuzzy, kde-format
+#| msgid "All Certificates"
+msgid "VS-compliant Certificates"
+msgstr "Svi certifikati"
+
+#: kleo/keyfiltermanager.cpp:184
+#, fuzzy, kde-format
+#| msgid "Trusted Certificates"
+msgid "Not validated Certificates"
+msgstr "Certifikati u koje se vjeruje"
+
+#: ui/auditlogviewer.cpp:49
+#, kde-format
+msgid "View GnuPG Audit Log"
+msgstr "Prikaži dnevnik revizije GnuPG-a"
+
+#: ui/auditlogviewer.cpp:53
+#, kde-format
+msgid "&Copy to Clipboard"
+msgstr "&Kopiraj u klipbord"
+
+#: ui/auditlogviewer.cpp:59
+#, kde-format
+msgid "&Save to Disk..."
+msgstr "&Snimi na disk..."
+
+#: ui/auditlogviewer.cpp:95
+#, kde-format
+msgid "Choose File to Save GnuPG Audit Log to"
+msgstr "Izaberite datoteku za snimanje dnevnika revizije GnuPG-a"
+
+#: ui/auditlogviewer.cpp:118
+#, kde-format
+msgid "Could not save to file \"%1\": %2"
+msgstr "Ne mogu spremiti u datoteku \"%1\": %2"
+
+#: ui/auditlogviewer.cpp:120
+#, kde-format
+msgid "File Save Error"
+msgstr "Greška pri snimanju"
+
+#: ui/cryptoconfigdialog.cpp:44
+#, kde-format
+msgid "Configure GnuPG Backend"
+msgstr "Konfiguriši GnuPG pogon"
+
+#: ui/cryptoconfigdialog.cpp:55
+#, kde-format
+msgid "&Reset"
+msgstr "&Resetuj"
+
+#: ui/cryptoconfigmodule.cpp:160
+#, kde-format
+msgid "GpgConf Error"
+msgstr "GpgConf greška"
+
+#: ui/cryptoconfigmodule.cpp:216
+#, kde-format
+msgid ""
+"The gpgconf tool used to provide the information for this dialog does not "
+"seem to be installed properly. It did not return any components. Try running "
+"\"%1\" on the command line for more information."
+msgstr ""
+"Gpgconf alat koji se koristi za pružanje informacija za ovaj dijalog ne čini "
+"se instaliran ispravno. Nije vratio komponente. Probajte pokrenuti \"%1\" iz "
+"komandne linije za više informacija."
+
+#: ui/cryptoconfigmodule.cpp:496
+#, kde-format
+msgctxt ""
+"Translate this to 'yes' or 'no' (use the English words!) depending on "
+"whether your language uses Sentence style capitalisation in GUI labels (yes) "
+"or not (no). Context: We get some backend strings in that have the wrong "
+"capitalizaion (in English, at least) so we need to force the first character "
+"to upper-case. It is this behaviour you can control for your language with "
+"this translation."
+msgid "yes"
+msgstr "no"
+
+#: ui/cryptoconfigmodule.cpp:546
+#, kde-format
+msgid "0 - None"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:547
+#, kde-format
+msgid "1 - Basic"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:548
+#, kde-format
+msgid "2 - Verbose"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:549
+#, kde-format
+msgid "3 - More Verbose"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:550
+#, kde-format
+msgid "4 - All"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:559
+#, kde-format
+msgid "Set the debugging level to"
+msgstr "Postavite debugging nivo"
+
+#: ui/cryptoconfigmodule.cpp:787
+#, kde-format
+msgid "Show..."
+msgstr "Prikaži..."
+
+#: ui/cryptoconfigmodule.cpp:787 ui/cryptoconfigmodule.cpp:876
+#, kde-format
+msgid "Edit..."
+msgstr "Uredi..."
+
+#: ui/cryptoconfigmodule.cpp:841
+#, kde-format
+msgid "Configure LDAP Servers"
+msgstr "Podesi LDAP servere"
+
+#: ui/cryptoconfigmodule.cpp:862
+#, fuzzy, kde-format
+#| msgid "No server configured yet"
+msgid "None configured"
+msgstr "Još uvijek nema podešenih servera"
+
+#: ui/cryptoconfigmodule.cpp:864
+#, kde-format
+msgid "1 server configured"
+msgid_plural "%1 servers configured"
+msgstr[0] "%1 server podešen"
+msgstr[1] "%1 servera podešena"
+msgstr[2] "%1 servera podešeno"
+
+#: ui/cryptoconfigmodule.cpp:879
+#, kde-format
+msgid "Use keyserver at"
+msgstr "Koristite server ključeva na"
+
+#: ui/cryptoconfigmodule.cpp:968
+#, kde-format
+msgid "Configure Keyservers"
+msgstr "Konfiguriši servere ključeva"
+
+#: ui/directoryserviceswidget.cpp:67
+#, kde-format
+msgctxt "default server name, keep it a valid domain name, ie. no spaces"
+msgid "server"
+msgstr "server"
+
+#: ui/directoryserviceswidget.cpp:95
+#, kde-format
+msgid "hkp"
+msgstr "hkp"
+
+#: ui/directoryserviceswidget.cpp:96
+#, kde-format
+msgid "http"
+msgstr "http"
+
+#: ui/directoryserviceswidget.cpp:97
+#, kde-format
+msgid "https"
+msgstr "https"
+
+#: ui/directoryserviceswidget.cpp:98
+#, kde-format
+msgid "ftp"
+msgstr "ftp"
+
+#: ui/directoryserviceswidget.cpp:99
+#, kde-format
+msgid "ftps"
+msgstr "ftps"
+
+#: ui/directoryserviceswidget.cpp:100
+#, kde-format
+msgid "ldap"
+msgstr "ldap"
+
+#: ui/directoryserviceswidget.cpp:101
+#, kde-format
+msgid "ldaps"
+msgstr "ldaps"
+
+#: ui/directoryserviceswidget.cpp:588
+#, kde-format
+msgid "Server Name"
+msgstr "Ime servera"
+
+#: ui/directoryserviceswidget.cpp:589
+#, kde-format
+msgid "Server Port"
+msgstr "Server port"
+
+#: ui/directoryserviceswidget.cpp:590
+#, kde-format
+msgid "Base DN"
+msgstr "Bazni DN"
+
+#: ui/directoryserviceswidget.cpp:591
+#, kde-format
+msgid "User Name"
+msgstr "Korisničko ime"
+
+#: ui/directoryserviceswidget.cpp:592
+#, kde-format
+msgid "Password"
+msgstr "Šifra"
+
+#: ui/directoryserviceswidget.cpp:614
+#, kde-format
+msgid "(read-only)"
+msgstr "(samo čitanje)"
+
+#: ui/directoryserviceswidget.cpp:616
+#, kde-format
+msgctxt "amended tooltip; %1: original tooltip"
+msgid "%1 (read-only)"
+msgstr "%1 (samo čitanje)"
+
+#: ui/directoryserviceswidget.cpp:739
+#, kde-format
+msgid ""
+"Enter the name or IP address of the server hosting the directory service."
+msgstr "Unesite ime ili IP adresu poslužitelja koji drži usluge imenika."
+
+#: ui/directoryserviceswidget.cpp:741
+#, kde-format
+msgid ""
+"<b>(Optional, the default is fine in most cases)</b> Pick the port number "
+"the directory service is listening on."
+msgstr ""
+"<b>(Opcionalno, zadano je u redu u većini slučajeva)</b> Odaberite broj "
+"porta koji imenički servis osluškuje."
+
+#: ui/directoryserviceswidget.cpp:744
+#, kde-format
+msgid ""
+"<b>(Only for LDAP)</b> Enter the base DN for this LDAP server to limit "
+"searches to only that subtree of the directory."
+msgstr ""
+"<b>(Samo za LDAP)</b> Unesite bazni DN za ovaj LDAP poslužitelj za "
+"ograničavanje pretraživanja na samo da podstablo u imeniku."
+
+#: ui/directoryserviceswidget.cpp:747
+#, kde-format
+msgid "<b>(Optional)</b> Enter your user name here, if needed."
+msgstr "<b>(Opciono)</b> Unesite korisničko ime, ako je potrebno."
+
+#: ui/directoryserviceswidget.cpp:749
+#, kde-format
+msgid ""
+"<b>(Optional, not recommended)</b> Enter your password here, if needed. Note "
+"that the password will be saved in the clear in a config file in your home "
+"directory."
+msgstr ""
+"<b>(Opcionalno, ne preporučuje se)</b> Upišite svoju lozinku ovdje, ako je "
+"potrebno. Imajte na umu da će lozinka biti spremljena otovreno u config "
+"datoteku u vaš home direktorij."
+
+#. i18n: ectx: property (windowTitle), widget (QWidget, DirectoryServicesWidget)
+#: ui/directoryserviceswidget.ui:14
+#, kde-format
+msgid "Directory Services Configuration"
+msgstr "Podešavanje servisa direktorija"
+
+#. i18n: ectx: property (text), widget (QLabel, pgpKSLabel)
+#: ui/directoryserviceswidget.ui:22
+#, fuzzy, kde-format
+#| msgid "OpenPGP Key Selection"
+msgid "OpenPGP Keyserver:"
+msgstr "Izbor OpenPGP ključa"
+
+#. i18n: ectx: property (title), widget (QGroupBox, x500LA)
+#: ui/directoryserviceswidget.ui:35
+#, fuzzy, kde-format
+#| msgid "Directory services:"
+msgid "X509 Directory services:"
+msgstr "Direktorijski servisi:"
+
+#. i18n: ectx: property (whatsThis), widget (QTreeView, treeView)
+#: ui/directoryserviceswidget.ui:43
+#, fuzzy, kde-format
+#| msgid ""
+#| "This is a list of all directory services that are configured for use with "
+#| "X.509 and OpenPGP."
+msgid ""
+"This is a list of all directory services that are configured for use with "
+"X.509."
+msgstr ""
+"Ovo je popis svih direktorijskih servisa koje su konfigurisani za korištenje "
+"s X.509 i OpenPGP."
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:70
+#, kde-format
+msgid "Click to add a service"
+msgstr "Kliknite da biste dodali servis"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:73
+#, kde-format
+msgid ""
+"Click this button to create a new directory service entry as a clone of the "
+"currently selected one (or with default values, if no other is selected). "
+"You can then configure details in the table on the left hand."
+msgstr ""
+"Pritisnite ovo dugme za stvaranje nove stavke direktorijskog servisa kao "
+"klon trenutno odabrane (ili zadane vrijednosti, ako nijedna druga nije "
+"odabrana). Zatim možete konfigurisati detalje u tablici s lijeve strane."
+
+#. i18n: ectx: property (text), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:76
+#, kde-format
+msgid "New"
+msgstr "Nova"
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:92
+#, kde-format
+msgid "Click to remove the currently selected service"
+msgstr "Kliknite da biste uklonili trenutno izabrani servis"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:95
+#, kde-format
+msgid ""
+"Click this button to remove the currently selected directory service. The "
+"change will only take effect once you acknowledge the main configuration "
+"dialog."
+msgstr ""
+"Pritisnite ovo dugme da biste uklonili trenutno odabrani direktorijski "
+"servis. Promjene će stupiti na snagu tek nakon što potvrdite u glavnom "
+"dijalogu za podešavanje."
+
+#. i18n: ectx: property (text), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:98
+#, kde-format
+msgid "Delete"
+msgstr "Obriši"
+
+#. i18n: ectx: property (whatsThis), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:128
+#, kde-format
+msgid ""
+"Use this option to switch display of username and password information on or "
+"off in the above table."
+msgstr ""
+"Koristite ovu opciju da uključite ili isključite prikaz informacija o "
+"korisničkom imenu i lozinc u gornjoj tablici."
+
+#. i18n: ectx: property (text), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:131
+#, kde-format
+msgid "Show user and password information"
+msgstr "Pokaži podatke o korisničkom imenu i lozinci"
+
+#: ui/dnattributeorderconfigwidget.cpp:73
+#, kde-format
+msgid "Description"
+msgstr "Opis"
+
+#: ui/dnattributeorderconfigwidget.cpp:91
+#, kde-format
+msgid "Available attributes:"
+msgstr "Dostupni atributi:"
+
+#: ui/dnattributeorderconfigwidget.cpp:92
+#, kde-format
+msgid "Current attribute order:"
+msgstr "Trenutni redoslijed atributa:"
+
+#: ui/dnattributeorderconfigwidget.cpp:112
+#, kde-format
+msgid "All others"
+msgstr "Svi drugi"
+
+#: ui/dnattributeorderconfigwidget.cpp:129
+#, kde-format
+msgid "Move to top"
+msgstr "Pomjeri na vrh"
+
+#: ui/dnattributeorderconfigwidget.cpp:130
+#, kde-format
+msgid "Move one up"
+msgstr "Pomjeri jedno mjesto gore"
+
+#: ui/dnattributeorderconfigwidget.cpp:131
+#, kde-format
+msgid "Remove from current attribute order"
+msgstr "Ukloni iz trenutnog redoslijeda atributa"
+
+#: ui/dnattributeorderconfigwidget.cpp:132
+#, kde-format
+msgid "Add to current attribute order"
+msgstr "Dodaj u trenutni redoslijed atributa"
+
+#: ui/dnattributeorderconfigwidget.cpp:133
+#, kde-format
+msgid "Move one down"
+msgstr "Pomjeri jedno mjesto dolje"
+
+#: ui/dnattributeorderconfigwidget.cpp:134
+#, kde-format
+msgid "Move to bottom"
+msgstr "Pomjeri na dno"
+
+#: ui/keyapprovaldialog.cpp:87
+#, kde-kuit-format
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>ništa</placeholder>"
+
+#: ui/keyapprovaldialog.cpp:88
+#, kde-format
+msgid "Never Encrypt with This Key"
+msgstr "Nikad ne šifruj ovim ključem"
+
+#: ui/keyapprovaldialog.cpp:89
+#, kde-format
+msgid "Always Encrypt with This Key"
+msgstr "Uvijek šifruj ovim ključem"
+
+#: ui/keyapprovaldialog.cpp:90
+#, kde-format
+msgid "Encrypt Whenever Encryption is Possible"
+msgstr "Šifruj kad god je šifrovanje moguće"
+
+#: ui/keyapprovaldialog.cpp:91
+#, kde-format
+msgid "Always Ask"
+msgstr "Uvijek pitaj"
+
+#: ui/keyapprovaldialog.cpp:92
+#, kde-format
+msgid "Ask Whenever Encryption is Possible"
+msgstr "Pitaj kad god je šifrovanje moguće"
+
+#: ui/keyapprovaldialog.cpp:113
+#, kde-format
+msgid "Encryption Key Approval"
+msgstr "Odobrenje ključa za šifrovanje"
+
+#: ui/keyapprovaldialog.cpp:129
+#, kde-format
+msgid "The following keys will be used for encryption:"
+msgstr "Sljedeći ključevi će biti korišćeni za šifrovanje:"
+
+#: ui/keyapprovaldialog.cpp:145
+#, kde-format
+msgid "Your keys:"
+msgstr "Vaši ključevi:"
+
+#: ui/keyapprovaldialog.cpp:157
+#, kde-format
+msgid "Recipient:"
+msgstr "Primalac:"
+
+#: ui/keyapprovaldialog.cpp:162
+#, kde-format
+msgid "Encryption keys:"
+msgstr "Ključevi za šifrovanje:"
+
+#: ui/keyapprovaldialog.cpp:169
+#, kde-format
+msgid "Encryption preference:"
+msgstr "Redoslijed šifrovanja:"
+
+#: ui/keyrequester.cpp:118
+#, kde-format
+msgid "Clear"
+msgstr "Čisto"
+
+#: ui/keyrequester.cpp:121
+#, kde-format
+msgid "Change..."
+msgstr "Promijeni..."
+
+#: ui/keyrequester.cpp:232 ui/keyselectiondialog.cpp:256
+#, kde-kuit-format
+msgid "<placeholder>unknown</placeholder>"
+msgstr "<placeholder>nepoznato</placeholder>"
+
+#: ui/keyrequester.cpp:246 ui/keyselectiondialog.cpp:657
+#, kde-format
+msgid ""
+"<qt><p>An error occurred while fetching the keys from the backend:</p><p><b>"
+"%1</b></p></qt>"
+msgstr ""
+"<qt><p>Došlo je do greške pri dobijanju ključeva od pozadinskog sistema:</"
+"p><p><b>%1</b></p></qt>"
+
+#: ui/keyrequester.cpp:251 ui/keyrequester.cpp:283 ui/keyrequester.cpp:306
+#: ui/keyselectiondialog.cpp:630 ui/keyselectiondialog.cpp:662
+#, kde-format
+msgid "Key Listing Failed"
+msgstr "Listanje ključeva nije uspelo"
+
+#: ui/keyrequester.cpp:281
+#, kde-format
+msgid ""
+"The OpenPGP backend does not support listing keys. Check your installation."
+msgstr ""
+"OpenPGP pozadinski sistem ne podržava listanje ključeva. Provjerite vašu "
+"instalaciju."
+
+#: ui/keyrequester.cpp:304
+#, kde-format
+msgid ""
+"The S/MIME backend does not support listing keys. Check your installation."
+msgstr ""
+"S/MIME pozadinski sistem ne podržava listanje ključeva. Provjerite vašu "
+"instalaciju."
+
+#: ui/keyrequester.cpp:426
+#, kde-format
+msgid "OpenPGP Key Selection"
+msgstr "Izbor OpenPGP ključa"
+
+#: ui/keyrequester.cpp:427
+#, kde-format
+msgid "Please select an OpenPGP key to use."
+msgstr "Izaberite OpenPGP ključ koji ćete koristiti."
+
+#: ui/keyrequester.cpp:429
+#, kde-format
+msgid "S/MIME Key Selection"
+msgstr "Izbor S/MIME ključa"
+
+#: ui/keyrequester.cpp:430
+#, kde-format
+msgid "Please select an S/MIME key to use."
+msgstr "Izaberite S/MIME ključ koji ćete koristiti."
+
+#: ui/keyrequester.cpp:432
+#, kde-format
+msgid "Key Selection"
+msgstr "Izbor ključa"
+
+#: ui/keyrequester.cpp:433
+#, kde-format
+msgid "Please select an (OpenPGP or S/MIME) key to use."
+msgstr "Izaberite (OpenPGP ili S/MIME) ključ koji ćete koristiti."
+
+#: ui/keyselectioncombo.cpp:195
+#, kde-format
+msgctxt "Name <email> (validity, type, created: date)"
+msgid "%1 (%2, %3, created: %4)"
+msgstr ""
+
+#: ui/keyselectioncombo.cpp:196
+#, kde-format
+msgctxt "Name <email>"
+msgid "%1 <%2>"
+msgstr ""
+
+#: ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "OpenPGP"
+msgstr "OpenPGP"
+
+#: ui/keyselectioncombo.cpp:347
+#, fuzzy, kde-format
+#| msgid "Fetching keys..."
+msgid "Loading keys ..."
+msgstr "Dobavljam ključeve..."
+
+#: ui/keyselectiondialog.cpp:98
+#, kde-format
+msgid "The key is not valid."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:106
+#, kde-format
+msgid "The key is expired."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:110
+#, kde-format
+msgid "The key is revoked."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:114
+#, kde-format
+msgid "The key is disabled."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:122
+#, fuzzy, kde-format
+#| msgid "The following keys will be used for encryption:"
+msgid "The key is not designated for encryption."
+msgstr "Sljedeći ključevi će biti korišćeni za šifrovanje:"
+
+#: ui/keyselectiondialog.cpp:128
+#, kde-format
+msgid "The key is not designated for signing."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:134
+#, kde-format
+msgid "The key is not designated for certifying."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:140
+#, kde-format
+msgid "The key is not designated for authentication."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:148
+#, kde-format
+msgid "The key is not secret."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:163
+#, kde-format
+msgid "The key is not trusted enough."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:169
+#, kde-format
+msgid "The key can be used."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:230
+#, kde-format
+msgid "Key ID"
+msgstr "Id. ključa"
+
+#: ui/keyselectiondialog.cpp:231
+#, kde-format
+msgid "User ID"
+msgstr "Korisnički id."
+
+#: ui/keyselectiondialog.cpp:279
+#, kde-format
+msgid "never"
+msgstr "nikad"
+
+#: ui/keyselectiondialog.cpp:289 ui/keyselectiondialog.cpp:291
+#: ui/keyselectiondialog.cpp:300 ui/keyselectiondialog.cpp:302
+#, kde-format
+msgid "unknown"
+msgstr "nepoznat"
+
+#: ui/keyselectiondialog.cpp:289
+#, kde-format
+msgid "OpenPGP key for <b>%1</b>"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:291
+#, kde-format
+msgid "S/MIME key for <b>%1</b>"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:298
+#, kde-format
+msgctxt "Key creation date"
+msgid "Created"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:299
+#, kde-format
+msgctxt "Key Expiration date"
+msgid "Expiry"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:300
+#, kde-format
+msgctxt "Key fingerprint"
+msgid "Fingerprint"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:302
+#, kde-format
+msgctxt "Key issuer"
+msgid "Issuer"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:304
+#, kde-format
+msgctxt "Key status"
+msgid "Status"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:456
+#, kde-format
+msgid "Search for &External Certificates"
+msgstr "Traži &Eksterne certifikate"
+
+#: ui/keyselectiondialog.cpp:470
+#, kde-format
+msgid "&Search for:"
+msgstr "&Potraži:"
+
+#: ui/keyselectiondialog.cpp:494
+#, kde-format
+msgid "&Remember choice"
+msgstr "&Zapamti izbor"
+
+#: ui/keyselectiondialog.cpp:497
+#, kde-format
+msgid ""
+"<qt><p>If you check this box your choice will be stored and you will not be "
+"asked again.</p></qt>"
+msgstr ""
+"<qt><p>Ako popunite ovu kućicu, vaš izbor će biti zapamćen i nećete ponovo "
+"biti pitani.</p></qt>"
+
+#: ui/keyselectiondialog.cpp:509
+#, kde-format
+msgid "&Reread Keys"
+msgstr "&Ponovo pročitaj ključeve"
+
+#: ui/keyselectiondialog.cpp:510
+#, kde-format
+msgid "&Start Certificate Manager"
+msgstr "&Pokreni upravitelj certifikata"
+
+#: ui/keyselectiondialog.cpp:628
+#, kde-format
+msgid "No backends found for listing keys. Check your installation."
+msgstr ""
+"Nijedan pozadinski sistem, za listanje ključeva, nije nađen . Provjerite "
+"vašu instalaciju."
+
+#: ui/keyselectiondialog.cpp:644
+#, kde-format
+msgid "Could not start certificate manager; please check your installation."
+msgstr ""
+"Ne mogu pokrenuti upravitelj certifikatima. Molim provjerite vašu "
+"instalaciju."
+
+#: ui/keyselectiondialog.cpp:646
+#, kde-format
+msgid "Certificate Manager Error"
+msgstr "Greška menadžera certifikata"
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Checking selected keys..."
+msgstr "Provjeravam izabrane ključeve..."
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Fetching keys..."
+msgstr "Dobavljam ključeve..."
+
+#: ui/keyselectiondialog.cpp:731
+#, kde-format
+msgid ""
+"<qt>One backend returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgid_plural ""
+"<qt>%1 backends returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgstr[0] ""
+"<qt>%1 pozadina vratila odsječen izlaz.<p>Svi raspoloživi ključevi nisu "
+"prikazani</p></qt>"
+msgstr[1] ""
+"<qt>%1 pozadine vratile odsječen izlaz.<p>Svi raspoloživi ključevi nisu "
+"prikazani</p></qt>"
+msgstr[2] ""
+"<qt>%1 pozadina vratilo odsječen izlaz.<p>Svi raspoloživi ključevi nisu "
+"prikazani</p></qt>"
+
+#: ui/keyselectiondialog.cpp:736
+#, kde-format
+msgid "Key List Result"
+msgstr "Rezlutat listanja ključeva"
+
+#: ui/keyselectiondialog.cpp:856
+#, kde-format
+msgid "Recheck Key"
+msgstr "Ponovo provjeri ključ"
+
+#: ui/messagebox.cpp:71
+#, kde-format
+msgid "Your system does not have support for GnuPG Audit Logs"
+msgstr "Sistem nema podršku za dnevnike revizija GnuPG-a"
+
+#: ui/messagebox.cpp:72
+#, kde-format
+msgid "System Error"
+msgstr "Sistemska greška"
+
+#: ui/messagebox.cpp:79
+#, kde-format
+msgid ""
+"An error occurred while trying to retrieve the GnuPG Audit Log:\n"
+"%1"
+msgstr ""
+"Greška se desila pri dohvatanju GnuPG dnevnika:\n"
+"%1"
+
+#: ui/messagebox.cpp:81
+#, kde-format
+msgid "GnuPG Audit Log Error"
+msgstr "GnuPG greška u praćenju"
+
+#: ui/messagebox.cpp:88
+#, kde-format
+msgid "No GnuPG Audit Log available for this operation."
+msgstr "Dnevnik revizije GnuPG-a nije dostupan za ovu operaciju."
+
+#: ui/messagebox.cpp:89
+#, kde-format
+msgid "No GnuPG Audit Log"
+msgstr "Nema dnevnika revizije GnuPG-a"
+
+#: ui/messagebox.cpp:109 ui/messagebox.cpp:115
+#, kde-format
+msgid "GnuPG Audit Log Viewer"
+msgstr "Prikazivač dnevnika revizije GnuPG-a"
+
+#: ui/messagebox.cpp:121
+#, kde-format
+msgid "Signing failed: %1"
+msgstr "Potpisivanje nije uspelo: %1"
+
+#: ui/messagebox.cpp:122
+#, kde-format
+msgid "Signing successful"
+msgstr "Potpisivanje uspješno"
+
+#: ui/messagebox.cpp:133
+#, kde-format
+msgid "Encryption failed: %1"
+msgstr "Šifrovanje nije uspelo: %1"
+
+#: ui/messagebox.cpp:134
+#, kde-format
+msgid "Encryption successful"
+msgstr "Šifrovanje uspješno"
+
+#: ui/messagebox.cpp:155
+#, kde-format
+msgid "Signing Result"
+msgstr "Rezultat potpisivanja"
+
+#: ui/messagebox.cpp:167
+#, kde-format
+msgid "Signing Error"
+msgstr "Greška potpisivanja"
+
+#: ui/messagebox.cpp:179 ui/messagebox.cpp:203
+#, kde-format
+msgid "Encryption Result"
+msgstr "Rezultat šifrovanja"
+
+#: ui/messagebox.cpp:191 ui/messagebox.cpp:215
+#, kde-format
+msgid "Encryption Error"
+msgstr "Greška šifrovanja"
+
+#: ui/messagebox.cpp:263
+#, kde-format
+msgid "&Show Audit Log"
+msgstr "&Prikaži dnevnik revizije"
+
+#: ui/progressdialog.cpp:91
+#, kde-format
+msgid "%1: %2"
+msgstr "%1: %2"
+
+#~ msgctxt "New X.509 Directory Server"
+#~ msgid "X.509"
+#~ msgstr "X.509"
+
+#~ msgctxt "New OpenPGP Directory Server"
+#~ msgid "OpenPGP"
+#~ msgstr "OpenPGP"
+
+#~ msgid "Scheme"
+#~ msgstr "Shema"
+
+#~ msgid "X.509"
+#~ msgstr "X.509"
+
+#, fuzzy
+#~ msgid ""
+#~ "Select the access scheme (scheme) that the directory service is available "
+#~ "through."
+#~ msgstr ""
+#~ "Odaberite protokol pristupa (shema) kako bi imenički servis bio dostupan "
+#~ "putem."
+
+#~ msgid ""
+#~ "Check this column if this directory service is providing S/MIME (X.509) "
+#~ "certificates."
+#~ msgstr ""
+#~ "Označite u ovom stupcu ako ovaj direktorijski servis pruža S / MIME "
+#~ "(X.509) certifikate."
+
+#~ msgid ""
+#~ "Check this column if this directory service is providing OpenPGP "
+#~ "certificates."
+#~ msgstr ""
+#~ "Označite u ovom stupcu ako ovaj direktorijski servis pruža OpenPGP "
+#~ "certifikate."
+
+#~ msgid "0 - None (no debugging at all)"
+#~ msgstr "0 - Ništa (bez traženja grešaka)"
+
+#~ msgid "1 - Basic (some basic debug messages)"
+#~ msgstr "1 - Osnovno (Osnovne debug poruke)"
+
+#~ msgid "2 - Advanced (more verbose debug messages)"
+#~ msgstr "2 - Napredno (detaljnije debug poruke)"
+
+#~ msgid "3 - Expert (even more detailed messages)"
+#~ msgstr "3 - Ekspert (još detaljnije poruke)"
+
+#~ msgid "4 - Guru (all of the debug messages you can get)"
+#~ msgstr "4 - Guru (sve poruke za traženje grešaka koje se mogu dobiti)"
+
+#~ msgid "General"
+#~ msgstr "Općenito"
+
+#~ msgid "Chiasmus"
+#~ msgstr "Chiasmus"
+
+#~ msgid "Chiasmus command line tool"
+#~ msgstr "Alat komandne linije Chiasmus-a"
+
+#~ msgid "Unsupported protocol \"%1\""
+#~ msgstr "Nepodržan protokol „%1“"
+
+#~ msgid "File \"%1\" does not exist or is not executable."
+#~ msgstr "Datoteka „%1“ ne postoji ili nije izvršna."
+
+#~ msgid "Output from chiasmus"
+#~ msgstr "Rezultat iz chiasmus-a"
+
+#~ msgid "Decryption failed: %1"
+#~ msgstr "Dešifrovanje nije uspjelo: %1"
+
+#~ msgid ""
+#~ "The following was received on stderr:\n"
+#~ "%1"
+#~ msgstr ""
+#~ "Sljedeće je stiglo na stderr:\n"
+#~ "%1"
+
+#~ msgid "Failed to load %1: %2"
+#~ msgstr "Neuspjelo učitavanje %1: %2"
+
+#~ msgid "Library does not contain the symbol \"Chiasmus\"."
+#~ msgstr "Biblioteka ne sadrži simbol „Chiasmus“."
+
+#~ msgid "Scanning directory %1..."
+#~ msgstr "Skeniranje direktorija %1..."
+
+#~ msgid "GpgME"
+#~ msgstr "GpgME"
+
+#~ msgid "GPGME was compiled without support for %1."
+#~ msgstr "GPGME je preveden bez podrške za %1."
+
+#~ msgid "Engine %1 is not installed properly."
+#~ msgstr "Engine %1 nije ispravno instaliran."
+
+#~ msgid "Engine %1 version %2 installed, but at least version %3 is required."
+#~ msgstr ""
+#~ "Instaliran je engine %1 verzije %2, ali neophodna je bar verzija %3."
+
+#~ msgid "Unknown problem with engine for protocol %1."
+#~ msgstr "Nepoznat problem sa engine-om za protokol %1."
+
+#~ msgid "program terminated unexpectedly"
+#~ msgstr "program završio neočekivano"
+
+#~ msgid "program not found or cannot be started"
+#~ msgstr "program nije pronađen ili ne može biti pokrenut"
+
+#~ msgid "<qt>Failed to execute gpgconf:<p>%1</p></qt>"
+#~ msgstr "<qt>Nisam uspio izvršiti gpgconf:<p>%1</p></qt>"
+
+#~ msgid ""
+#~ "Could not start gpgconf.\n"
+#~ "Check that gpgconf is in the PATH and that it can be started."
+#~ msgstr ""
+#~ "Ne mogu pokrenuti gpgconf.\n"
+#~ "Provjerite da gpgconf je u PATH i da može biti pokrenut."
+
+#~ msgid "Error from gpgconf while saving configuration: %1"
+#~ msgstr "Greška od gpgconf u toku snimanja podešavanja: %1"
+
+#~ msgid "Generating DSA key..."
+#~ msgstr "Pravim DSA ključ..."
+
+#~ msgid "Generating ElGamal key..."
+#~ msgstr "Pravim ElGamal ključ..."
+
+#~ msgid "Searching for a large prime number..."
+#~ msgstr "Tražim veliki prost broj..."
+
+#~ msgid ""
+#~ "Waiting for new entropy from random number generator (you might want to "
+#~ "exercise the harddisks or move the mouse)..."
+#~ msgstr ""
+#~ "Čekam na novu entropiju od generatora slučajnih brojeva (mogli biste da "
+#~ "zaposlite hard-disk ili da pomjerate miš)..."
+
+#~ msgid "Please wait..."
+#~ msgstr "Sačekajte..."
+
+#~ msgid ""
+#~ "Starting gpg-agent (you should consider starting a global instance "
+#~ "instead)..."
+#~ msgstr ""
+#~ "Pokrećem gpg-agent (razmotrite da pokrenete globalni primjerak umjesto "
+#~ "ovoga)..."
+
+#~ msgid "While scanning for %1 support in backend %2:"
+#~ msgstr "Pri skeniranju za %1 podrškom u pozadinskom sistemu %2:"
+
+#~ msgctxt "progress info: \"%1 of %2\""
+#~ msgid "%1/%2"
+#~ msgstr "%1/%2"
+
+#~ msgid ""
+#~ "OpenPGP key for %1\n"
+#~ "Created: %2\n"
+#~ "Expiry: %3\n"
+#~ "Fingerprint: %4"
+#~ msgstr ""
+#~ "OpenPGP ključ za %1\n"
+#~ "Napravljen: %2\n"
+#~ "Ističe: %3\n"
+#~ "Otisak: %4"
+
+#~ msgid ""
+#~ "S/MIME key for %1\n"
+#~ "Created: %2\n"
+#~ "Expiry: %3\n"
+#~ "Fingerprint: %4\n"
+#~ "Issuer: %5"
+#~ msgstr ""
+#~ "S/MIME ključ za %1\n"
+#~ "Napravljen: %2\n"
+#~ "Ističe: %3\n"
+#~ "Otisak: %4\n"
+#~ "Izdavač: %5"
+
+#~ msgid "Copy Audit Log to Clipboard"
+#~ msgstr "Kopiraj dnevnik revizije u klipbord"
+
+#~ msgid "Add or Change Directory Service"
+#~ msgstr "Dodaj ili izmijeni servis direktorija"
+
+#~ msgid "&Server name:"
+#~ msgstr "Ime &servera:"
+
+#~ msgid "389"
+#~ msgstr "389"
+
+#~ msgid "&User name (optional):"
+#~ msgstr "&Korisničko ime (opciono):"
+
+#~ msgid "Pass&word (optional):"
+#~ msgstr "&Šifra(opciono):"
+
+#~ msgid "&OK"
+#~ msgstr "&U redu"
+
+#~ msgid "&Cancel"
+#~ msgstr "&Odustani"
+
+#~ msgid "&Base DN:"
+#~ msgstr "&Bazni DN:"
+
+#~ msgid "&Port:"
+#~ msgstr "&Port:"
--- /dev/null
+# Translation of libkleopatra.po to Catalan
+# Copyright (C) 2004-2017 This_file_is_part_of_KDE
+#
+# Albert Astals Cid <aacid@kde.org>, 2004, 2005.
+# Sebastià Pla i Sanz <sps@sastia.com>, 2004.
+# Josep Ma. Ferrer <txemaq@gmail.com>, 2006, 2007, 2008, 2010, 2011, 2012, 2014, 2015, 2016, 2017.
+# Manuel Tortosa Moreno <manutortosa@gmail.com>, 2009, 2010.
+# Antoni Bella Pérez <antonibella5@yahoo.com>, 2013, 2014, 2016, 2017.
+msgid ""
+msgstr ""
+"Project-Id-Version: libkleopatra\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2017-07-12 06:56+0200\n"
+"PO-Revision-Date: 2017-11-01 10:04+0100\n"
+"Last-Translator: Josep Ma. Ferrer <txemaq@gmail.com>\n"
+"Language-Team: Catalan <kde-i18n-ca@kde.org>\n"
+"Language: ca\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Lokalize 2.0\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Accelerator-Marker: &\n"
+
+#: kleo/checksumdefinition.cpp:107
+#, kde-format
+msgid "Error in checksum definition %1: %2"
+msgstr "Error en la definició de la suma de verificació %1: %2"
+
+#: kleo/checksumdefinition.cpp:157
+#, kde-format
+msgid "Cannot use both %f and | in '%1'"
+msgstr "No es pot utilitzar %f i | a la vegada en «%1»"
+
+#: kleo/checksumdefinition.cpp:167
+#, kde-format
+msgid "Quoting error in '%1' entry"
+msgstr "Error de citació a l'entrada «%1»"
+
+#: kleo/checksumdefinition.cpp:170
+#, kde-format
+msgid "'%1' too complex (would need shell)"
+msgstr "«%1» massa complexa (podria necessitar intèrpret)"
+
+#: kleo/checksumdefinition.cpp:174
+#, kde-format
+msgid "'%1' entry is empty/missing"
+msgstr "L'entrada «%1» és buida/falta"
+
+#: kleo/checksumdefinition.cpp:183
+#, kde-format
+msgid "'%1' empty or not found"
+msgstr "«%1» buida o no trobada"
+
+#: kleo/checksumdefinition.cpp:222
+#, kde-format
+msgid "'id' entry is empty/missing"
+msgstr "L'entrada «id» és buida/falta"
+
+#: kleo/checksumdefinition.cpp:225
+#, kde-format
+msgid "'output-file' entry is empty/missing"
+msgstr "L'entrada «output-file» és buida/falta"
+
+#: kleo/checksumdefinition.cpp:228
+#, kde-format
+msgid "'file-patterns' entry is empty/missing"
+msgstr "l'entrada «file-patterns» és buida/falta"
+
+#: kleo/checksumdefinition.cpp:395
+#, kde-format
+msgid "Caught unknown exception in group %1"
+msgstr "S'ha detectat una excepció desconeguda en el grup %1"
+
+#: kleo/dn.cpp:507
+#, kde-format
+msgid "Common name"
+msgstr "Nom comú"
+
+#: kleo/dn.cpp:508
+#, kde-format
+msgid "Surname"
+msgstr "Cognom"
+
+#: kleo/dn.cpp:509
+#, kde-format
+msgid "Given name"
+msgstr "Nom de pila"
+
+#: kleo/dn.cpp:510
+#, kde-format
+msgid "Location"
+msgstr "Ubicació"
+
+#: kleo/dn.cpp:511
+#, kde-format
+msgid "Title"
+msgstr "Títol"
+
+#: kleo/dn.cpp:512
+#, kde-format
+msgid "Organizational unit"
+msgstr "Unitat organitzativa"
+
+#: kleo/dn.cpp:513
+#, kde-format
+msgid "Organization"
+msgstr "Organització"
+
+#: kleo/dn.cpp:514
+#, kde-format
+msgid "Postal code"
+msgstr "Codi postal"
+
+#: kleo/dn.cpp:515
+#, kde-format
+msgid "Country code"
+msgstr "Codi de país"
+
+#: kleo/dn.cpp:516
+#, kde-format
+msgid "State or province"
+msgstr "Estat o província"
+
+#: kleo/dn.cpp:517
+#, kde-format
+msgid "Domain component"
+msgstr "Component de domini"
+
+#: kleo/dn.cpp:518
+#, kde-format
+msgid "Business category"
+msgstr "Categoria de negoci"
+
+#: kleo/dn.cpp:519
+#, kde-format
+msgid "Email address"
+msgstr "Adreça de correu-e"
+
+#: kleo/dn.cpp:520
+#, kde-format
+msgid "Mail address"
+msgstr "Adreça de correu"
+
+#: kleo/dn.cpp:521
+#, kde-format
+msgid "Mobile phone number"
+msgstr "Número de telèfon mòbil"
+
+#: kleo/dn.cpp:522
+#, kde-format
+msgid "Telephone number"
+msgstr "Número de telèfon"
+
+#: kleo/dn.cpp:523
+#, kde-format
+msgid "Fax number"
+msgstr "Número de fax"
+
+#: kleo/dn.cpp:524
+#, kde-format
+msgid "Street address"
+msgstr "Carrer de l'adreça"
+
+#: kleo/dn.cpp:525
+#, kde-format
+msgid "Unique ID"
+msgstr "ID únic"
+
+#: kleo/enum.cpp:57
+#, kde-format
+msgid "Inline OpenPGP (deprecated)"
+msgstr "OpenPGP inclòs (desaprovat)"
+
+#: kleo/enum.cpp:62
+#, kde-format
+msgid "OpenPGP/MIME"
+msgstr "OpenPGP/MIME"
+
+#: kleo/enum.cpp:67 ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "S/MIME"
+msgstr "S/MIME"
+
+#: kleo/enum.cpp:72
+#, kde-format
+msgid "S/MIME Opaque"
+msgstr "S/MIME opac"
+
+#: kleo/enum.cpp:104
+#, kde-format
+msgid "Any"
+msgstr "Qualsevol"
+
+#: kleo/enum.cpp:177
+#, kde-format
+msgid "Never Encrypt"
+msgstr "No encriptis mai"
+
+#: kleo/enum.cpp:179
+#, kde-format
+msgid "Always Encrypt"
+msgstr "Encripta sempre"
+
+#: kleo/enum.cpp:181
+#, kde-format
+msgid "Always Encrypt If Possible"
+msgstr "Encripta sempre que sigui possible"
+
+#: kleo/enum.cpp:183 kleo/enum.cpp:240
+#, kde-format
+msgid "Ask"
+msgstr "Pregunta"
+
+#: kleo/enum.cpp:185 kleo/enum.cpp:242
+#, kde-format
+msgid "Ask Whenever Possible"
+msgstr "Pregunta quan sigui possible"
+
+#: kleo/enum.cpp:187
+#, kde-kuit-format
+msgctxt "no specific preference"
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>cap</placeholder>"
+
+#: kleo/enum.cpp:234
+#, kde-format
+msgid "Never Sign"
+msgstr "No signis mai"
+
+#: kleo/enum.cpp:236
+#, kde-format
+msgid "Always Sign"
+msgstr "Signa sempre"
+
+#: kleo/enum.cpp:238
+#, kde-format
+msgid "Always Sign If Possible"
+msgstr "Signa sempre que sigui possible"
+
+#: kleo/enum.cpp:244
+#, kde-format
+msgctxt "no specific preference"
+msgid "<none>"
+msgstr "<cap>"
+
+#: kleo/keyfiltermanager.cpp:85
+#, kde-format
+msgid "All Certificates"
+msgstr "Tots els certificats"
+
+#: kleo/keyfiltermanager.cpp:100
+#, kde-format
+msgid "My Certificates"
+msgstr "Els meus certificats"
+
+#: kleo/keyfiltermanager.cpp:118
+#, kde-format
+msgid "Trusted Certificates"
+msgstr "Certificats fiables"
+
+#: kleo/keyfiltermanager.cpp:135
+#, kde-format
+msgid "Fully Trusted Certificates"
+msgstr "Certificats completament fiables"
+
+#: kleo/keyfiltermanager.cpp:152
+#, kde-format
+msgid "Other Certificates"
+msgstr "Altres certificats"
+
+#: kleo/keyfiltermanager.cpp:166
+#, kde-format
+msgid "VS-compliant Certificates"
+msgstr "Certificats conformes amb VS"
+
+#: kleo/keyfiltermanager.cpp:184
+#, kde-format
+msgid "Not validated Certificates"
+msgstr "Certificats sense validar"
+
+#: ui/auditlogviewer.cpp:49
+#, kde-format
+msgid "View GnuPG Audit Log"
+msgstr "Visualitza el registre d'auditoria del GnuPG"
+
+#: ui/auditlogviewer.cpp:53
+#, kde-format
+msgid "&Copy to Clipboard"
+msgstr "&Copia al porta-retalls"
+
+#: ui/auditlogviewer.cpp:59
+#, kde-format
+msgid "&Save to Disk..."
+msgstr "De&sa al disc..."
+
+#: ui/auditlogviewer.cpp:95
+#, kde-format
+msgid "Choose File to Save GnuPG Audit Log to"
+msgstr ""
+"Seleccioneu el fitxer en el qual es desarà el registre d'auditoria del GnuPG"
+
+#: ui/auditlogviewer.cpp:118
+#, kde-format
+msgid "Could not save to file \"%1\": %2"
+msgstr "No s'ha pogut desar al fitxer «%1»: %2"
+
+#: ui/auditlogviewer.cpp:120
+#, kde-format
+msgid "File Save Error"
+msgstr "Error en desar el fitxer"
+
+#: ui/cryptoconfigdialog.cpp:44
+#, kde-format
+msgid "Configure GnuPG Backend"
+msgstr "Configura el dorsal del GnuPG"
+
+#: ui/cryptoconfigdialog.cpp:55
+#, kde-format
+msgid "&Reset"
+msgstr "&Inicialitza"
+
+#: ui/cryptoconfigmodule.cpp:160
+#, kde-format
+msgid "GpgConf Error"
+msgstr "Error del GpgConf"
+
+#: ui/cryptoconfigmodule.cpp:216
+#, kde-format
+msgid ""
+"The gpgconf tool used to provide the information for this dialog does not "
+"seem to be installed properly. It did not return any components. Try running "
+"\"%1\" on the command line for more information."
+msgstr ""
+"L'eina «gpgconf» utilitzada per a proporcionar la informació d'aquest diàleg "
+"sembla que no està instal·lada correctament. No retorna cap component. "
+"Proveu d'executar «%1» des de la línia d'ordres per a més informació."
+
+#: ui/cryptoconfigmodule.cpp:496
+#, kde-format
+msgctxt ""
+"Translate this to 'yes' or 'no' (use the English words!) depending on "
+"whether your language uses Sentence style capitalisation in GUI labels (yes) "
+"or not (no). Context: We get some backend strings in that have the wrong "
+"capitalizaion (in English, at least) so we need to force the first character "
+"to upper-case. It is this behaviour you can control for your language with "
+"this translation."
+msgid "yes"
+msgstr "yes"
+
+#: ui/cryptoconfigmodule.cpp:546
+#, kde-format
+msgid "0 - None"
+msgstr "0 - Cap"
+
+#: ui/cryptoconfigmodule.cpp:547
+#, kde-format
+msgid "1 - Basic"
+msgstr "1 - Bàsic"
+
+#: ui/cryptoconfigmodule.cpp:548
+#, kde-format
+msgid "2 - Verbose"
+msgstr "2 - Detallada"
+
+#: ui/cryptoconfigmodule.cpp:549
+#, kde-format
+msgid "3 - More Verbose"
+msgstr "3 - Més detallada"
+
+#: ui/cryptoconfigmodule.cpp:550
+#, kde-format
+msgid "4 - All"
+msgstr "4 - Tot"
+
+#: ui/cryptoconfigmodule.cpp:559
+#, kde-format
+msgid "Set the debugging level to"
+msgstr "Fixa el nivell de depuració a"
+
+#: ui/cryptoconfigmodule.cpp:787
+#, kde-format
+msgid "Show..."
+msgstr "Mostra..."
+
+#: ui/cryptoconfigmodule.cpp:787 ui/cryptoconfigmodule.cpp:876
+#, kde-format
+msgid "Edit..."
+msgstr "Edita..."
+
+#: ui/cryptoconfigmodule.cpp:841
+#, kde-format
+msgid "Configure LDAP Servers"
+msgstr "Configura els servidors LDAP"
+
+#: ui/cryptoconfigmodule.cpp:862
+#, kde-format
+msgid "None configured"
+msgstr "Sense configurar"
+
+#: ui/cryptoconfigmodule.cpp:864
+#, kde-format
+msgid "1 server configured"
+msgid_plural "%1 servers configured"
+msgstr[0] "S'ha configurat 1 servidor"
+msgstr[1] "S'han configurat %1 servidors"
+
+#: ui/cryptoconfigmodule.cpp:879
+#, kde-format
+msgid "Use keyserver at"
+msgstr "Usa el servidor de claus a"
+
+#: ui/cryptoconfigmodule.cpp:968
+#, kde-format
+msgid "Configure Keyservers"
+msgstr "Configura els servidors de claus"
+
+#: ui/directoryserviceswidget.cpp:67
+#, kde-format
+msgctxt "default server name, keep it a valid domain name, ie. no spaces"
+msgid "server"
+msgstr "servidor"
+
+#: ui/directoryserviceswidget.cpp:95
+#, kde-format
+msgid "hkp"
+msgstr "hkp"
+
+#: ui/directoryserviceswidget.cpp:96
+#, kde-format
+msgid "http"
+msgstr "http"
+
+#: ui/directoryserviceswidget.cpp:97
+#, kde-format
+msgid "https"
+msgstr "https"
+
+#: ui/directoryserviceswidget.cpp:98
+#, kde-format
+msgid "ftp"
+msgstr "ftp"
+
+#: ui/directoryserviceswidget.cpp:99
+#, kde-format
+msgid "ftps"
+msgstr "ftps"
+
+#: ui/directoryserviceswidget.cpp:100
+#, kde-format
+msgid "ldap"
+msgstr "ldap"
+
+#: ui/directoryserviceswidget.cpp:101
+#, kde-format
+msgid "ldaps"
+msgstr "ldaps"
+
+#: ui/directoryserviceswidget.cpp:588
+#, kde-format
+msgid "Server Name"
+msgstr "Nom del servidor"
+
+#: ui/directoryserviceswidget.cpp:589
+#, kde-format
+msgid "Server Port"
+msgstr "Port del servidor"
+
+#: ui/directoryserviceswidget.cpp:590
+#, kde-format
+msgid "Base DN"
+msgstr "DN base"
+
+#: ui/directoryserviceswidget.cpp:591
+#, kde-format
+msgid "User Name"
+msgstr "Nom d'usuari"
+
+#: ui/directoryserviceswidget.cpp:592
+#, kde-format
+msgid "Password"
+msgstr "Contrasenya"
+
+#: ui/directoryserviceswidget.cpp:614
+#, kde-format
+msgid "(read-only)"
+msgstr "(només lectura)"
+
+#: ui/directoryserviceswidget.cpp:616
+#, kde-format
+msgctxt "amended tooltip; %1: original tooltip"
+msgid "%1 (read-only)"
+msgstr "%1 (només lectura)"
+
+#: ui/directoryserviceswidget.cpp:739
+#, kde-format
+msgid ""
+"Enter the name or IP address of the server hosting the directory service."
+msgstr ""
+"Introduïu el nom o l'adreça IP del servidor que hostatja el servei de "
+"directori."
+
+#: ui/directoryserviceswidget.cpp:741
+#, kde-format
+msgid ""
+"<b>(Optional, the default is fine in most cases)</b> Pick the port number "
+"the directory service is listening on."
+msgstr ""
+"<b>(Opcional, en la majoria dels casos el predeterminat és correcte)</b> "
+"Trieu el número de port que el servei de directori està escoltant."
+
+#: ui/directoryserviceswidget.cpp:744
+#, kde-format
+msgid ""
+"<b>(Only for LDAP)</b> Enter the base DN for this LDAP server to limit "
+"searches to only that subtree of the directory."
+msgstr ""
+"<b>(Només per LDAP)</b> Introduïu el DN base per aquest servidor LDAP per a "
+"limitar les cerques a només aquest subarbre del directori."
+
+#: ui/directoryserviceswidget.cpp:747
+#, kde-format
+msgid "<b>(Optional)</b> Enter your user name here, if needed."
+msgstr "<b>(Opcional)</b> Introduïu aquí el nom d'usuari, si cal."
+
+#: ui/directoryserviceswidget.cpp:749
+#, kde-format
+msgid ""
+"<b>(Optional, not recommended)</b> Enter your password here, if needed. Note "
+"that the password will be saved in the clear in a config file in your home "
+"directory."
+msgstr ""
+"<b>(Opcional, no recomanat)</b> Introduïu aquí la contrasenya, si cal. "
+"Tingueu en compte que la contrasenya es desarà en clar en un fitxer de "
+"configuració en el vostre directori personal."
+
+#. i18n: ectx: property (windowTitle), widget (QWidget, DirectoryServicesWidget)
+#: ui/directoryserviceswidget.ui:14
+#, kde-format
+msgid "Directory Services Configuration"
+msgstr "Configuració dels serveis de directori"
+
+#. i18n: ectx: property (text), widget (QLabel, pgpKSLabel)
+#: ui/directoryserviceswidget.ui:22
+#, kde-format
+msgid "OpenPGP Keyserver:"
+msgstr "Servidor de claus OpenPGP:"
+
+#. i18n: ectx: property (title), widget (QGroupBox, x500LA)
+#: ui/directoryserviceswidget.ui:35
+#, kde-format
+msgid "X509 Directory services:"
+msgstr "Serveis de directori X509:"
+
+#. i18n: ectx: property (whatsThis), widget (QTreeView, treeView)
+#: ui/directoryserviceswidget.ui:43
+#, kde-format
+msgid ""
+"This is a list of all directory services that are configured for use with "
+"X.509."
+msgstr ""
+"Aquest és una llista de tots els serveis de directori que estan configurats "
+"per a usar amb X.509."
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:70
+#, kde-format
+msgid "Click to add a service"
+msgstr "Cliqueu per afegir un servei"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:73
+#, kde-format
+msgid ""
+"Click this button to create a new directory service entry as a clone of the "
+"currently selected one (or with default values, if no other is selected). "
+"You can then configure details in the table on the left hand."
+msgstr ""
+"Cliqueu aquest botó per a crear un servei de directori nou com a clon del "
+"seleccionat (o amb els valors per omissió si no n'hi ha cap de seleccionat). "
+"Podeu configurar els detalls a la taula de mà esquerra."
+
+#. i18n: ectx: property (text), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:76
+#, kde-format
+msgid "New"
+msgstr "Nou"
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:92
+#, kde-format
+msgid "Click to remove the currently selected service"
+msgstr "Cliqueu per eliminar el servei seleccionat"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:95
+#, kde-format
+msgid ""
+"Click this button to remove the currently selected directory service. The "
+"change will only take effect once you acknowledge the main configuration "
+"dialog."
+msgstr ""
+"Cliqueu aquest botó per eliminar el servei de directori seleccionat. El "
+"canvi només tindrà efecte quan confirmeu el diàleg de configuració del "
+"correu."
+
+#. i18n: ectx: property (text), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:98
+#, kde-format
+msgid "Delete"
+msgstr "Suprimeix"
+
+#. i18n: ectx: property (whatsThis), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:128
+#, kde-format
+msgid ""
+"Use this option to switch display of username and password information on or "
+"off in the above table."
+msgstr ""
+"Useu aquesta opció per a commutar la visualització de la informació del nom "
+"d'usuari i contrasenya a la taula superior."
+
+#. i18n: ectx: property (text), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:131
+#, kde-format
+msgid "Show user and password information"
+msgstr "Mostra la informació d'usuari i contrasenya"
+
+#: ui/dnattributeorderconfigwidget.cpp:73
+#, kde-format
+msgid "Description"
+msgstr "Descripció"
+
+#: ui/dnattributeorderconfigwidget.cpp:91
+#, kde-format
+msgid "Available attributes:"
+msgstr "Atributs disponibles:"
+
+#: ui/dnattributeorderconfigwidget.cpp:92
+#, kde-format
+msgid "Current attribute order:"
+msgstr "Ordre actual dels atributs:"
+
+#: ui/dnattributeorderconfigwidget.cpp:112
+#, kde-format
+msgid "All others"
+msgstr "Tots els altres"
+
+#: ui/dnattributeorderconfigwidget.cpp:129
+#, kde-format
+msgid "Move to top"
+msgstr "Mou a dalt de tot"
+
+#: ui/dnattributeorderconfigwidget.cpp:130
+#, kde-format
+msgid "Move one up"
+msgstr "Mou un amunt"
+
+#: ui/dnattributeorderconfigwidget.cpp:131
+#, kde-format
+msgid "Remove from current attribute order"
+msgstr "Elimina de l'ordre actual dels atributs"
+
+#: ui/dnattributeorderconfigwidget.cpp:132
+#, kde-format
+msgid "Add to current attribute order"
+msgstr "Afegeix a l'ordre actual dels atributs"
+
+#: ui/dnattributeorderconfigwidget.cpp:133
+#, kde-format
+msgid "Move one down"
+msgstr "Mou un avall"
+
+#: ui/dnattributeorderconfigwidget.cpp:134
+#, kde-format
+msgid "Move to bottom"
+msgstr "Mou al fons"
+
+#: ui/keyapprovaldialog.cpp:87
+#, kde-kuit-format
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>cap</placeholder>"
+
+#: ui/keyapprovaldialog.cpp:88
+#, kde-format
+msgid "Never Encrypt with This Key"
+msgstr "No encriptis mai amb aquesta clau"
+
+#: ui/keyapprovaldialog.cpp:89
+#, kde-format
+msgid "Always Encrypt with This Key"
+msgstr "Encripta sempre amb aquesta clau"
+
+#: ui/keyapprovaldialog.cpp:90
+#, kde-format
+msgid "Encrypt Whenever Encryption is Possible"
+msgstr "Encripta sempre que l'encriptatge sigui possible"
+
+#: ui/keyapprovaldialog.cpp:91
+#, kde-format
+msgid "Always Ask"
+msgstr "Pregunta sempre"
+
+#: ui/keyapprovaldialog.cpp:92
+#, kde-format
+msgid "Ask Whenever Encryption is Possible"
+msgstr "Pregunta sempre que l'encriptatge sigui possible"
+
+#: ui/keyapprovaldialog.cpp:113
+#, kde-format
+msgid "Encryption Key Approval"
+msgstr "Aprovació de la clau d'encriptatge"
+
+#: ui/keyapprovaldialog.cpp:129
+#, kde-format
+msgid "The following keys will be used for encryption:"
+msgstr "Per a l'encriptatge s'empraran les següents claus:"
+
+#: ui/keyapprovaldialog.cpp:145
+#, kde-format
+msgid "Your keys:"
+msgstr "Les vostres claus:"
+
+#: ui/keyapprovaldialog.cpp:157
+#, kde-format
+msgid "Recipient:"
+msgstr "Destinatari:"
+
+#: ui/keyapprovaldialog.cpp:162
+#, kde-format
+msgid "Encryption keys:"
+msgstr "Claus d'encriptatge:"
+
+#: ui/keyapprovaldialog.cpp:169
+#, kde-format
+msgid "Encryption preference:"
+msgstr "Preferències de l'encriptatge:"
+
+#: ui/keyrequester.cpp:118
+#, kde-format
+msgid "Clear"
+msgstr "Neteja"
+
+#: ui/keyrequester.cpp:121
+#, kde-format
+msgid "Change..."
+msgstr "Canvia..."
+
+#: ui/keyrequester.cpp:232 ui/keyselectiondialog.cpp:256
+#, kde-kuit-format
+msgid "<placeholder>unknown</placeholder>"
+msgstr "<placeholder>desconegut</placeholder>"
+
+#: ui/keyrequester.cpp:246 ui/keyselectiondialog.cpp:657
+#, kde-format
+msgid ""
+"<qt><p>An error occurred while fetching the keys from the backend:</p><p><b>"
+"%1</b></p></qt>"
+msgstr ""
+"<qt><p>S'ha produït un error en obtenir les claus des del dorsal:</p><p><b>"
+"%1</b></p></qt>"
+
+#: ui/keyrequester.cpp:251 ui/keyrequester.cpp:283 ui/keyrequester.cpp:306
+#: ui/keyselectiondialog.cpp:630 ui/keyselectiondialog.cpp:662
+#, kde-format
+msgid "Key Listing Failed"
+msgstr "El llistat de claus ha fallat"
+
+#: ui/keyrequester.cpp:281
+#, kde-format
+msgid ""
+"The OpenPGP backend does not support listing keys. Check your installation."
+msgstr ""
+"El dorsal OpenPGP no permet el llistat de claus. Comproveu la instal·lació."
+
+#: ui/keyrequester.cpp:304
+#, kde-format
+msgid ""
+"The S/MIME backend does not support listing keys. Check your installation."
+msgstr ""
+"El dorsal S/MIME no permet el llistat de claus. Comproveu la instal·lació."
+
+#: ui/keyrequester.cpp:426
+#, kde-format
+msgid "OpenPGP Key Selection"
+msgstr "Selecció de la clau OpenPGP"
+
+#: ui/keyrequester.cpp:427
+#, kde-format
+msgid "Please select an OpenPGP key to use."
+msgstr "Si us plau, seleccioneu una clau OpenPGP a usar."
+
+#: ui/keyrequester.cpp:429
+#, kde-format
+msgid "S/MIME Key Selection"
+msgstr "Selecció de la clau S/MIME"
+
+#: ui/keyrequester.cpp:430
+#, kde-format
+msgid "Please select an S/MIME key to use."
+msgstr "Si us plau, seleccioneu una clau S/MIME a usar."
+
+#: ui/keyrequester.cpp:432
+#, kde-format
+msgid "Key Selection"
+msgstr "Selecció de la clau"
+
+#: ui/keyrequester.cpp:433
+#, kde-format
+msgid "Please select an (OpenPGP or S/MIME) key to use."
+msgstr "Si us plau, seleccioneu una clau (OpenPGP o S/MIME) a usar."
+
+#: ui/keyselectioncombo.cpp:195
+#, kde-format
+msgctxt "Name <email> (validity, type, created: date)"
+msgid "%1 (%2, %3, created: %4)"
+msgstr "%1 (%2, %3 creada: %4)"
+
+#: ui/keyselectioncombo.cpp:196
+#, kde-format
+msgctxt "Name <email>"
+msgid "%1 <%2>"
+msgstr "%1 <%2>"
+
+#: ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "OpenPGP"
+msgstr "OpenPGP"
+
+#: ui/keyselectioncombo.cpp:347
+#, kde-format
+msgid "Loading keys ..."
+msgstr "S'estan carregant les claus..."
+
+#: ui/keyselectiondialog.cpp:98
+#, kde-format
+msgid "The key is not valid."
+msgstr "La clau no és vàlida."
+
+#: ui/keyselectiondialog.cpp:106
+#, kde-format
+msgid "The key is expired."
+msgstr "La clau ha caducat."
+
+#: ui/keyselectiondialog.cpp:110
+#, kde-format
+msgid "The key is revoked."
+msgstr "La clau està revocada."
+
+#: ui/keyselectiondialog.cpp:114
+#, kde-format
+msgid "The key is disabled."
+msgstr "La clau està desactivada."
+
+#: ui/keyselectiondialog.cpp:122
+#, kde-format
+msgid "The key is not designated for encryption."
+msgstr "La clau no s'ha designat per encriptatge."
+
+#: ui/keyselectiondialog.cpp:128
+#, kde-format
+msgid "The key is not designated for signing."
+msgstr "La clau no s'ha designat per signatura."
+
+#: ui/keyselectiondialog.cpp:134
+#, kde-format
+msgid "The key is not designated for certifying."
+msgstr "La clau no s'ha designat per certificar."
+
+#: ui/keyselectiondialog.cpp:140
+#, kde-format
+msgid "The key is not designated for authentication."
+msgstr "La clau no s'ha designat per autentificar."
+
+#: ui/keyselectiondialog.cpp:148
+#, kde-format
+msgid "The key is not secret."
+msgstr "La clau no és secreta."
+
+#: ui/keyselectiondialog.cpp:163
+#, kde-format
+msgid "The key is not trusted enough."
+msgstr "La clau no té confiança suficient."
+
+#: ui/keyselectiondialog.cpp:169
+#, kde-format
+msgid "The key can be used."
+msgstr "La clau es pot usar."
+
+#: ui/keyselectiondialog.cpp:230
+#, kde-format
+msgid "Key ID"
+msgstr "ID de la clau"
+
+#: ui/keyselectiondialog.cpp:231
+#, kde-format
+msgid "User ID"
+msgstr "ID de l'usuari"
+
+#: ui/keyselectiondialog.cpp:279
+#, kde-format
+msgid "never"
+msgstr "mai"
+
+#: ui/keyselectiondialog.cpp:289 ui/keyselectiondialog.cpp:291
+#: ui/keyselectiondialog.cpp:300 ui/keyselectiondialog.cpp:302
+#, kde-format
+msgid "unknown"
+msgstr "desconegut"
+
+#: ui/keyselectiondialog.cpp:289
+#, kde-format
+msgid "OpenPGP key for <b>%1</b>"
+msgstr "Clau OpenPGP per <b>%1</b>"
+
+#: ui/keyselectiondialog.cpp:291
+#, kde-format
+msgid "S/MIME key for <b>%1</b>"
+msgstr "Clau S/MIME per <b>%1</b>"
+
+#: ui/keyselectiondialog.cpp:298
+#, kde-format
+msgctxt "Key creation date"
+msgid "Created"
+msgstr "Creada"
+
+#: ui/keyselectiondialog.cpp:299
+#, kde-format
+msgctxt "Key Expiration date"
+msgid "Expiry"
+msgstr "Caducitat"
+
+#: ui/keyselectiondialog.cpp:300
+#, kde-format
+msgctxt "Key fingerprint"
+msgid "Fingerprint"
+msgstr "Empremta digital"
+
+#: ui/keyselectiondialog.cpp:302
+#, kde-format
+msgctxt "Key issuer"
+msgid "Issuer"
+msgstr "Emissor"
+
+#: ui/keyselectiondialog.cpp:304
+#, kde-format
+msgctxt "Key status"
+msgid "Status"
+msgstr "Estat"
+
+#: ui/keyselectiondialog.cpp:456
+#, kde-format
+msgid "Search for &External Certificates"
+msgstr "Cerca de certificats &externs"
+
+#: ui/keyselectiondialog.cpp:470
+#, kde-format
+msgid "&Search for:"
+msgstr "&Cerca:"
+
+#: ui/keyselectiondialog.cpp:494
+#, kde-format
+msgid "&Remember choice"
+msgstr "&Recorda la tria"
+
+#: ui/keyselectiondialog.cpp:497
+#, kde-format
+msgid ""
+"<qt><p>If you check this box your choice will be stored and you will not be "
+"asked again.</p></qt>"
+msgstr ""
+"<qt><p>Si activeu aquesta casella, es desarà la vostra tria i no se us "
+"tornarà a preguntar.</p></qt>"
+
+#: ui/keyselectiondialog.cpp:509
+#, kde-format
+msgid "&Reread Keys"
+msgstr "&Rellegeix les claus"
+
+#: ui/keyselectiondialog.cpp:510
+#, kde-format
+msgid "&Start Certificate Manager"
+msgstr "En&gega el gestor de certificats"
+
+#: ui/keyselectiondialog.cpp:628
+#, kde-format
+msgid "No backends found for listing keys. Check your installation."
+msgstr ""
+"No s'han trobat dorsals per al llistat de claus. Comproveu la instal·lació."
+
+#: ui/keyselectiondialog.cpp:644
+#, kde-format
+msgid "Could not start certificate manager; please check your installation."
+msgstr ""
+"No s'ha pogut iniciar el gestor de certificats. Comproveu la vostra "
+"instal·lació."
+
+#: ui/keyselectiondialog.cpp:646
+#, kde-format
+msgid "Certificate Manager Error"
+msgstr "Error del gestor de certificats"
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Checking selected keys..."
+msgstr "S'estan comprovant les claus seleccionades..."
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Fetching keys..."
+msgstr "S'estan recuperant les claus..."
+
+#: ui/keyselectiondialog.cpp:731
+#, kde-format
+msgid ""
+"<qt>One backend returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgid_plural ""
+"<qt>%1 backends returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgstr[0] ""
+"<qt>Un dorsal ha retornat una sortida truncada.<p>No es mostren totes les "
+"claus disponibles</p></qt>"
+msgstr[1] ""
+"<qt>%1 dorsals han retornat una sortida truncada.<p>No es mostren totes les "
+"claus disponibles</p></qt>"
+
+#: ui/keyselectiondialog.cpp:736
+#, kde-format
+msgid "Key List Result"
+msgstr "Resultat de la llista de claus"
+
+#: ui/keyselectiondialog.cpp:856
+#, kde-format
+msgid "Recheck Key"
+msgstr "Revisa la clau"
+
+#: ui/messagebox.cpp:71
+#, kde-format
+msgid "Your system does not have support for GnuPG Audit Logs"
+msgstr "Aquest sistema no permet els registres d'auditoria del GnuPG"
+
+#: ui/messagebox.cpp:72
+#, kde-format
+msgid "System Error"
+msgstr "Error del sistema"
+
+#: ui/messagebox.cpp:79
+#, kde-format
+msgid ""
+"An error occurred while trying to retrieve the GnuPG Audit Log:\n"
+"%1"
+msgstr ""
+"S'ha produït un error en intentar recuperar el registre d'auditoria del "
+"GnuPG:\n"
+"%1"
+
+#: ui/messagebox.cpp:81
+#, kde-format
+msgid "GnuPG Audit Log Error"
+msgstr "Error del registre d'auditoria del GnuPG"
+
+#: ui/messagebox.cpp:88
+#, kde-format
+msgid "No GnuPG Audit Log available for this operation."
+msgstr ""
+"No hi ha disponible cap registre d'auditoria del GnuPG per a aquesta "
+"operació."
+
+#: ui/messagebox.cpp:89
+#, kde-format
+msgid "No GnuPG Audit Log"
+msgstr "Sense registre d'auditoria del GnuPG"
+
+#: ui/messagebox.cpp:109 ui/messagebox.cpp:115
+#, kde-format
+msgid "GnuPG Audit Log Viewer"
+msgstr "Visor del registre d'auditoria del GnuPG"
+
+#: ui/messagebox.cpp:121
+#, kde-format
+msgid "Signing failed: %1"
+msgstr "Ha fallat la signatura: %1"
+
+#: ui/messagebox.cpp:122
+#, kde-format
+msgid "Signing successful"
+msgstr "Signatura correcta"
+
+#: ui/messagebox.cpp:133
+#, kde-format
+msgid "Encryption failed: %1"
+msgstr "L'encriptatge ha fallat: %1"
+
+#: ui/messagebox.cpp:134
+#, kde-format
+msgid "Encryption successful"
+msgstr "Encriptatge correcte"
+
+#: ui/messagebox.cpp:155
+#, kde-format
+msgid "Signing Result"
+msgstr "Resultat de la signatura"
+
+#: ui/messagebox.cpp:167
+#, kde-format
+msgid "Signing Error"
+msgstr "Error de la signatura"
+
+#: ui/messagebox.cpp:179 ui/messagebox.cpp:203
+#, kde-format
+msgid "Encryption Result"
+msgstr "Resultat de l'encriptatge"
+
+#: ui/messagebox.cpp:191 ui/messagebox.cpp:215
+#, kde-format
+msgid "Encryption Error"
+msgstr "Error de l'encriptatge"
+
+#: ui/messagebox.cpp:263
+#, kde-format
+msgid "&Show Audit Log"
+msgstr "Mo&stra el registre d'auditoria"
+
+#: ui/progressdialog.cpp:91
+#, kde-format
+msgid "%1: %2"
+msgstr "%1: %2"
+
+#~ msgctxt "New X.509 Directory Server"
+#~ msgid "X.509"
+#~ msgstr "X.509"
+
+#~ msgctxt "New OpenPGP Directory Server"
+#~ msgid "OpenPGP"
+#~ msgstr "OpenPGP"
+
+#~ msgid "Scheme"
+#~ msgstr "Esquema"
+
+#~ msgid "X.509"
+#~ msgstr "X.509"
+
+#~ msgid ""
+#~ "Select the access scheme (scheme) that the directory service is available "
+#~ "through."
+#~ msgstr ""
+#~ "Seleccioneu l'esquema d'accés (esquema) en el que està disponible el "
+#~ "servei de directori."
+
+#~ msgid ""
+#~ "Check this column if this directory service is providing S/MIME (X.509) "
+#~ "certificates."
+#~ msgstr ""
+#~ "Marqueu aquesta columna si aquest servei de directori proporciona "
+#~ "certificats S/MIME (X.509)."
+
+#~ msgid ""
+#~ "Check this column if this directory service is providing OpenPGP "
+#~ "certificates."
+#~ msgstr ""
+#~ "Marqueu aquesta columna si aquest servei de directori proporciona "
+#~ "certificats OpenPGP."
+
+#~ msgid "0 - None (no debugging at all)"
+#~ msgstr "0 - cap (sense cap depuració)"
+
+#~ msgid "1 - Basic (some basic debug messages)"
+#~ msgstr "1 - bàsic (alguns missatges de depuració bàsics)"
+
+#~ msgid "2 - Advanced (more verbose debug messages)"
+#~ msgstr "2 - avançat (missatges de depuració més explícits)"
+
+#~ msgid "3 - Expert (even more detailed messages)"
+#~ msgstr "3 - expert (missatges encara més detallats)"
+
+#~ msgid "4 - Guru (all of the debug messages you can get)"
+#~ msgstr "4 - guru (tots els missatges de depuració disponibles)"
+
+#~ msgid "General"
+#~ msgstr "General"
+
+#~ msgid "Chiasmus"
+#~ msgstr "Chiasmus"
+
+#~ msgid "Chiasmus command line tool"
+#~ msgstr "Eina de línia d'ordres del Chiasmus"
+
+#~ msgid "Unsupported protocol \"%1\""
+#~ msgstr "Protocol no acceptat «%1»"
+
+#~ msgid "File \"%1\" does not exist or is not executable."
+#~ msgstr "El fitxer «%1» no existeix o no és executable."
+
+#~ msgid "Output from chiasmus"
+#~ msgstr "Sortida del «chiasmus»"
+
+#~ msgid "Decryption failed: %1"
+#~ msgstr "Ha fallat el desencriptatge: %1"
+
+#~ msgid ""
+#~ "The following was received on stderr:\n"
+#~ "%1"
+#~ msgstr ""
+#~ "S'ha rebut el següent a stderr:\n"
+#~ "%1"
+
+#~ msgid "Failed to load %1: %2"
+#~ msgstr "Ha fallat en carregar %1: %2"
+
+#~ msgid "Library does not contain the symbol \"Chiasmus\"."
+#~ msgstr "La biblioteca no conté el símbol «Chiasmus»."
+
+#~ msgid "Scanning directory %1..."
+#~ msgstr "S'està explorant el directori %1..."
+
+#~ msgid "GpgME"
+#~ msgstr "GpgME"
+
+#~ msgid "GPGME was compiled without support for %1."
+#~ msgstr "El GPGME s'ha compilat sense poder treballar amb %1."
+
+#~ msgid "Engine %1 is not installed properly."
+#~ msgstr "El motor %1 no està instal·lat correctament."
+
+#~ msgid "Engine %1 version %2 installed, but at least version %3 is required."
+#~ msgstr ""
+#~ "Està instal·lada la versió %2 del motor %1, però cal com a mínim la "
+#~ "versió %3."
+
+#~ msgid "Unknown problem with engine for protocol %1."
+#~ msgstr "Hi ha un problema desconegut amb el motor del protocol %1."
+
+#~ msgid "program terminated unexpectedly"
+#~ msgstr "el programa ha acabat inesperadament"
+
+#~ msgid "program not found or cannot be started"
+#~ msgstr "no s'ha pogut trobar o executar el programa"
+
+#~ msgid "<qt>Failed to execute gpgconf:<p>%1</p></qt>"
+#~ msgstr "<qt>Ha fallat l'execució del «gpgconf»:<p>%1</p></qt>"
+
+#~ msgid ""
+#~ "Could not start gpgconf.\n"
+#~ "Check that gpgconf is in the PATH and that it can be started."
+#~ msgstr ""
+#~ "No s'ha pogut iniciar el «gpgconf».\n"
+#~ "Comproveu que el «gpgconf» es trobi a la vostra PATH i que es pugui "
+#~ "iniciar."
+
+#~ msgid "Error from gpgconf while saving configuration: %1"
+#~ msgstr "Hi ha hagut un error del «gpgconf» en desar la configuració: %1"
+
+#~ msgid "Generating DSA key..."
+#~ msgstr "S'està generant una clau DSA..."
+
+#~ msgid "Generating ElGamal key..."
+#~ msgstr "S'està generant una clau ElGamal..."
+
+#~ msgid "Searching for a large prime number..."
+#~ msgstr "S'està cercant un nombre primer gran..."
+
+#~ msgid ""
+#~ "Waiting for new entropy from random number generator (you might want to "
+#~ "exercise the harddisks or move the mouse)..."
+#~ msgstr ""
+#~ "S'està esperant una entropia nova des del generador de números aleatoris "
+#~ "(potser hauríeu d'exercitar el disc dur o moure el ratolí)..."
+
+#~ msgid "Please wait..."
+#~ msgstr "Espereu un moment..."
+
+#~ msgid ""
+#~ "Starting gpg-agent (you should consider starting a global instance "
+#~ "instead)..."
+#~ msgstr ""
+#~ "S'està engegant el «gpg-agent» (en comptes d'això hauríeu de considerar "
+#~ "engegar una instància global)..."
+
+#~ msgid "While scanning for %1 support in backend %2:"
+#~ msgstr "Mentre s'explora la compatibilitat amb %1 al dorsal %2:"
+
+#~ msgctxt "progress info: \"%1 of %2\""
+#~ msgid "%1/%2"
+#~ msgstr "%1/%2"
+
+#~ msgid ""
+#~ "OpenPGP key for %1\n"
+#~ "Created: %2\n"
+#~ "Expiry: %3\n"
+#~ "Fingerprint: %4"
+#~ msgstr ""
+#~ "Clau OpenPGP per a %1\n"
+#~ "Creada: %2\n"
+#~ "Expira: %3\n"
+#~ "Empremta digital: %4"
+
+#~ msgid ""
+#~ "S/MIME key for %1\n"
+#~ "Created: %2\n"
+#~ "Expiry: %3\n"
+#~ "Fingerprint: %4\n"
+#~ "Issuer: %5"
+#~ msgstr ""
+#~ "Clau S/MIME per a %1\n"
+#~ "Creada: %2\n"
+#~ "Expira: %3\n"
+#~ "Empremta digital: %4\n"
+#~ "Emissor: %5"
+
+#~ msgid "Copy Audit Log to Clipboard"
+#~ msgstr "Copia el registre d'auditoria al porta-retalls"
--- /dev/null
+# Translation of libkleopatra.po to Catalan (Valencian)
+# Copyright (C) 2004-2017 This_file_is_part_of_KDE
+#
+# Albert Astals Cid <aacid@kde.org>, 2004, 2005.
+# Sebastià Pla i Sanz <sps@sastia.com>, 2004.
+# Josep Ma. Ferrer <txemaq@gmail.com>, 2006, 2007, 2008, 2010, 2011, 2012, 2014, 2015, 2016, 2017.
+# Manuel Tortosa Moreno <manutortosa@gmail.com>, 2009, 2010.
+# Antoni Bella Pérez <antonibella5@yahoo.com>, 2013, 2014, 2016, 2017.
+msgid ""
+msgstr ""
+"Project-Id-Version: libkleopatra\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2017-07-12 06:56+0200\n"
+"PO-Revision-Date: 2017-11-01 10:04+0100\n"
+"Last-Translator: Josep Ma. Ferrer <txemaq@gmail.com>\n"
+"Language-Team: Catalan <kde-i18n-ca@kde.org>\n"
+"Language: ca@valencia\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Lokalize 2.0\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Accelerator-Marker: &\n"
+
+#: kleo/checksumdefinition.cpp:107
+#, kde-format
+msgid "Error in checksum definition %1: %2"
+msgstr "Error en la definició de la suma de verificació %1: %2"
+
+#: kleo/checksumdefinition.cpp:157
+#, kde-format
+msgid "Cannot use both %f and | in '%1'"
+msgstr "No es pot utilitzar %f i | a la vegada en «%1»"
+
+#: kleo/checksumdefinition.cpp:167
+#, kde-format
+msgid "Quoting error in '%1' entry"
+msgstr "Error de citació a l'entrada «%1»"
+
+#: kleo/checksumdefinition.cpp:170
+#, kde-format
+msgid "'%1' too complex (would need shell)"
+msgstr "«%1» massa complexa (podria necessitar intèrpret)"
+
+#: kleo/checksumdefinition.cpp:174
+#, kde-format
+msgid "'%1' entry is empty/missing"
+msgstr "L'entrada «%1» és buida/falta"
+
+#: kleo/checksumdefinition.cpp:183
+#, kde-format
+msgid "'%1' empty or not found"
+msgstr "«%1» buida o no trobada"
+
+#: kleo/checksumdefinition.cpp:222
+#, kde-format
+msgid "'id' entry is empty/missing"
+msgstr "L'entrada «id» és buida/falta"
+
+#: kleo/checksumdefinition.cpp:225
+#, kde-format
+msgid "'output-file' entry is empty/missing"
+msgstr "L'entrada «output-file» és buida/falta"
+
+#: kleo/checksumdefinition.cpp:228
+#, kde-format
+msgid "'file-patterns' entry is empty/missing"
+msgstr "l'entrada «file-patterns» és buida/falta"
+
+#: kleo/checksumdefinition.cpp:395
+#, kde-format
+msgid "Caught unknown exception in group %1"
+msgstr "S'ha detectat una excepció desconeguda en el grup %1"
+
+#: kleo/dn.cpp:507
+#, kde-format
+msgid "Common name"
+msgstr "Nom comú"
+
+#: kleo/dn.cpp:508
+#, kde-format
+msgid "Surname"
+msgstr "Cognom"
+
+#: kleo/dn.cpp:509
+#, kde-format
+msgid "Given name"
+msgstr "Nom de pila"
+
+#: kleo/dn.cpp:510
+#, kde-format
+msgid "Location"
+msgstr "Ubicació"
+
+#: kleo/dn.cpp:511
+#, kde-format
+msgid "Title"
+msgstr "Títol"
+
+#: kleo/dn.cpp:512
+#, kde-format
+msgid "Organizational unit"
+msgstr "Unitat organitzativa"
+
+#: kleo/dn.cpp:513
+#, kde-format
+msgid "Organization"
+msgstr "Organització"
+
+#: kleo/dn.cpp:514
+#, kde-format
+msgid "Postal code"
+msgstr "Codi postal"
+
+#: kleo/dn.cpp:515
+#, kde-format
+msgid "Country code"
+msgstr "Codi de país"
+
+#: kleo/dn.cpp:516
+#, kde-format
+msgid "State or province"
+msgstr "Estat o província"
+
+#: kleo/dn.cpp:517
+#, kde-format
+msgid "Domain component"
+msgstr "Component de domini"
+
+#: kleo/dn.cpp:518
+#, kde-format
+msgid "Business category"
+msgstr "Categoria de negoci"
+
+#: kleo/dn.cpp:519
+#, kde-format
+msgid "Email address"
+msgstr "Adreça de correu-e"
+
+#: kleo/dn.cpp:520
+#, kde-format
+msgid "Mail address"
+msgstr "Adreça de correu"
+
+#: kleo/dn.cpp:521
+#, kde-format
+msgid "Mobile phone number"
+msgstr "Número de telèfon mòbil"
+
+#: kleo/dn.cpp:522
+#, kde-format
+msgid "Telephone number"
+msgstr "Número de telèfon"
+
+#: kleo/dn.cpp:523
+#, kde-format
+msgid "Fax number"
+msgstr "Número de fax"
+
+#: kleo/dn.cpp:524
+#, kde-format
+msgid "Street address"
+msgstr "Carrer de l'adreça"
+
+#: kleo/dn.cpp:525
+#, kde-format
+msgid "Unique ID"
+msgstr "ID únic"
+
+#: kleo/enum.cpp:57
+#, kde-format
+msgid "Inline OpenPGP (deprecated)"
+msgstr "OpenPGP inclòs (desaprovat)"
+
+#: kleo/enum.cpp:62
+#, kde-format
+msgid "OpenPGP/MIME"
+msgstr "OpenPGP/MIME"
+
+#: kleo/enum.cpp:67 ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "S/MIME"
+msgstr "S/MIME"
+
+#: kleo/enum.cpp:72
+#, kde-format
+msgid "S/MIME Opaque"
+msgstr "S/MIME opac"
+
+#: kleo/enum.cpp:104
+#, kde-format
+msgid "Any"
+msgstr "Qualsevol"
+
+#: kleo/enum.cpp:177
+#, kde-format
+msgid "Never Encrypt"
+msgstr "No encriptis mai"
+
+#: kleo/enum.cpp:179
+#, kde-format
+msgid "Always Encrypt"
+msgstr "Encripta sempre"
+
+#: kleo/enum.cpp:181
+#, kde-format
+msgid "Always Encrypt If Possible"
+msgstr "Encripta sempre que siga possible"
+
+#: kleo/enum.cpp:183 kleo/enum.cpp:240
+#, kde-format
+msgid "Ask"
+msgstr "Pregunta"
+
+#: kleo/enum.cpp:185 kleo/enum.cpp:242
+#, kde-format
+msgid "Ask Whenever Possible"
+msgstr "Pregunta quan siga possible"
+
+#: kleo/enum.cpp:187
+#, kde-kuit-format
+msgctxt "no specific preference"
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>cap</placeholder>"
+
+#: kleo/enum.cpp:234
+#, kde-format
+msgid "Never Sign"
+msgstr "No signis mai"
+
+#: kleo/enum.cpp:236
+#, kde-format
+msgid "Always Sign"
+msgstr "Signa sempre"
+
+#: kleo/enum.cpp:238
+#, kde-format
+msgid "Always Sign If Possible"
+msgstr "Signa sempre que siga possible"
+
+#: kleo/enum.cpp:244
+#, kde-format
+msgctxt "no specific preference"
+msgid "<none>"
+msgstr "<cap>"
+
+#: kleo/keyfiltermanager.cpp:85
+#, kde-format
+msgid "All Certificates"
+msgstr "Tots els certificats"
+
+#: kleo/keyfiltermanager.cpp:100
+#, kde-format
+msgid "My Certificates"
+msgstr "Els meus certificats"
+
+#: kleo/keyfiltermanager.cpp:118
+#, kde-format
+msgid "Trusted Certificates"
+msgstr "Certificats fiables"
+
+#: kleo/keyfiltermanager.cpp:135
+#, kde-format
+msgid "Fully Trusted Certificates"
+msgstr "Certificats completament fiables"
+
+#: kleo/keyfiltermanager.cpp:152
+#, kde-format
+msgid "Other Certificates"
+msgstr "Altres certificats"
+
+#: kleo/keyfiltermanager.cpp:166
+#, kde-format
+msgid "VS-compliant Certificates"
+msgstr "Certificats conformes amb VS"
+
+#: kleo/keyfiltermanager.cpp:184
+#, kde-format
+msgid "Not validated Certificates"
+msgstr "Certificats sense validar"
+
+#: ui/auditlogviewer.cpp:49
+#, kde-format
+msgid "View GnuPG Audit Log"
+msgstr "Visualitza el registre d'auditoria del GnuPG"
+
+#: ui/auditlogviewer.cpp:53
+#, kde-format
+msgid "&Copy to Clipboard"
+msgstr "&Copia al porta-retalls"
+
+#: ui/auditlogviewer.cpp:59
+#, kde-format
+msgid "&Save to Disk..."
+msgstr "Al&ça al disc..."
+
+#: ui/auditlogviewer.cpp:95
+#, kde-format
+msgid "Choose File to Save GnuPG Audit Log to"
+msgstr ""
+"Seleccioneu el fitxer en el qual es guardarà el registre d'auditoria del "
+"GnuPG"
+
+#: ui/auditlogviewer.cpp:118
+#, kde-format
+msgid "Could not save to file \"%1\": %2"
+msgstr "No s'ha pogut guardar al fitxer «%1»: %2"
+
+#: ui/auditlogviewer.cpp:120
+#, kde-format
+msgid "File Save Error"
+msgstr "Error en guardar el fitxer"
+
+#: ui/cryptoconfigdialog.cpp:44
+#, kde-format
+msgid "Configure GnuPG Backend"
+msgstr "Configura el dorsal del GnuPG"
+
+#: ui/cryptoconfigdialog.cpp:55
+#, kde-format
+msgid "&Reset"
+msgstr "&Inicialitza"
+
+#: ui/cryptoconfigmodule.cpp:160
+#, kde-format
+msgid "GpgConf Error"
+msgstr "Error del GpgConf"
+
+#: ui/cryptoconfigmodule.cpp:216
+#, kde-format
+msgid ""
+"The gpgconf tool used to provide the information for this dialog does not "
+"seem to be installed properly. It did not return any components. Try running "
+"\"%1\" on the command line for more information."
+msgstr ""
+"L'eina «gpgconf» utilitzada per a proporcionar la informació d'este diàleg "
+"pareix que no està instal·lada correctament. No retorna cap component. "
+"Proveu d'executar «%1» des de la línia d'ordes per a més informació."
+
+#: ui/cryptoconfigmodule.cpp:496
+#, kde-format
+msgctxt ""
+"Translate this to 'yes' or 'no' (use the English words!) depending on "
+"whether your language uses Sentence style capitalisation in GUI labels (yes) "
+"or not (no). Context: We get some backend strings in that have the wrong "
+"capitalizaion (in English, at least) so we need to force the first character "
+"to upper-case. It is this behaviour you can control for your language with "
+"this translation."
+msgid "yes"
+msgstr "yes"
+
+#: ui/cryptoconfigmodule.cpp:546
+#, kde-format
+msgid "0 - None"
+msgstr "0 - Cap"
+
+#: ui/cryptoconfigmodule.cpp:547
+#, kde-format
+msgid "1 - Basic"
+msgstr "1 - Bàsic"
+
+#: ui/cryptoconfigmodule.cpp:548
+#, kde-format
+msgid "2 - Verbose"
+msgstr "2 - Detallada"
+
+#: ui/cryptoconfigmodule.cpp:549
+#, kde-format
+msgid "3 - More Verbose"
+msgstr "3 - Més detallada"
+
+#: ui/cryptoconfigmodule.cpp:550
+#, kde-format
+msgid "4 - All"
+msgstr "4 - Tot"
+
+#: ui/cryptoconfigmodule.cpp:559
+#, kde-format
+msgid "Set the debugging level to"
+msgstr "Fixa el nivell de depuració a"
+
+#: ui/cryptoconfigmodule.cpp:787
+#, kde-format
+msgid "Show..."
+msgstr "Mostra..."
+
+#: ui/cryptoconfigmodule.cpp:787 ui/cryptoconfigmodule.cpp:876
+#, kde-format
+msgid "Edit..."
+msgstr "Edita..."
+
+#: ui/cryptoconfigmodule.cpp:841
+#, kde-format
+msgid "Configure LDAP Servers"
+msgstr "Configura els servidors LDAP"
+
+#: ui/cryptoconfigmodule.cpp:862
+#, kde-format
+msgid "None configured"
+msgstr "Sense configurar"
+
+#: ui/cryptoconfigmodule.cpp:864
+#, kde-format
+msgid "1 server configured"
+msgid_plural "%1 servers configured"
+msgstr[0] "S'ha configurat 1 servidor"
+msgstr[1] "S'han configurat %1 servidors"
+
+#: ui/cryptoconfigmodule.cpp:879
+#, kde-format
+msgid "Use keyserver at"
+msgstr "Usa el servidor de claus a"
+
+#: ui/cryptoconfigmodule.cpp:968
+#, kde-format
+msgid "Configure Keyservers"
+msgstr "Configura els servidors de claus"
+
+#: ui/directoryserviceswidget.cpp:67
+#, kde-format
+msgctxt "default server name, keep it a valid domain name, ie. no spaces"
+msgid "server"
+msgstr "servidor"
+
+#: ui/directoryserviceswidget.cpp:95
+#, kde-format
+msgid "hkp"
+msgstr "hkp"
+
+#: ui/directoryserviceswidget.cpp:96
+#, kde-format
+msgid "http"
+msgstr "http"
+
+#: ui/directoryserviceswidget.cpp:97
+#, kde-format
+msgid "https"
+msgstr "https"
+
+#: ui/directoryserviceswidget.cpp:98
+#, kde-format
+msgid "ftp"
+msgstr "ftp"
+
+#: ui/directoryserviceswidget.cpp:99
+#, kde-format
+msgid "ftps"
+msgstr "ftps"
+
+#: ui/directoryserviceswidget.cpp:100
+#, kde-format
+msgid "ldap"
+msgstr "ldap"
+
+#: ui/directoryserviceswidget.cpp:101
+#, kde-format
+msgid "ldaps"
+msgstr "ldaps"
+
+#: ui/directoryserviceswidget.cpp:588
+#, kde-format
+msgid "Server Name"
+msgstr "Nom del servidor"
+
+#: ui/directoryserviceswidget.cpp:589
+#, kde-format
+msgid "Server Port"
+msgstr "Port del servidor"
+
+#: ui/directoryserviceswidget.cpp:590
+#, kde-format
+msgid "Base DN"
+msgstr "DN base"
+
+#: ui/directoryserviceswidget.cpp:591
+#, kde-format
+msgid "User Name"
+msgstr "Nom d'usuari"
+
+#: ui/directoryserviceswidget.cpp:592
+#, kde-format
+msgid "Password"
+msgstr "Contrasenya"
+
+#: ui/directoryserviceswidget.cpp:614
+#, kde-format
+msgid "(read-only)"
+msgstr "(només lectura)"
+
+#: ui/directoryserviceswidget.cpp:616
+#, kde-format
+msgctxt "amended tooltip; %1: original tooltip"
+msgid "%1 (read-only)"
+msgstr "%1 (només lectura)"
+
+#: ui/directoryserviceswidget.cpp:739
+#, kde-format
+msgid ""
+"Enter the name or IP address of the server hosting the directory service."
+msgstr ""
+"Introduïu el nom o l'adreça IP del servidor que hostatja el servei de "
+"directori."
+
+#: ui/directoryserviceswidget.cpp:741
+#, kde-format
+msgid ""
+"<b>(Optional, the default is fine in most cases)</b> Pick the port number "
+"the directory service is listening on."
+msgstr ""
+"<b>(Opcional, en la majoria dels casos el predeterminat és correcte)</b> "
+"Trieu el número de port que el servei de directori està escoltant."
+
+#: ui/directoryserviceswidget.cpp:744
+#, kde-format
+msgid ""
+"<b>(Only for LDAP)</b> Enter the base DN for this LDAP server to limit "
+"searches to only that subtree of the directory."
+msgstr ""
+"<b>(Només per LDAP)</b> Introduïu el DN base per este servidor LDAP per a "
+"limitar les cerques a només este subarbre del directori."
+
+#: ui/directoryserviceswidget.cpp:747
+#, kde-format
+msgid "<b>(Optional)</b> Enter your user name here, if needed."
+msgstr "<b>(Opcional)</b> Introduïu ací el nom d'usuari, si cal."
+
+#: ui/directoryserviceswidget.cpp:749
+#, kde-format
+msgid ""
+"<b>(Optional, not recommended)</b> Enter your password here, if needed. Note "
+"that the password will be saved in the clear in a config file in your home "
+"directory."
+msgstr ""
+"<b>(Opcional, no recomanat)</b> Introduïu ací la contrasenya, si cal. "
+"Tingueu en compte que la contrasenya es guardarà en clar en un fitxer de "
+"configuració en el vostre directori personal."
+
+#. i18n: ectx: property (windowTitle), widget (QWidget, DirectoryServicesWidget)
+#: ui/directoryserviceswidget.ui:14
+#, kde-format
+msgid "Directory Services Configuration"
+msgstr "Configuració dels serveis de directori"
+
+#. i18n: ectx: property (text), widget (QLabel, pgpKSLabel)
+#: ui/directoryserviceswidget.ui:22
+#, kde-format
+msgid "OpenPGP Keyserver:"
+msgstr "Servidor de claus OpenPGP:"
+
+#. i18n: ectx: property (title), widget (QGroupBox, x500LA)
+#: ui/directoryserviceswidget.ui:35
+#, kde-format
+msgid "X509 Directory services:"
+msgstr "Serveis de directori X509:"
+
+#. i18n: ectx: property (whatsThis), widget (QTreeView, treeView)
+#: ui/directoryserviceswidget.ui:43
+#, kde-format
+msgid ""
+"This is a list of all directory services that are configured for use with "
+"X.509."
+msgstr ""
+"Este és una llista de tots els serveis de directori que estan configurats "
+"per a usar amb X.509."
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:70
+#, kde-format
+msgid "Click to add a service"
+msgstr "Cliqueu per afegir un servei"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:73
+#, kde-format
+msgid ""
+"Click this button to create a new directory service entry as a clone of the "
+"currently selected one (or with default values, if no other is selected). "
+"You can then configure details in the table on the left hand."
+msgstr ""
+"Cliqueu este botó per a crear un servei de directori nou com a clon del "
+"seleccionat (o amb els valors per omissió si no n'hi ha cap de seleccionat). "
+"Podeu configurar els detalls a la taula de mà esquerra."
+
+#. i18n: ectx: property (text), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:76
+#, kde-format
+msgid "New"
+msgstr "Nou"
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:92
+#, kde-format
+msgid "Click to remove the currently selected service"
+msgstr "Cliqueu per eliminar el servei seleccionat"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:95
+#, kde-format
+msgid ""
+"Click this button to remove the currently selected directory service. The "
+"change will only take effect once you acknowledge the main configuration "
+"dialog."
+msgstr ""
+"Cliqueu este botó per eliminar el servei de directori seleccionat. El canvi "
+"només tindrà efecte quan confirmeu el diàleg de configuració del correu."
+
+#. i18n: ectx: property (text), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:98
+#, kde-format
+msgid "Delete"
+msgstr "Suprimeix"
+
+#. i18n: ectx: property (whatsThis), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:128
+#, kde-format
+msgid ""
+"Use this option to switch display of username and password information on or "
+"off in the above table."
+msgstr ""
+"Useu esta opció per a commutar la visualització de la informació del nom "
+"d'usuari i contrasenya a la taula superior."
+
+#. i18n: ectx: property (text), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:131
+#, kde-format
+msgid "Show user and password information"
+msgstr "Mostra la informació d'usuari i contrasenya"
+
+#: ui/dnattributeorderconfigwidget.cpp:73
+#, kde-format
+msgid "Description"
+msgstr "Descripció"
+
+#: ui/dnattributeorderconfigwidget.cpp:91
+#, kde-format
+msgid "Available attributes:"
+msgstr "Atributs disponibles:"
+
+#: ui/dnattributeorderconfigwidget.cpp:92
+#, kde-format
+msgid "Current attribute order:"
+msgstr "Orde actual dels atributs:"
+
+#: ui/dnattributeorderconfigwidget.cpp:112
+#, kde-format
+msgid "All others"
+msgstr "Tots els altres"
+
+#: ui/dnattributeorderconfigwidget.cpp:129
+#, kde-format
+msgid "Move to top"
+msgstr "Mou a dalt de tot"
+
+#: ui/dnattributeorderconfigwidget.cpp:130
+#, kde-format
+msgid "Move one up"
+msgstr "Mou un amunt"
+
+#: ui/dnattributeorderconfigwidget.cpp:131
+#, kde-format
+msgid "Remove from current attribute order"
+msgstr "Elimina de l'orde actual dels atributs"
+
+#: ui/dnattributeorderconfigwidget.cpp:132
+#, kde-format
+msgid "Add to current attribute order"
+msgstr "Afig a l'orde actual dels atributs"
+
+#: ui/dnattributeorderconfigwidget.cpp:133
+#, kde-format
+msgid "Move one down"
+msgstr "Mou un avall"
+
+#: ui/dnattributeorderconfigwidget.cpp:134
+#, kde-format
+msgid "Move to bottom"
+msgstr "Mou al fons"
+
+#: ui/keyapprovaldialog.cpp:87
+#, kde-kuit-format
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>cap</placeholder>"
+
+#: ui/keyapprovaldialog.cpp:88
+#, kde-format
+msgid "Never Encrypt with This Key"
+msgstr "No encriptis mai amb esta clau"
+
+#: ui/keyapprovaldialog.cpp:89
+#, kde-format
+msgid "Always Encrypt with This Key"
+msgstr "Encripta sempre amb esta clau"
+
+#: ui/keyapprovaldialog.cpp:90
+#, kde-format
+msgid "Encrypt Whenever Encryption is Possible"
+msgstr "Encripta sempre que l'encriptatge siga possible"
+
+#: ui/keyapprovaldialog.cpp:91
+#, kde-format
+msgid "Always Ask"
+msgstr "Pregunta sempre"
+
+#: ui/keyapprovaldialog.cpp:92
+#, kde-format
+msgid "Ask Whenever Encryption is Possible"
+msgstr "Pregunta sempre que l'encriptatge siga possible"
+
+#: ui/keyapprovaldialog.cpp:113
+#, kde-format
+msgid "Encryption Key Approval"
+msgstr "Aprovació de la clau d'encriptatge"
+
+#: ui/keyapprovaldialog.cpp:129
+#, kde-format
+msgid "The following keys will be used for encryption:"
+msgstr "Per a l'encriptatge s'empraran les següents claus:"
+
+#: ui/keyapprovaldialog.cpp:145
+#, kde-format
+msgid "Your keys:"
+msgstr "Les vostres claus:"
+
+#: ui/keyapprovaldialog.cpp:157
+#, kde-format
+msgid "Recipient:"
+msgstr "Destinatari:"
+
+#: ui/keyapprovaldialog.cpp:162
+#, kde-format
+msgid "Encryption keys:"
+msgstr "Claus d'encriptatge:"
+
+#: ui/keyapprovaldialog.cpp:169
+#, kde-format
+msgid "Encryption preference:"
+msgstr "Preferències de l'encriptatge:"
+
+#: ui/keyrequester.cpp:118
+#, kde-format
+msgid "Clear"
+msgstr "Neteja"
+
+#: ui/keyrequester.cpp:121
+#, kde-format
+msgid "Change..."
+msgstr "Canvia..."
+
+#: ui/keyrequester.cpp:232 ui/keyselectiondialog.cpp:256
+#, kde-kuit-format
+msgid "<placeholder>unknown</placeholder>"
+msgstr "<placeholder>desconegut</placeholder>"
+
+#: ui/keyrequester.cpp:246 ui/keyselectiondialog.cpp:657
+#, kde-format
+msgid ""
+"<qt><p>An error occurred while fetching the keys from the backend:</p><p><b>"
+"%1</b></p></qt>"
+msgstr ""
+"<qt><p>S'ha produït un error en obtindre les claus des del dorsal:</p><p><b>"
+"%1</b></p></qt>"
+
+#: ui/keyrequester.cpp:251 ui/keyrequester.cpp:283 ui/keyrequester.cpp:306
+#: ui/keyselectiondialog.cpp:630 ui/keyselectiondialog.cpp:662
+#, kde-format
+msgid "Key Listing Failed"
+msgstr "El llistat de claus ha fallat"
+
+#: ui/keyrequester.cpp:281
+#, kde-format
+msgid ""
+"The OpenPGP backend does not support listing keys. Check your installation."
+msgstr ""
+"El dorsal OpenPGP no permet el llistat de claus. Comproveu la instal·lació."
+
+#: ui/keyrequester.cpp:304
+#, kde-format
+msgid ""
+"The S/MIME backend does not support listing keys. Check your installation."
+msgstr ""
+"El dorsal S/MIME no permet el llistat de claus. Comproveu la instal·lació."
+
+#: ui/keyrequester.cpp:426
+#, kde-format
+msgid "OpenPGP Key Selection"
+msgstr "Selecció de la clau OpenPGP"
+
+#: ui/keyrequester.cpp:427
+#, kde-format
+msgid "Please select an OpenPGP key to use."
+msgstr "Per favor, seleccioneu una clau OpenPGP a usar."
+
+#: ui/keyrequester.cpp:429
+#, kde-format
+msgid "S/MIME Key Selection"
+msgstr "Selecció de la clau S/MIME"
+
+#: ui/keyrequester.cpp:430
+#, kde-format
+msgid "Please select an S/MIME key to use."
+msgstr "Per favor, seleccioneu una clau S/MIME a usar."
+
+#: ui/keyrequester.cpp:432
+#, kde-format
+msgid "Key Selection"
+msgstr "Selecció de la clau"
+
+#: ui/keyrequester.cpp:433
+#, kde-format
+msgid "Please select an (OpenPGP or S/MIME) key to use."
+msgstr "Per favor, seleccioneu una clau (OpenPGP o S/MIME) a usar."
+
+#: ui/keyselectioncombo.cpp:195
+#, kde-format
+msgctxt "Name <email> (validity, type, created: date)"
+msgid "%1 (%2, %3, created: %4)"
+msgstr "%1 (%2, %3 creada: %4)"
+
+#: ui/keyselectioncombo.cpp:196
+#, kde-format
+msgctxt "Name <email>"
+msgid "%1 <%2>"
+msgstr "%1 <%2>"
+
+#: ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "OpenPGP"
+msgstr "OpenPGP"
+
+#: ui/keyselectioncombo.cpp:347
+#, kde-format
+msgid "Loading keys ..."
+msgstr "S'estan carregant les claus..."
+
+#: ui/keyselectiondialog.cpp:98
+#, kde-format
+msgid "The key is not valid."
+msgstr "La clau no és vàlida."
+
+#: ui/keyselectiondialog.cpp:106
+#, kde-format
+msgid "The key is expired."
+msgstr "La clau ha caducat."
+
+#: ui/keyselectiondialog.cpp:110
+#, kde-format
+msgid "The key is revoked."
+msgstr "La clau està revocada."
+
+#: ui/keyselectiondialog.cpp:114
+#, kde-format
+msgid "The key is disabled."
+msgstr "La clau està desactivada."
+
+#: ui/keyselectiondialog.cpp:122
+#, kde-format
+msgid "The key is not designated for encryption."
+msgstr "La clau no s'ha designat per encriptatge."
+
+#: ui/keyselectiondialog.cpp:128
+#, kde-format
+msgid "The key is not designated for signing."
+msgstr "La clau no s'ha designat per signatura."
+
+#: ui/keyselectiondialog.cpp:134
+#, kde-format
+msgid "The key is not designated for certifying."
+msgstr "La clau no s'ha designat per certificar."
+
+#: ui/keyselectiondialog.cpp:140
+#, kde-format
+msgid "The key is not designated for authentication."
+msgstr "La clau no s'ha designat per autentificar."
+
+#: ui/keyselectiondialog.cpp:148
+#, kde-format
+msgid "The key is not secret."
+msgstr "La clau no és secreta."
+
+#: ui/keyselectiondialog.cpp:163
+#, kde-format
+msgid "The key is not trusted enough."
+msgstr "La clau no té confiança suficient."
+
+#: ui/keyselectiondialog.cpp:169
+#, kde-format
+msgid "The key can be used."
+msgstr "La clau es pot usar."
+
+#: ui/keyselectiondialog.cpp:230
+#, kde-format
+msgid "Key ID"
+msgstr "ID de la clau"
+
+#: ui/keyselectiondialog.cpp:231
+#, kde-format
+msgid "User ID"
+msgstr "ID de l'usuari"
+
+#: ui/keyselectiondialog.cpp:279
+#, kde-format
+msgid "never"
+msgstr "mai"
+
+#: ui/keyselectiondialog.cpp:289 ui/keyselectiondialog.cpp:291
+#: ui/keyselectiondialog.cpp:300 ui/keyselectiondialog.cpp:302
+#, kde-format
+msgid "unknown"
+msgstr "desconegut"
+
+#: ui/keyselectiondialog.cpp:289
+#, kde-format
+msgid "OpenPGP key for <b>%1</b>"
+msgstr "Clau OpenPGP per <b>%1</b>"
+
+#: ui/keyselectiondialog.cpp:291
+#, kde-format
+msgid "S/MIME key for <b>%1</b>"
+msgstr "Clau S/MIME per <b>%1</b>"
+
+#: ui/keyselectiondialog.cpp:298
+#, kde-format
+msgctxt "Key creation date"
+msgid "Created"
+msgstr "Creada"
+
+#: ui/keyselectiondialog.cpp:299
+#, kde-format
+msgctxt "Key Expiration date"
+msgid "Expiry"
+msgstr "Caducitat"
+
+#: ui/keyselectiondialog.cpp:300
+#, kde-format
+msgctxt "Key fingerprint"
+msgid "Fingerprint"
+msgstr "Empremta digital"
+
+#: ui/keyselectiondialog.cpp:302
+#, kde-format
+msgctxt "Key issuer"
+msgid "Issuer"
+msgstr "Emissor"
+
+#: ui/keyselectiondialog.cpp:304
+#, kde-format
+msgctxt "Key status"
+msgid "Status"
+msgstr "Estat"
+
+#: ui/keyselectiondialog.cpp:456
+#, kde-format
+msgid "Search for &External Certificates"
+msgstr "Busca de certificats &externs"
+
+#: ui/keyselectiondialog.cpp:470
+#, kde-format
+msgid "&Search for:"
+msgstr "&Cerca:"
+
+#: ui/keyselectiondialog.cpp:494
+#, kde-format
+msgid "&Remember choice"
+msgstr "&Recorda la tria"
+
+#: ui/keyselectiondialog.cpp:497
+#, kde-format
+msgid ""
+"<qt><p>If you check this box your choice will be stored and you will not be "
+"asked again.</p></qt>"
+msgstr ""
+"<qt><p>Si activeu esta casella, es guardarà la vostra tria i no se vos "
+"tornarà a preguntar.</p></qt>"
+
+#: ui/keyselectiondialog.cpp:509
+#, kde-format
+msgid "&Reread Keys"
+msgstr "&Rellegeix les claus"
+
+#: ui/keyselectiondialog.cpp:510
+#, kde-format
+msgid "&Start Certificate Manager"
+msgstr "En&gega el gestor de certificats"
+
+#: ui/keyselectiondialog.cpp:628
+#, kde-format
+msgid "No backends found for listing keys. Check your installation."
+msgstr ""
+"No s'han trobat dorsals per al llistat de claus. Comproveu la instal·lació."
+
+#: ui/keyselectiondialog.cpp:644
+#, kde-format
+msgid "Could not start certificate manager; please check your installation."
+msgstr ""
+"No s'ha pogut iniciar el gestor de certificats. Comproveu la vostra "
+"instal·lació."
+
+#: ui/keyselectiondialog.cpp:646
+#, kde-format
+msgid "Certificate Manager Error"
+msgstr "Error del gestor de certificats"
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Checking selected keys..."
+msgstr "S'estan comprovant les claus seleccionades..."
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Fetching keys..."
+msgstr "S'estan recuperant les claus..."
+
+#: ui/keyselectiondialog.cpp:731
+#, kde-format
+msgid ""
+"<qt>One backend returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgid_plural ""
+"<qt>%1 backends returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgstr[0] ""
+"<qt>Un dorsal ha retornat una eixida truncada.<p>No es mostren totes les "
+"claus disponibles</p></qt>"
+msgstr[1] ""
+"<qt>%1 dorsals han retornat una eixida truncada.<p>No es mostren totes les "
+"claus disponibles</p></qt>"
+
+#: ui/keyselectiondialog.cpp:736
+#, kde-format
+msgid "Key List Result"
+msgstr "Resultat de la llista de claus"
+
+#: ui/keyselectiondialog.cpp:856
+#, kde-format
+msgid "Recheck Key"
+msgstr "Revisa la clau"
+
+#: ui/messagebox.cpp:71
+#, kde-format
+msgid "Your system does not have support for GnuPG Audit Logs"
+msgstr "Este sistema no permet els registres d'auditoria del GnuPG"
+
+#: ui/messagebox.cpp:72
+#, kde-format
+msgid "System Error"
+msgstr "Error del sistema"
+
+#: ui/messagebox.cpp:79
+#, kde-format
+msgid ""
+"An error occurred while trying to retrieve the GnuPG Audit Log:\n"
+"%1"
+msgstr ""
+"S'ha produït un error en intentar recuperar el registre d'auditoria del "
+"GnuPG:\n"
+"%1"
+
+#: ui/messagebox.cpp:81
+#, kde-format
+msgid "GnuPG Audit Log Error"
+msgstr "Error del registre d'auditoria del GnuPG"
+
+#: ui/messagebox.cpp:88
+#, kde-format
+msgid "No GnuPG Audit Log available for this operation."
+msgstr ""
+"No hi ha disponible cap registre d'auditoria del GnuPG per a esta operació."
+
+#: ui/messagebox.cpp:89
+#, kde-format
+msgid "No GnuPG Audit Log"
+msgstr "Sense registre d'auditoria del GnuPG"
+
+#: ui/messagebox.cpp:109 ui/messagebox.cpp:115
+#, kde-format
+msgid "GnuPG Audit Log Viewer"
+msgstr "Visor del registre d'auditoria del GnuPG"
+
+#: ui/messagebox.cpp:121
+#, kde-format
+msgid "Signing failed: %1"
+msgstr "Ha fallat la signatura: %1"
+
+#: ui/messagebox.cpp:122
+#, kde-format
+msgid "Signing successful"
+msgstr "Signatura correcta"
+
+#: ui/messagebox.cpp:133
+#, kde-format
+msgid "Encryption failed: %1"
+msgstr "L'encriptatge ha fallat: %1"
+
+#: ui/messagebox.cpp:134
+#, kde-format
+msgid "Encryption successful"
+msgstr "Encriptatge correcte"
+
+#: ui/messagebox.cpp:155
+#, kde-format
+msgid "Signing Result"
+msgstr "Resultat de la signatura"
+
+#: ui/messagebox.cpp:167
+#, kde-format
+msgid "Signing Error"
+msgstr "Error de la signatura"
+
+#: ui/messagebox.cpp:179 ui/messagebox.cpp:203
+#, kde-format
+msgid "Encryption Result"
+msgstr "Resultat de l'encriptatge"
+
+#: ui/messagebox.cpp:191 ui/messagebox.cpp:215
+#, kde-format
+msgid "Encryption Error"
+msgstr "Error de l'encriptatge"
+
+#: ui/messagebox.cpp:263
+#, kde-format
+msgid "&Show Audit Log"
+msgstr "Mo&stra el registre d'auditoria"
+
+#: ui/progressdialog.cpp:91
+#, kde-format
+msgid "%1: %2"
+msgstr "%1: %2"
--- /dev/null
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Vít Pelčák <vit@pelcak.org>, 2010, 2011, 2013, 2014, 2016, 2017.
+# Tomáš Chvátal <tomas.chvatal@gmail.com>, 2013.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: libkleopatra\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2017-07-12 06:56+0200\n"
+"PO-Revision-Date: 2017-04-25 14:31+0100\n"
+"Last-Translator: Vít Pelčák <vit@pelcak.org>\n"
+"Language-Team: Czech <kde-i18n-doc@kde.org>\n"
+"Language: cs\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
+"X-Generator: Lokalize 2.0\n"
+
+#: kleo/checksumdefinition.cpp:107
+#, kde-format
+msgid "Error in checksum definition %1: %2"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:157
+#, kde-format
+msgid "Cannot use both %f and | in '%1'"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:167
+#, kde-format
+msgid "Quoting error in '%1' entry"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:170
+#, kde-format
+msgid "'%1' too complex (would need shell)"
+msgstr "'%1' příliš komplexní (byl by potřeba shell)"
+
+#: kleo/checksumdefinition.cpp:174
+#, kde-format
+msgid "'%1' entry is empty/missing"
+msgstr "'%1' položka je prázdná/chybějící"
+
+#: kleo/checksumdefinition.cpp:183
+#, kde-format
+msgid "'%1' empty or not found"
+msgstr "'%1' prázdný nebo nenalezen"
+
+#: kleo/checksumdefinition.cpp:222
+#, kde-format
+msgid "'id' entry is empty/missing"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:225
+#, kde-format
+msgid "'output-file' entry is empty/missing"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:228
+#, kde-format
+msgid "'file-patterns' entry is empty/missing"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:395
+#, kde-format
+msgid "Caught unknown exception in group %1"
+msgstr "Zachycena neznámá výjimka ve skupině %1"
+
+#: kleo/dn.cpp:507
+#, kde-format
+msgid "Common name"
+msgstr "Obecné jméno"
+
+#: kleo/dn.cpp:508
+#, kde-format
+msgid "Surname"
+msgstr "Příjmení"
+
+#: kleo/dn.cpp:509
+#, kde-format
+msgid "Given name"
+msgstr "Jméno"
+
+#: kleo/dn.cpp:510
+#, kde-format
+msgid "Location"
+msgstr "Umístění"
+
+#: kleo/dn.cpp:511
+#, kde-format
+msgid "Title"
+msgstr "Titul"
+
+#: kleo/dn.cpp:512
+#, kde-format
+msgid "Organizational unit"
+msgstr "Organizační jednotka"
+
+#: kleo/dn.cpp:513
+#, kde-format
+msgid "Organization"
+msgstr "Organizace"
+
+#: kleo/dn.cpp:514
+#, kde-format
+msgid "Postal code"
+msgstr "Směrovací číslo"
+
+#: kleo/dn.cpp:515
+#, kde-format
+msgid "Country code"
+msgstr "Kód země"
+
+#: kleo/dn.cpp:516
+#, kde-format
+msgid "State or province"
+msgstr "Stát nebo provincie"
+
+#: kleo/dn.cpp:517
+#, kde-format
+msgid "Domain component"
+msgstr "Komponenta domény"
+
+#: kleo/dn.cpp:518
+#, kde-format
+msgid "Business category"
+msgstr "Obchodní kategorie"
+
+#: kleo/dn.cpp:519
+#, kde-format
+msgid "Email address"
+msgstr "E-mailová adresa"
+
+#: kleo/dn.cpp:520
+#, kde-format
+msgid "Mail address"
+msgstr "Poštovní adresa"
+
+#: kleo/dn.cpp:521
+#, kde-format
+msgid "Mobile phone number"
+msgstr "Číslo na mobil"
+
+#: kleo/dn.cpp:522
+#, kde-format
+msgid "Telephone number"
+msgstr "Telefonní číslo"
+
+#: kleo/dn.cpp:523
+#, kde-format
+msgid "Fax number"
+msgstr "Faxové číslo"
+
+#: kleo/dn.cpp:524
+#, kde-format
+msgid "Street address"
+msgstr "Adresa"
+
+#: kleo/dn.cpp:525
+#, kde-format
+msgid "Unique ID"
+msgstr "Unikátní ID"
+
+#: kleo/enum.cpp:57
+#, kde-format
+msgid "Inline OpenPGP (deprecated)"
+msgstr "Vložen OpenPGP (zastaralé)"
+
+#: kleo/enum.cpp:62
+#, kde-format
+msgid "OpenPGP/MIME"
+msgstr "OpenPGP/MIME"
+
+#: kleo/enum.cpp:67 ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "S/MIME"
+msgstr "S/MIME"
+
+#: kleo/enum.cpp:72
+#, kde-format
+msgid "S/MIME Opaque"
+msgstr "S/MIME Opaque"
+
+#: kleo/enum.cpp:104
+#, kde-format
+msgid "Any"
+msgstr "Cokoliv"
+
+#: kleo/enum.cpp:177
+#, kde-format
+msgid "Never Encrypt"
+msgstr "Nikdy nešifrovat"
+
+#: kleo/enum.cpp:179
+#, kde-format
+msgid "Always Encrypt"
+msgstr "Vždy šifrovat"
+
+#: kleo/enum.cpp:181
+#, kde-format
+msgid "Always Encrypt If Possible"
+msgstr "Šifrovat, je-li to možné"
+
+#: kleo/enum.cpp:183 kleo/enum.cpp:240
+#, kde-format
+msgid "Ask"
+msgstr "Dotázat se"
+
+#: kleo/enum.cpp:185 kleo/enum.cpp:242
+#, kde-format
+msgid "Ask Whenever Possible"
+msgstr "Dotázat se, je-li to možné"
+
+#: kleo/enum.cpp:187
+#, kde-kuit-format
+msgctxt "no specific preference"
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>nic</placeholder>"
+
+#: kleo/enum.cpp:234
+#, kde-format
+msgid "Never Sign"
+msgstr "Nikdy nepodepisovat"
+
+#: kleo/enum.cpp:236
+#, kde-format
+msgid "Always Sign"
+msgstr "Vždy podepisovat"
+
+#: kleo/enum.cpp:238
+#, kde-format
+msgid "Always Sign If Possible"
+msgstr "Vždy podepisovat, je-li to možné"
+
+#: kleo/enum.cpp:244
+#, kde-format
+msgctxt "no specific preference"
+msgid "<none>"
+msgstr "<nic>"
+
+#: kleo/keyfiltermanager.cpp:85
+#, kde-format
+msgid "All Certificates"
+msgstr "Všechny certifikáty"
+
+#: kleo/keyfiltermanager.cpp:100
+#, kde-format
+msgid "My Certificates"
+msgstr "Moje certifikáty"
+
+#: kleo/keyfiltermanager.cpp:118
+#, kde-format
+msgid "Trusted Certificates"
+msgstr "Důvěryhodné certifikáty"
+
+#: kleo/keyfiltermanager.cpp:135
+#, kde-format
+msgid "Fully Trusted Certificates"
+msgstr "Plně důvěryhodné certifikáty"
+
+#: kleo/keyfiltermanager.cpp:152
+#, kde-format
+msgid "Other Certificates"
+msgstr "Jiné certifikáty"
+
+#: kleo/keyfiltermanager.cpp:166
+#, kde-format
+msgid "VS-compliant Certificates"
+msgstr ""
+
+#: kleo/keyfiltermanager.cpp:184
+#, kde-format
+msgid "Not validated Certificates"
+msgstr ""
+
+#: ui/auditlogviewer.cpp:49
+#, kde-format
+msgid "View GnuPG Audit Log"
+msgstr ""
+
+#: ui/auditlogviewer.cpp:53
+#, kde-format
+msgid "&Copy to Clipboard"
+msgstr "Z&kopírovat do schránky..."
+
+#: ui/auditlogviewer.cpp:59
+#, kde-format
+msgid "&Save to Disk..."
+msgstr "&Uložit na disk..."
+
+#: ui/auditlogviewer.cpp:95
+#, kde-format
+msgid "Choose File to Save GnuPG Audit Log to"
+msgstr ""
+
+#: ui/auditlogviewer.cpp:118
+#, kde-format
+msgid "Could not save to file \"%1\": %2"
+msgstr ""
+
+#: ui/auditlogviewer.cpp:120
+#, kde-format
+msgid "File Save Error"
+msgstr "Chyba ukládání souboru"
+
+#: ui/cryptoconfigdialog.cpp:44
+#, kde-format
+msgid "Configure GnuPG Backend"
+msgstr ""
+
+#: ui/cryptoconfigdialog.cpp:55
+#, kde-format
+msgid "&Reset"
+msgstr "O&bnovit"
+
+#: ui/cryptoconfigmodule.cpp:160
+#, kde-format
+msgid "GpgConf Error"
+msgstr "Chyba v GpgConf"
+
+#: ui/cryptoconfigmodule.cpp:216
+#, kde-format
+msgid ""
+"The gpgconf tool used to provide the information for this dialog does not "
+"seem to be installed properly. It did not return any components. Try running "
+"\"%1\" on the command line for more information."
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:496
+#, kde-format
+msgctxt ""
+"Translate this to 'yes' or 'no' (use the English words!) depending on "
+"whether your language uses Sentence style capitalisation in GUI labels (yes) "
+"or not (no). Context: We get some backend strings in that have the wrong "
+"capitalizaion (in English, at least) so we need to force the first character "
+"to upper-case. It is this behaviour you can control for your language with "
+"this translation."
+msgid "yes"
+msgstr "yes"
+
+#: ui/cryptoconfigmodule.cpp:546
+#, kde-format
+msgid "0 - None"
+msgstr "0 - Žádný"
+
+#: ui/cryptoconfigmodule.cpp:547
+#, kde-format
+msgid "1 - Basic"
+msgstr "1 - Základní"
+
+#: ui/cryptoconfigmodule.cpp:548
+#, kde-format
+msgid "2 - Verbose"
+msgstr "2 - Podrobně"
+
+#: ui/cryptoconfigmodule.cpp:549
+#, kde-format
+msgid "3 - More Verbose"
+msgstr "3 - Podrobněji"
+
+#: ui/cryptoconfigmodule.cpp:550
+#, kde-format
+msgid "4 - All"
+msgstr "4 - Vše"
+
+#: ui/cryptoconfigmodule.cpp:559
+#, kde-format
+msgid "Set the debugging level to"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:787
+#, kde-format
+msgid "Show..."
+msgstr "Zobrazit..."
+
+#: ui/cryptoconfigmodule.cpp:787 ui/cryptoconfigmodule.cpp:876
+#, kde-format
+msgid "Edit..."
+msgstr "Upravit..."
+
+#: ui/cryptoconfigmodule.cpp:841
+#, kde-format
+msgid "Configure LDAP Servers"
+msgstr "Nastavit LDAP servery"
+
+#: ui/cryptoconfigmodule.cpp:862
+#, kde-format
+msgid "None configured"
+msgstr "Nenastaveno"
+
+#: ui/cryptoconfigmodule.cpp:864
+#, kde-format
+msgid "1 server configured"
+msgid_plural "%1 servers configured"
+msgstr[0] "1 server byl nastaven"
+msgstr[1] "%1 servery byly nastaveny"
+msgstr[2] "%1 serverů bylo nastaveno"
+
+#: ui/cryptoconfigmodule.cpp:879
+#, kde-format
+msgid "Use keyserver at"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:968
+#, kde-format
+msgid "Configure Keyservers"
+msgstr "Nastavit servery klíčů"
+
+#: ui/directoryserviceswidget.cpp:67
+#, kde-format
+msgctxt "default server name, keep it a valid domain name, ie. no spaces"
+msgid "server"
+msgstr "server"
+
+#: ui/directoryserviceswidget.cpp:95
+#, kde-format
+msgid "hkp"
+msgstr "hkp"
+
+#: ui/directoryserviceswidget.cpp:96
+#, kde-format
+msgid "http"
+msgstr "http"
+
+#: ui/directoryserviceswidget.cpp:97
+#, kde-format
+msgid "https"
+msgstr "https"
+
+#: ui/directoryserviceswidget.cpp:98
+#, kde-format
+msgid "ftp"
+msgstr "ftp"
+
+#: ui/directoryserviceswidget.cpp:99
+#, kde-format
+msgid "ftps"
+msgstr "ftps"
+
+#: ui/directoryserviceswidget.cpp:100
+#, kde-format
+msgid "ldap"
+msgstr "ldap"
+
+#: ui/directoryserviceswidget.cpp:101
+#, kde-format
+msgid "ldaps"
+msgstr "ldaps"
+
+#: ui/directoryserviceswidget.cpp:588
+#, kde-format
+msgid "Server Name"
+msgstr "Název serveru"
+
+#: ui/directoryserviceswidget.cpp:589
+#, kde-format
+msgid "Server Port"
+msgstr "Port serveru"
+
+#: ui/directoryserviceswidget.cpp:590
+#, kde-format
+msgid "Base DN"
+msgstr "Base DN"
+
+#: ui/directoryserviceswidget.cpp:591
+#, kde-format
+msgid "User Name"
+msgstr "Uživatelské jméno"
+
+#: ui/directoryserviceswidget.cpp:592
+#, kde-format
+msgid "Password"
+msgstr "Heslo"
+
+#: ui/directoryserviceswidget.cpp:614
+#, kde-format
+msgid "(read-only)"
+msgstr "(pouze pro čtení)"
+
+#: ui/directoryserviceswidget.cpp:616
+#, kde-format
+msgctxt "amended tooltip; %1: original tooltip"
+msgid "%1 (read-only)"
+msgstr "%1 (pouze pro čtení)"
+
+#: ui/directoryserviceswidget.cpp:739
+#, kde-format
+msgid ""
+"Enter the name or IP address of the server hosting the directory service."
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:741
+#, kde-format
+msgid ""
+"<b>(Optional, the default is fine in most cases)</b> Pick the port number "
+"the directory service is listening on."
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:744
+#, kde-format
+msgid ""
+"<b>(Only for LDAP)</b> Enter the base DN for this LDAP server to limit "
+"searches to only that subtree of the directory."
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:747
+#, kde-format
+msgid "<b>(Optional)</b> Enter your user name here, if needed."
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:749
+#, kde-format
+msgid ""
+"<b>(Optional, not recommended)</b> Enter your password here, if needed. Note "
+"that the password will be saved in the clear in a config file in your home "
+"directory."
+msgstr ""
+
+#. i18n: ectx: property (windowTitle), widget (QWidget, DirectoryServicesWidget)
+#: ui/directoryserviceswidget.ui:14
+#, kde-format
+msgid "Directory Services Configuration"
+msgstr "Nastavení adresářových služeb"
+
+#. i18n: ectx: property (text), widget (QLabel, pgpKSLabel)
+#: ui/directoryserviceswidget.ui:22
+#, kde-format
+msgid "OpenPGP Keyserver:"
+msgstr ""
+
+#. i18n: ectx: property (title), widget (QGroupBox, x500LA)
+#: ui/directoryserviceswidget.ui:35
+#, kde-format
+msgid "X509 Directory services:"
+msgstr ""
+
+#. i18n: ectx: property (whatsThis), widget (QTreeView, treeView)
+#: ui/directoryserviceswidget.ui:43
+#, kde-format
+msgid ""
+"This is a list of all directory services that are configured for use with "
+"X.509."
+msgstr ""
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:70
+#, kde-format
+msgid "Click to add a service"
+msgstr "Klikněte k přidání služby"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:73
+#, kde-format
+msgid ""
+"Click this button to create a new directory service entry as a clone of the "
+"currently selected one (or with default values, if no other is selected). "
+"You can then configure details in the table on the left hand."
+msgstr ""
+
+#. i18n: ectx: property (text), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:76
+#, kde-format
+msgid "New"
+msgstr "Nový"
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:92
+#, kde-format
+msgid "Click to remove the currently selected service"
+msgstr "Klikněte k odstranění právě zvolené služby"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:95
+#, kde-format
+msgid ""
+"Click this button to remove the currently selected directory service. The "
+"change will only take effect once you acknowledge the main configuration "
+"dialog."
+msgstr ""
+
+#. i18n: ectx: property (text), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:98
+#, kde-format
+msgid "Delete"
+msgstr "Smazat"
+
+#. i18n: ectx: property (whatsThis), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:128
+#, kde-format
+msgid ""
+"Use this option to switch display of username and password information on or "
+"off in the above table."
+msgstr ""
+
+#. i18n: ectx: property (text), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:131
+#, kde-format
+msgid "Show user and password information"
+msgstr "Zobrazit informaci o uživateli a heslu"
+
+#: ui/dnattributeorderconfigwidget.cpp:73
+#, kde-format
+msgid "Description"
+msgstr "Popis"
+
+#: ui/dnattributeorderconfigwidget.cpp:91
+#, kde-format
+msgid "Available attributes:"
+msgstr "Dostupné atributy:"
+
+#: ui/dnattributeorderconfigwidget.cpp:92
+#, kde-format
+msgid "Current attribute order:"
+msgstr "Současné pořadí atributů:"
+
+#: ui/dnattributeorderconfigwidget.cpp:112
+#, kde-format
+msgid "All others"
+msgstr "Vše ostatní"
+
+#: ui/dnattributeorderconfigwidget.cpp:129
+#, kde-format
+msgid "Move to top"
+msgstr "Přesunout navrch"
+
+#: ui/dnattributeorderconfigwidget.cpp:130
+#, kde-format
+msgid "Move one up"
+msgstr "Přesunout nahoru"
+
+#: ui/dnattributeorderconfigwidget.cpp:131
+#, kde-format
+msgid "Remove from current attribute order"
+msgstr "Odstranit ze současného pořadí atributů"
+
+#: ui/dnattributeorderconfigwidget.cpp:132
+#, kde-format
+msgid "Add to current attribute order"
+msgstr "Přidat do současného pořadí atributů"
+
+#: ui/dnattributeorderconfigwidget.cpp:133
+#, kde-format
+msgid "Move one down"
+msgstr "Přesunout dolů"
+
+#: ui/dnattributeorderconfigwidget.cpp:134
+#, kde-format
+msgid "Move to bottom"
+msgstr "Přesunout dospodu"
+
+#: ui/keyapprovaldialog.cpp:87
+#, kde-kuit-format
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>nic</placeholder>"
+
+#: ui/keyapprovaldialog.cpp:88
+#, kde-format
+msgid "Never Encrypt with This Key"
+msgstr "Tímto klíčem nikdy nešifrovat"
+
+#: ui/keyapprovaldialog.cpp:89
+#, kde-format
+msgid "Always Encrypt with This Key"
+msgstr "Vždy šifrovat tímto klíčem"
+
+#: ui/keyapprovaldialog.cpp:90
+#, kde-format
+msgid "Encrypt Whenever Encryption is Possible"
+msgstr "Šifrovat kdykoli je to možné"
+
+#: ui/keyapprovaldialog.cpp:91
+#, kde-format
+msgid "Always Ask"
+msgstr "Vždy se dotázat"
+
+#: ui/keyapprovaldialog.cpp:92
+#, kde-format
+msgid "Ask Whenever Encryption is Possible"
+msgstr "Dotázat se, kdykoli je šifrování možné"
+
+#: ui/keyapprovaldialog.cpp:113
+#, kde-format
+msgid "Encryption Key Approval"
+msgstr "Schválení šifrovacího klíče"
+
+#: ui/keyapprovaldialog.cpp:129
+#, kde-format
+msgid "The following keys will be used for encryption:"
+msgstr "Následující klíče budou použity pro šifrování:"
+
+#: ui/keyapprovaldialog.cpp:145
+#, kde-format
+msgid "Your keys:"
+msgstr "Vaše klíče:"
+
+#: ui/keyapprovaldialog.cpp:157
+#, kde-format
+msgid "Recipient:"
+msgstr "Příjemce:"
+
+#: ui/keyapprovaldialog.cpp:162
+#, kde-format
+msgid "Encryption keys:"
+msgstr "Šifrovací klíče:"
+
+#: ui/keyapprovaldialog.cpp:169
+#, kde-format
+msgid "Encryption preference:"
+msgstr "Přednost v šifrování:"
+
+#: ui/keyrequester.cpp:118
+#, kde-format
+msgid "Clear"
+msgstr "Vyprázdnit"
+
+#: ui/keyrequester.cpp:121
+#, kde-format
+msgid "Change..."
+msgstr "Změnit..."
+
+#: ui/keyrequester.cpp:232 ui/keyselectiondialog.cpp:256
+#, kde-kuit-format
+msgid "<placeholder>unknown</placeholder>"
+msgstr "<placeholder>neznámý</placeholder>"
+
+#: ui/keyrequester.cpp:246 ui/keyselectiondialog.cpp:657
+#, kde-format
+msgid ""
+"<qt><p>An error occurred while fetching the keys from the backend:</p><p><b>"
+"%1</b></p></qt>"
+msgstr ""
+"<qt> <p>Nastala chyba při získávání klíčů z modulu:</p><p><b>%1</b></p></qt>"
+
+#: ui/keyrequester.cpp:251 ui/keyrequester.cpp:283 ui/keyrequester.cpp:306
+#: ui/keyselectiondialog.cpp:630 ui/keyselectiondialog.cpp:662
+#, kde-format
+msgid "Key Listing Failed"
+msgstr "Výpis klíče selhal"
+
+#: ui/keyrequester.cpp:281
+#, kde-format
+msgid ""
+"The OpenPGP backend does not support listing keys. Check your installation."
+msgstr ""
+"Tento OpenPGP modul nepodporuje výpis klíčů. Zkontrolujte si svou instalaci."
+
+#: ui/keyrequester.cpp:304
+#, kde-format
+msgid ""
+"The S/MIME backend does not support listing keys. Check your installation."
+msgstr ""
+"Tento S/MIME modul nepodporuje výpis klíčů. Zkontrolujte si svou instalaci."
+
+#: ui/keyrequester.cpp:426
+#, kde-format
+msgid "OpenPGP Key Selection"
+msgstr "Výběr klíče OpenPGP"
+
+#: ui/keyrequester.cpp:427
+#, kde-format
+msgid "Please select an OpenPGP key to use."
+msgstr "Prosím, vyberte OpenPGP klíč k použití."
+
+#: ui/keyrequester.cpp:429
+#, kde-format
+msgid "S/MIME Key Selection"
+msgstr "Výběr S/MIME klíče"
+
+#: ui/keyrequester.cpp:430
+#, kde-format
+msgid "Please select an S/MIME key to use."
+msgstr "Prosím, zvolte, který S/MIME klíč použít."
+
+#: ui/keyrequester.cpp:432
+#, kde-format
+msgid "Key Selection"
+msgstr "Výběr klíče"
+
+#: ui/keyrequester.cpp:433
+#, kde-format
+msgid "Please select an (OpenPGP or S/MIME) key to use."
+msgstr "Prosím, zvolte, který klíč (OpenPGP nebo S/MIME) použít."
+
+#: ui/keyselectioncombo.cpp:195
+#, kde-format
+msgctxt "Name <email> (validity, type, created: date)"
+msgid "%1 (%2, %3, created: %4)"
+msgstr ""
+
+#: ui/keyselectioncombo.cpp:196
+#, kde-format
+msgctxt "Name <email>"
+msgid "%1 <%2>"
+msgstr "%1 <%2>"
+
+#: ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "OpenPGP"
+msgstr "OpenPGP"
+
+#: ui/keyselectioncombo.cpp:347
+#, kde-format
+msgid "Loading keys ..."
+msgstr "Načítám klíče..."
+
+#: ui/keyselectiondialog.cpp:98
+#, kde-format
+msgid "The key is not valid."
+msgstr "Klíč není platný."
+
+#: ui/keyselectiondialog.cpp:106
+#, kde-format
+msgid "The key is expired."
+msgstr "Platnost klíče uplynula."
+
+#: ui/keyselectiondialog.cpp:110
+#, kde-format
+msgid "The key is revoked."
+msgstr "Klíč byl odvolán."
+
+#: ui/keyselectiondialog.cpp:114
+#, kde-format
+msgid "The key is disabled."
+msgstr "Klíč byl vypnut."
+
+#: ui/keyselectiondialog.cpp:122
+#, kde-format
+msgid "The key is not designated for encryption."
+msgstr "Klíč není určen pro šifrování."
+
+#: ui/keyselectiondialog.cpp:128
+#, kde-format
+msgid "The key is not designated for signing."
+msgstr "Klíč není určen pro podepisování."
+
+#: ui/keyselectiondialog.cpp:134
+#, kde-format
+msgid "The key is not designated for certifying."
+msgstr "Klíč není určen pro certifikaci."
+
+#: ui/keyselectiondialog.cpp:140
+#, kde-format
+msgid "The key is not designated for authentication."
+msgstr "Klíč není určen pro ověřování."
+
+#: ui/keyselectiondialog.cpp:148
+#, kde-format
+msgid "The key is not secret."
+msgstr "Klíč není tajný."
+
+#: ui/keyselectiondialog.cpp:163
+#, kde-format
+msgid "The key is not trusted enough."
+msgstr "Klíč není dostatečně důvěryhodný."
+
+#: ui/keyselectiondialog.cpp:169
+#, kde-format
+msgid "The key can be used."
+msgstr "Klíč může být použit."
+
+#: ui/keyselectiondialog.cpp:230
+#, kde-format
+msgid "Key ID"
+msgstr "ID klíče"
+
+#: ui/keyselectiondialog.cpp:231
+#, kde-format
+msgid "User ID"
+msgstr "ID uživatele"
+
+#: ui/keyselectiondialog.cpp:279
+#, kde-format
+msgid "never"
+msgstr "nikdy"
+
+#: ui/keyselectiondialog.cpp:289 ui/keyselectiondialog.cpp:291
+#: ui/keyselectiondialog.cpp:300 ui/keyselectiondialog.cpp:302
+#, kde-format
+msgid "unknown"
+msgstr "neznámý"
+
+#: ui/keyselectiondialog.cpp:289
+#, kde-format
+msgid "OpenPGP key for <b>%1</b>"
+msgstr "Klíč OpenPGP pro <b>%1</b>"
+
+#: ui/keyselectiondialog.cpp:291
+#, kde-format
+msgid "S/MIME key for <b>%1</b>"
+msgstr "Klíč S/MIME pro <b>%1</b>"
+
+#: ui/keyselectiondialog.cpp:298
+#, kde-format
+msgctxt "Key creation date"
+msgid "Created"
+msgstr "Vytvořeno"
+
+#: ui/keyselectiondialog.cpp:299
+#, kde-format
+msgctxt "Key Expiration date"
+msgid "Expiry"
+msgstr "Vyprší"
+
+#: ui/keyselectiondialog.cpp:300
+#, kde-format
+msgctxt "Key fingerprint"
+msgid "Fingerprint"
+msgstr "Otisk"
+
+#: ui/keyselectiondialog.cpp:302
+#, kde-format
+msgctxt "Key issuer"
+msgid "Issuer"
+msgstr "Vydavatel"
+
+#: ui/keyselectiondialog.cpp:304
+#, kde-format
+msgctxt "Key status"
+msgid "Status"
+msgstr "Stav"
+
+#: ui/keyselectiondialog.cpp:456
+#, kde-format
+msgid "Search for &External Certificates"
+msgstr "Vyhledat &externí certifikáty"
+
+#: ui/keyselectiondialog.cpp:470
+#, kde-format
+msgid "&Search for:"
+msgstr "&Hledat:"
+
+#: ui/keyselectiondialog.cpp:494
+#, kde-format
+msgid "&Remember choice"
+msgstr "Zapamatovat si výbě&r"
+
+#: ui/keyselectiondialog.cpp:497
+#, kde-format
+msgid ""
+"<qt><p>If you check this box your choice will be stored and you will not be "
+"asked again.</p></qt>"
+msgstr ""
+"<qt> <p>Pokud zaškrtnete toto políčko, bude vaše volba uložena a již "
+"nebudete dotazováni.</p></qt>"
+
+#: ui/keyselectiondialog.cpp:509
+#, kde-format
+msgid "&Reread Keys"
+msgstr "Znovu načíst &klíče"
+
+#: ui/keyselectiondialog.cpp:510
+#, kde-format
+msgid "&Start Certificate Manager"
+msgstr "&Spustit správce certifikátů"
+
+#: ui/keyselectiondialog.cpp:628
+#, kde-format
+msgid "No backends found for listing keys. Check your installation."
+msgstr "Nenalezen žádný modul pro výpis klíčů. Zkontrolujte si svou instalaci."
+
+#: ui/keyselectiondialog.cpp:644
+#, kde-format
+msgid "Could not start certificate manager; please check your installation."
+msgstr ""
+"Nelze spustit správce certifikátů; prosím zkontrolujte svoji instalaci."
+
+#: ui/keyselectiondialog.cpp:646
+#, kde-format
+msgid "Certificate Manager Error"
+msgstr "Chyba správce certifikátů"
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Checking selected keys..."
+msgstr "Kontroluji vybrané klíče..."
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Fetching keys..."
+msgstr "Stahuji klíče..."
+
+#: ui/keyselectiondialog.cpp:731
+#, kde-format
+msgid ""
+"<qt>One backend returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgid_plural ""
+"<qt>%1 backends returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgstr[0] ""
+"<qt>Jedna podpůrná vrstva vrátila zkrácený výstup.<p>Ne všechny dostupné "
+"klíče jsou zobrazeny</p></qt>"
+msgstr[1] ""
+"<qt>%1 podpůrné vrstvy vrátily zkrácený výstup.<p>Ne všechny dostupné klíče "
+"jsou zobrazeny</p></qt>"
+msgstr[2] ""
+"<qt>%1 podpůrných vrstev vrátilo zkrácený výstup.<p>Ne všechny dostupné "
+"klíče jsou zobrazeny</p></qt>"
+
+#: ui/keyselectiondialog.cpp:736
+#, kde-format
+msgid "Key List Result"
+msgstr "Výsledek výpisu klíčů"
+
+#: ui/keyselectiondialog.cpp:856
+#, kde-format
+msgid "Recheck Key"
+msgstr "Znovu zkontrolovat klíč"
+
+#: ui/messagebox.cpp:71
+#, kde-format
+msgid "Your system does not have support for GnuPG Audit Logs"
+msgstr ""
+
+#: ui/messagebox.cpp:72
+#, kde-format
+msgid "System Error"
+msgstr "Systémová chyba"
+
+#: ui/messagebox.cpp:79
+#, kde-format
+msgid ""
+"An error occurred while trying to retrieve the GnuPG Audit Log:\n"
+"%1"
+msgstr ""
+
+#: ui/messagebox.cpp:81
+#, kde-format
+msgid "GnuPG Audit Log Error"
+msgstr ""
+
+#: ui/messagebox.cpp:88
+#, kde-format
+msgid "No GnuPG Audit Log available for this operation."
+msgstr ""
+
+#: ui/messagebox.cpp:89
+#, kde-format
+msgid "No GnuPG Audit Log"
+msgstr ""
+
+#: ui/messagebox.cpp:109 ui/messagebox.cpp:115
+#, kde-format
+msgid "GnuPG Audit Log Viewer"
+msgstr ""
+
+#: ui/messagebox.cpp:121
+#, kde-format
+msgid "Signing failed: %1"
+msgstr "Podepisování selhalo: %1"
+
+#: ui/messagebox.cpp:122
+#, kde-format
+msgid "Signing successful"
+msgstr "Podepisování úspěšné"
+
+#: ui/messagebox.cpp:133
+#, kde-format
+msgid "Encryption failed: %1"
+msgstr "Šifrování selhalo: %1"
+
+#: ui/messagebox.cpp:134
+#, kde-format
+msgid "Encryption successful"
+msgstr "Šifrování úspěšné"
+
+#: ui/messagebox.cpp:155
+#, kde-format
+msgid "Signing Result"
+msgstr "Výsledek podepisování"
+
+#: ui/messagebox.cpp:167
+#, kde-format
+msgid "Signing Error"
+msgstr "Chyba v podepisování"
+
+#: ui/messagebox.cpp:179 ui/messagebox.cpp:203
+#, kde-format
+msgid "Encryption Result"
+msgstr "Výsledek šifrování"
+
+#: ui/messagebox.cpp:191 ui/messagebox.cpp:215
+#, kde-format
+msgid "Encryption Error"
+msgstr "Chyba v šifrování"
+
+#: ui/messagebox.cpp:263
+#, kde-format
+msgid "&Show Audit Log"
+msgstr "Zobrazit záznam Auditu"
+
+#: ui/progressdialog.cpp:91
+#, kde-format
+msgid "%1: %2"
+msgstr "%1: %2"
--- /dev/null
+# translation of libkleopatra.po to dansk
+# Danish translation of libkleopatra
+# Erik Kjær Pedersen <erik@binghamton.edu>, 2004, 2005.
+# Jan Madsen <jan.madsen.pt@gmail.com>, 2008.
+# Martin Schlander <mschlander@opensuse.org>, 2008, 2009, 2010, 2011, 2015, 2016.
+msgid ""
+msgstr ""
+"Project-Id-Version: libkleopatra\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2017-07-12 06:56+0200\n"
+"PO-Revision-Date: 2016-08-11 22:04+0100\n"
+"Last-Translator: Martin Schlander <mschlander@opensuse.org>\n"
+"Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
+"Language: da\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Lokalize 2.0\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+
+#: kleo/checksumdefinition.cpp:107
+#, kde-format
+msgid "Error in checksum definition %1: %2"
+msgstr "Fejl i tjeksum-definition %1: %2"
+
+#: kleo/checksumdefinition.cpp:157
+#, kde-format
+msgid "Cannot use both %f and | in '%1'"
+msgstr "Kan ikke bruge både %f og | i \"%1\""
+
+#: kleo/checksumdefinition.cpp:167
+#, kde-format
+msgid "Quoting error in '%1' entry"
+msgstr "Citationsfejl i indgangen \"%1\""
+
+#: kleo/checksumdefinition.cpp:170
+#, kde-format
+msgid "'%1' too complex (would need shell)"
+msgstr "\"%1\" er for kompleks (ville kræve en skal)"
+
+#: kleo/checksumdefinition.cpp:174
+#, kde-format
+msgid "'%1' entry is empty/missing"
+msgstr "Indgangen \"%1\" er tom/mangler"
+
+#: kleo/checksumdefinition.cpp:183
+#, kde-format
+msgid "'%1' empty or not found"
+msgstr "\"%1\" er tom eller blev ikke fundet"
+
+#: kleo/checksumdefinition.cpp:222
+#, kde-format
+msgid "'id' entry is empty/missing"
+msgstr "Indgangen \"id\" er tom/mangler"
+
+#: kleo/checksumdefinition.cpp:225
+#, kde-format
+msgid "'output-file' entry is empty/missing"
+msgstr "Indgangen \"output-file\" er tom/mangler"
+
+#: kleo/checksumdefinition.cpp:228
+#, kde-format
+msgid "'file-patterns' entry is empty/missing"
+msgstr "Indgangen \"file-patterns\" er tom/mangler"
+
+#: kleo/checksumdefinition.cpp:395
+#, kde-format
+msgid "Caught unknown exception in group %1"
+msgstr "Fangede uventet undtagelse i gruppen %1"
+
+#: kleo/dn.cpp:507
+#, kde-format
+msgid "Common name"
+msgstr "Almindeligt navn"
+
+#: kleo/dn.cpp:508
+#, kde-format
+msgid "Surname"
+msgstr "Efternavn"
+
+#: kleo/dn.cpp:509
+#, kde-format
+msgid "Given name"
+msgstr "Døbenavn"
+
+#: kleo/dn.cpp:510
+#, kde-format
+msgid "Location"
+msgstr "Sted"
+
+#: kleo/dn.cpp:511
+#, kde-format
+msgid "Title"
+msgstr "Titel"
+
+#: kleo/dn.cpp:512
+#, kde-format
+msgid "Organizational unit"
+msgstr "Organisatorisk enhed"
+
+#: kleo/dn.cpp:513
+#, kde-format
+msgid "Organization"
+msgstr "Organisation"
+
+#: kleo/dn.cpp:514
+#, kde-format
+msgid "Postal code"
+msgstr "Postnummer"
+
+#: kleo/dn.cpp:515
+#, kde-format
+msgid "Country code"
+msgstr "Landekode"
+
+#: kleo/dn.cpp:516
+#, kde-format
+msgid "State or province"
+msgstr "Stat eller provins"
+
+#: kleo/dn.cpp:517
+#, kde-format
+msgid "Domain component"
+msgstr "Domænekomponent"
+
+#: kleo/dn.cpp:518
+#, kde-format
+msgid "Business category"
+msgstr "Forretningskategori"
+
+#: kleo/dn.cpp:519
+#, kde-format
+msgid "Email address"
+msgstr "E-mail-adresse"
+
+#: kleo/dn.cpp:520
+#, kde-format
+msgid "Mail address"
+msgstr "Postadresse"
+
+#: kleo/dn.cpp:521
+#, kde-format
+msgid "Mobile phone number"
+msgstr "Mobiltelefonnummer"
+
+#: kleo/dn.cpp:522
+#, kde-format
+msgid "Telephone number"
+msgstr "Telefonnummer"
+
+#: kleo/dn.cpp:523
+#, kde-format
+msgid "Fax number"
+msgstr "Fax-nummer"
+
+#: kleo/dn.cpp:524
+#, kde-format
+msgid "Street address"
+msgstr "Gadeadresse"
+
+#: kleo/dn.cpp:525
+#, kde-format
+msgid "Unique ID"
+msgstr "Entydigt ID"
+
+#: kleo/enum.cpp:57
+#, kde-format
+msgid "Inline OpenPGP (deprecated)"
+msgstr "Indlejret OpenPGP (forældet)"
+
+#: kleo/enum.cpp:62
+#, kde-format
+msgid "OpenPGP/MIME"
+msgstr "OpenPGP/MIME"
+
+#: kleo/enum.cpp:67 ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "S/MIME"
+msgstr "S/MIME"
+
+#: kleo/enum.cpp:72
+#, kde-format
+msgid "S/MIME Opaque"
+msgstr "S/MIME Opaque"
+
+#: kleo/enum.cpp:104
+#, kde-format
+msgid "Any"
+msgstr "Enhver"
+
+#: kleo/enum.cpp:177
+#, kde-format
+msgid "Never Encrypt"
+msgstr "Kryptér aldrig"
+
+#: kleo/enum.cpp:179
+#, kde-format
+msgid "Always Encrypt"
+msgstr "Kryptér altid"
+
+#: kleo/enum.cpp:181
+#, kde-format
+msgid "Always Encrypt If Possible"
+msgstr "Kryptér altid om muligt"
+
+#: kleo/enum.cpp:183 kleo/enum.cpp:240
+#, kde-format
+msgid "Ask"
+msgstr "Spørg"
+
+#: kleo/enum.cpp:185 kleo/enum.cpp:242
+#, kde-format
+msgid "Ask Whenever Possible"
+msgstr "Spørg om muligt"
+
+#: kleo/enum.cpp:187
+#, kde-kuit-format
+msgctxt "no specific preference"
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>ingen</placeholder>"
+
+#: kleo/enum.cpp:234
+#, kde-format
+msgid "Never Sign"
+msgstr "Signér aldrig"
+
+#: kleo/enum.cpp:236
+#, kde-format
+msgid "Always Sign"
+msgstr "Signér altid"
+
+#: kleo/enum.cpp:238
+#, kde-format
+msgid "Always Sign If Possible"
+msgstr "Signér altid om muligt"
+
+#: kleo/enum.cpp:244
+#, kde-format
+msgctxt "no specific preference"
+msgid "<none>"
+msgstr "<ingen>"
+
+#: kleo/keyfiltermanager.cpp:85
+#, kde-format
+msgid "All Certificates"
+msgstr "Alle certifikater"
+
+#: kleo/keyfiltermanager.cpp:100
+#, kde-format
+msgid "My Certificates"
+msgstr "Mine certifikater"
+
+#: kleo/keyfiltermanager.cpp:118
+#, kde-format
+msgid "Trusted Certificates"
+msgstr "Betroede certifikater"
+
+#: kleo/keyfiltermanager.cpp:135
+#, fuzzy, kde-format
+#| msgid "Trusted Certificates"
+msgid "Fully Trusted Certificates"
+msgstr "Betroede certifikater"
+
+#: kleo/keyfiltermanager.cpp:152
+#, kde-format
+msgid "Other Certificates"
+msgstr "Andre certifikater"
+
+#: kleo/keyfiltermanager.cpp:166
+#, fuzzy, kde-format
+#| msgid "All Certificates"
+msgid "VS-compliant Certificates"
+msgstr "Alle certifikater"
+
+#: kleo/keyfiltermanager.cpp:184
+#, fuzzy, kde-format
+#| msgid "Trusted Certificates"
+msgid "Not validated Certificates"
+msgstr "Betroede certifikater"
+
+#: ui/auditlogviewer.cpp:49
+#, kde-format
+msgid "View GnuPG Audit Log"
+msgstr "Se GnuPG-auditlog"
+
+#: ui/auditlogviewer.cpp:53
+#, kde-format
+msgid "&Copy to Clipboard"
+msgstr "&Kopiér til udklipsholderen"
+
+#: ui/auditlogviewer.cpp:59
+#, kde-format
+msgid "&Save to Disk..."
+msgstr "&Gem til disk..."
+
+#: ui/auditlogviewer.cpp:95
+#, kde-format
+msgid "Choose File to Save GnuPG Audit Log to"
+msgstr "Vælg fil, som GnuPG-auditlog skal gemmes til"
+
+#: ui/auditlogviewer.cpp:118
+#, kde-format
+msgid "Could not save to file \"%1\": %2"
+msgstr "Kunne ikke gemme til filen \"%1\": %2"
+
+#: ui/auditlogviewer.cpp:120
+#, kde-format
+msgid "File Save Error"
+msgstr "Filgemningsfejl"
+
+#: ui/cryptoconfigdialog.cpp:44
+#, kde-format
+msgid "Configure GnuPG Backend"
+msgstr "Indstil GnuPG-motor"
+
+#: ui/cryptoconfigdialog.cpp:55
+#, kde-format
+msgid "&Reset"
+msgstr "&Nulstil"
+
+#: ui/cryptoconfigmodule.cpp:160
+#, kde-format
+msgid "GpgConf Error"
+msgstr "GpgConf-fejl"
+
+#: ui/cryptoconfigmodule.cpp:216
+#, kde-format
+msgid ""
+"The gpgconf tool used to provide the information for this dialog does not "
+"seem to be installed properly. It did not return any components. Try running "
+"\"%1\" on the command line for more information."
+msgstr ""
+"Værktøjet gpgconf der bruges til at levere information til denne dialog, "
+"synes ikke at være installeret korrekt. Det returnerede ikke nogen "
+"komponenter. Prøv at køre \"%1\" på kommandolinjen for at få mere "
+"information."
+
+#: ui/cryptoconfigmodule.cpp:496
+#, kde-format
+msgctxt ""
+"Translate this to 'yes' or 'no' (use the English words!) depending on "
+"whether your language uses Sentence style capitalisation in GUI labels (yes) "
+"or not (no). Context: We get some backend strings in that have the wrong "
+"capitalizaion (in English, at least) so we need to force the first character "
+"to upper-case. It is this behaviour you can control for your language with "
+"this translation."
+msgid "yes"
+msgstr "yes"
+
+#: ui/cryptoconfigmodule.cpp:546
+#, kde-format
+msgid "0 - None"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:547
+#, kde-format
+msgid "1 - Basic"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:548
+#, kde-format
+msgid "2 - Verbose"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:549
+#, kde-format
+msgid "3 - More Verbose"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:550
+#, kde-format
+msgid "4 - All"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:559
+#, kde-format
+msgid "Set the debugging level to"
+msgstr "Sæt fejlretningsniveauet til"
+
+#: ui/cryptoconfigmodule.cpp:787
+#, kde-format
+msgid "Show..."
+msgstr "Vis..."
+
+#: ui/cryptoconfigmodule.cpp:787 ui/cryptoconfigmodule.cpp:876
+#, kde-format
+msgid "Edit..."
+msgstr "Redigér..."
+
+#: ui/cryptoconfigmodule.cpp:841
+#, kde-format
+msgid "Configure LDAP Servers"
+msgstr "Indstil LDAP-servere"
+
+#: ui/cryptoconfigmodule.cpp:862
+#, fuzzy, kde-format
+#| msgid "No server configured yet"
+msgid "None configured"
+msgstr "Ingen server indstillet endnu"
+
+#: ui/cryptoconfigmodule.cpp:864
+#, kde-format
+msgid "1 server configured"
+msgid_plural "%1 servers configured"
+msgstr[0] "1 server indstillet"
+msgstr[1] "%1 servere indstillet"
+
+#: ui/cryptoconfigmodule.cpp:879
+#, kde-format
+msgid "Use keyserver at"
+msgstr "Brug nøgleserver på"
+
+#: ui/cryptoconfigmodule.cpp:968
+#, kde-format
+msgid "Configure Keyservers"
+msgstr "Indstil nøgleservere"
+
+#: ui/directoryserviceswidget.cpp:67
+#, kde-format
+msgctxt "default server name, keep it a valid domain name, ie. no spaces"
+msgid "server"
+msgstr "server"
+
+#: ui/directoryserviceswidget.cpp:95
+#, kde-format
+msgid "hkp"
+msgstr "HKP"
+
+#: ui/directoryserviceswidget.cpp:96
+#, kde-format
+msgid "http"
+msgstr "HTTP"
+
+#: ui/directoryserviceswidget.cpp:97
+#, kde-format
+msgid "https"
+msgstr "HTTPS"
+
+#: ui/directoryserviceswidget.cpp:98
+#, kde-format
+msgid "ftp"
+msgstr "FTP"
+
+#: ui/directoryserviceswidget.cpp:99
+#, kde-format
+msgid "ftps"
+msgstr "FTPS"
+
+#: ui/directoryserviceswidget.cpp:100
+#, kde-format
+msgid "ldap"
+msgstr "LDAP"
+
+#: ui/directoryserviceswidget.cpp:101
+#, kde-format
+msgid "ldaps"
+msgstr "LDAPS"
+
+#: ui/directoryserviceswidget.cpp:588
+#, kde-format
+msgid "Server Name"
+msgstr "Servernavn"
+
+#: ui/directoryserviceswidget.cpp:589
+#, kde-format
+msgid "Server Port"
+msgstr "Serverport"
+
+#: ui/directoryserviceswidget.cpp:590
+#, kde-format
+msgid "Base DN"
+msgstr "Basis-DN"
+
+#: ui/directoryserviceswidget.cpp:591
+#, kde-format
+msgid "User Name"
+msgstr "Brugernavn"
+
+#: ui/directoryserviceswidget.cpp:592
+#, kde-format
+msgid "Password"
+msgstr "Adgangskode"
+
+#: ui/directoryserviceswidget.cpp:614
+#, kde-format
+msgid "(read-only)"
+msgstr "(skrivebeskyttet)"
+
+#: ui/directoryserviceswidget.cpp:616
+#, kde-format
+msgctxt "amended tooltip; %1: original tooltip"
+msgid "%1 (read-only)"
+msgstr "%1 (skrivebeskyttet)"
+
+#: ui/directoryserviceswidget.cpp:739
+#, kde-format
+msgid ""
+"Enter the name or IP address of the server hosting the directory service."
+msgstr ""
+"Angiv navnet eller IP-adressen på den server, der er vært for mappetjenesten."
+
+#: ui/directoryserviceswidget.cpp:741
+#, kde-format
+msgid ""
+"<b>(Optional, the default is fine in most cases)</b> Pick the port number "
+"the directory service is listening on."
+msgstr ""
+"<b>(Valgfrit - standard er fint i de fleste tilfælde)</b> Tag portnummeret, "
+"som mappetjenesten lytter på."
+
+#: ui/directoryserviceswidget.cpp:744
+#, kde-format
+msgid ""
+"<b>(Only for LDAP)</b> Enter the base DN for this LDAP server to limit "
+"searches to only that subtree of the directory."
+msgstr ""
+"<b>(Kun for LDAP)</b> Angiv basis-DN for denne LDAP-server for at begrænse "
+"søgninger til kun dette undertræ i mappen."
+
+#: ui/directoryserviceswidget.cpp:747
+#, kde-format
+msgid "<b>(Optional)</b> Enter your user name here, if needed."
+msgstr "<b>(Valgfrit)</b> Angiv dit brugernavn her, om nødvendigt."
+
+#: ui/directoryserviceswidget.cpp:749
+#, kde-format
+msgid ""
+"<b>(Optional, not recommended)</b> Enter your password here, if needed. Note "
+"that the password will be saved in the clear in a config file in your home "
+"directory."
+msgstr ""
+"<b>(Valgfri - ikke anbefalet)</b> Angiv din adgangskode her, om nødvendigt. "
+"Bemærk at adgangskoden gemmes som klartekst i en indstillingsfil i din "
+"hjemmemappe."
+
+#. i18n: ectx: property (windowTitle), widget (QWidget, DirectoryServicesWidget)
+#: ui/directoryserviceswidget.ui:14
+#, kde-format
+msgid "Directory Services Configuration"
+msgstr "Indstilling af mappetjeneste"
+
+#. i18n: ectx: property (text), widget (QLabel, pgpKSLabel)
+#: ui/directoryserviceswidget.ui:22
+#, fuzzy, kde-format
+#| msgid "OpenPGP Key Selection"
+msgid "OpenPGP Keyserver:"
+msgstr "Valg af OpenGPG-nøgle"
+
+#. i18n: ectx: property (title), widget (QGroupBox, x500LA)
+#: ui/directoryserviceswidget.ui:35
+#, fuzzy, kde-format
+#| msgid "Directory services:"
+msgid "X509 Directory services:"
+msgstr "Mappetjenester:"
+
+#. i18n: ectx: property (whatsThis), widget (QTreeView, treeView)
+#: ui/directoryserviceswidget.ui:43
+#, fuzzy, kde-format
+#| msgid ""
+#| "This is a list of all directory services that are configured for use with "
+#| "X.509 and OpenPGP."
+msgid ""
+"This is a list of all directory services that are configured for use with "
+"X.509."
+msgstr ""
+"Dette er en liste over alle mapper, der er indstillet til brug med X.509 og "
+"OpenPGP."
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:70
+#, kde-format
+msgid "Click to add a service"
+msgstr "Klik for at tilføje en tjeneste"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:73
+#, kde-format
+msgid ""
+"Click this button to create a new directory service entry as a clone of the "
+"currently selected one (or with default values, if no other is selected). "
+"You can then configure details in the table on the left hand."
+msgstr ""
+"Tryk på denne knap for at oprette en ny mappe-tjenesteindgang som en klon af "
+"den valgte mappe (eller med standardværdier, hvis ingen mappe er valgt). Du "
+"kan så indstille detaljer i tabellen til venstre."
+
+#. i18n: ectx: property (text), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:76
+#, kde-format
+msgid "New"
+msgstr "Ny"
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:92
+#, kde-format
+msgid "Click to remove the currently selected service"
+msgstr "Klik for at fjerne den valgte tjeneste"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:95
+#, kde-format
+msgid ""
+"Click this button to remove the currently selected directory service. The "
+"change will only take effect once you acknowledge the main configuration "
+"dialog."
+msgstr ""
+"Tryk på denne knap for at fjerne den valgte mappetjeneste. Ændringen træder "
+"først i kraft, når du bekræfter i hovedindstillingsdialogen."
+
+#. i18n: ectx: property (text), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:98
+#, kde-format
+msgid "Delete"
+msgstr "Slet"
+
+#. i18n: ectx: property (whatsThis), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:128
+#, kde-format
+msgid ""
+"Use this option to switch display of username and password information on or "
+"off in the above table."
+msgstr ""
+"Brug denne indstilling til at slå visning af information om brugernavn og "
+"adgangskode til og fra i tabellen ovenfor."
+
+#. i18n: ectx: property (text), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:131
+#, kde-format
+msgid "Show user and password information"
+msgstr "Vis bruger- og adgangskode-information"
+
+#: ui/dnattributeorderconfigwidget.cpp:73
+#, kde-format
+msgid "Description"
+msgstr "Beskrivelse"
+
+#: ui/dnattributeorderconfigwidget.cpp:91
+#, kde-format
+msgid "Available attributes:"
+msgstr "Tilgængelige attributter:"
+
+#: ui/dnattributeorderconfigwidget.cpp:92
+#, kde-format
+msgid "Current attribute order:"
+msgstr "Nuværende attributrækkefølge:"
+
+#: ui/dnattributeorderconfigwidget.cpp:112
+#, kde-format
+msgid "All others"
+msgstr "Alle andre"
+
+#: ui/dnattributeorderconfigwidget.cpp:129
+#, kde-format
+msgid "Move to top"
+msgstr "Flyt til top"
+
+#: ui/dnattributeorderconfigwidget.cpp:130
+#, kde-format
+msgid "Move one up"
+msgstr "Flyt én op"
+
+#: ui/dnattributeorderconfigwidget.cpp:131
+#, kde-format
+msgid "Remove from current attribute order"
+msgstr "Fjern fra nuværende attributrækkefølge"
+
+#: ui/dnattributeorderconfigwidget.cpp:132
+#, kde-format
+msgid "Add to current attribute order"
+msgstr "Tilføj til nuværende attributrækkefølge"
+
+#: ui/dnattributeorderconfigwidget.cpp:133
+#, kde-format
+msgid "Move one down"
+msgstr "Flyt én ned"
+
+#: ui/dnattributeorderconfigwidget.cpp:134
+#, kde-format
+msgid "Move to bottom"
+msgstr "Flyt helt ned"
+
+#: ui/keyapprovaldialog.cpp:87
+#, kde-kuit-format
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>ingen</placeholder>"
+
+#: ui/keyapprovaldialog.cpp:88
+#, kde-format
+msgid "Never Encrypt with This Key"
+msgstr "Kryptér aldrig med denne nøgle"
+
+#: ui/keyapprovaldialog.cpp:89
+#, kde-format
+msgid "Always Encrypt with This Key"
+msgstr "Kryptér altid med denne nøgle"
+
+#: ui/keyapprovaldialog.cpp:90
+#, kde-format
+msgid "Encrypt Whenever Encryption is Possible"
+msgstr "Kryptér når kryptering er mulig"
+
+#: ui/keyapprovaldialog.cpp:91
+#, kde-format
+msgid "Always Ask"
+msgstr "Spørg altid"
+
+#: ui/keyapprovaldialog.cpp:92
+#, kde-format
+msgid "Ask Whenever Encryption is Possible"
+msgstr "Spørg når kryptering er mulig"
+
+#: ui/keyapprovaldialog.cpp:113
+#, kde-format
+msgid "Encryption Key Approval"
+msgstr "Krypteringsnøgle-godkendelse"
+
+#: ui/keyapprovaldialog.cpp:129
+#, kde-format
+msgid "The following keys will be used for encryption:"
+msgstr "Følgende nøgler bliver brugt til kryptering:"
+
+#: ui/keyapprovaldialog.cpp:145
+#, kde-format
+msgid "Your keys:"
+msgstr "Dine nøgler:"
+
+#: ui/keyapprovaldialog.cpp:157
+#, kde-format
+msgid "Recipient:"
+msgstr "Modtager:"
+
+#: ui/keyapprovaldialog.cpp:162
+#, kde-format
+msgid "Encryption keys:"
+msgstr "Krypteringsnøgler:"
+
+#: ui/keyapprovaldialog.cpp:169
+#, kde-format
+msgid "Encryption preference:"
+msgstr "Krypteringspræference:"
+
+#: ui/keyrequester.cpp:118
+#, kde-format
+msgid "Clear"
+msgstr "Ryd"
+
+#: ui/keyrequester.cpp:121
+#, kde-format
+msgid "Change..."
+msgstr "Ændr..."
+
+#: ui/keyrequester.cpp:232 ui/keyselectiondialog.cpp:256
+#, kde-kuit-format
+msgid "<placeholder>unknown</placeholder>"
+msgstr "<placeholder>ukendt</placeholder>"
+
+#: ui/keyrequester.cpp:246 ui/keyselectiondialog.cpp:657
+#, kde-format
+msgid ""
+"<qt><p>An error occurred while fetching the keys from the backend:</p><p><b>"
+"%1</b></p></qt>"
+msgstr ""
+"<qt><p>Der opstod en fejl, mens nøgler blev hentet fra motoren:</p><p><b>%1</"
+"b></p></qt>"
+
+#: ui/keyrequester.cpp:251 ui/keyrequester.cpp:283 ui/keyrequester.cpp:306
+#: ui/keyselectiondialog.cpp:630 ui/keyselectiondialog.cpp:662
+#, kde-format
+msgid "Key Listing Failed"
+msgstr "Listevisning af nøgler fejlede"
+
+#: ui/keyrequester.cpp:281
+#, kde-format
+msgid ""
+"The OpenPGP backend does not support listing keys. Check your installation."
+msgstr ""
+"OpenPGP-motoren understøtter ikke listevisning af nøgler. Tjek din "
+"installation."
+
+#: ui/keyrequester.cpp:304
+#, kde-format
+msgid ""
+"The S/MIME backend does not support listing keys. Check your installation."
+msgstr ""
+"S/MIME-motoren understøtter ikke listevisning af nøgler. Tjek din "
+"installation."
+
+#: ui/keyrequester.cpp:426
+#, kde-format
+msgid "OpenPGP Key Selection"
+msgstr "Valg af OpenGPG-nøgle"
+
+#: ui/keyrequester.cpp:427
+#, kde-format
+msgid "Please select an OpenPGP key to use."
+msgstr "Vælg en OpenGPG-nøgle til anvendelse."
+
+#: ui/keyrequester.cpp:429
+#, kde-format
+msgid "S/MIME Key Selection"
+msgstr "Valg af S/MIME-nøgle"
+
+#: ui/keyrequester.cpp:430
+#, kde-format
+msgid "Please select an S/MIME key to use."
+msgstr "Vælg en S/MIME-nøgle til anvendelse."
+
+#: ui/keyrequester.cpp:432
+#, kde-format
+msgid "Key Selection"
+msgstr "Valg af nøgle"
+
+#: ui/keyrequester.cpp:433
+#, kde-format
+msgid "Please select an (OpenPGP or S/MIME) key to use."
+msgstr "Vælg en (OpenPGP eller S/MIME) nøgle til anvendelse."
+
+#: ui/keyselectioncombo.cpp:195
+#, kde-format
+msgctxt "Name <email> (validity, type, created: date)"
+msgid "%1 (%2, %3, created: %4)"
+msgstr ""
+
+#: ui/keyselectioncombo.cpp:196
+#, kde-format
+msgctxt "Name <email>"
+msgid "%1 <%2>"
+msgstr ""
+
+#: ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "OpenPGP"
+msgstr "OpenPGP"
+
+#: ui/keyselectioncombo.cpp:347
+#, fuzzy, kde-format
+#| msgid "Fetching keys..."
+msgid "Loading keys ..."
+msgstr "Henter nøgler..."
+
+#: ui/keyselectiondialog.cpp:98
+#, kde-format
+msgid "The key is not valid."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:106
+#, kde-format
+msgid "The key is expired."
+msgstr "Nøglen er udløbet."
+
+#: ui/keyselectiondialog.cpp:110
+#, kde-format
+msgid "The key is revoked."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:114
+#, kde-format
+msgid "The key is disabled."
+msgstr "Nøglen er deaktiveret."
+
+#: ui/keyselectiondialog.cpp:122
+#, fuzzy, kde-format
+#| msgid "The following keys will be used for encryption:"
+msgid "The key is not designated for encryption."
+msgstr "Følgende nøgler bliver brugt til kryptering:"
+
+#: ui/keyselectiondialog.cpp:128
+#, kde-format
+msgid "The key is not designated for signing."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:134
+#, kde-format
+msgid "The key is not designated for certifying."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:140
+#, kde-format
+msgid "The key is not designated for authentication."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:148
+#, kde-format
+msgid "The key is not secret."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:163
+#, kde-format
+msgid "The key is not trusted enough."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:169
+#, kde-format
+msgid "The key can be used."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:230
+#, kde-format
+msgid "Key ID"
+msgstr "Nøgle-ID"
+
+#: ui/keyselectiondialog.cpp:231
+#, kde-format
+msgid "User ID"
+msgstr "Bruger-ID"
+
+#: ui/keyselectiondialog.cpp:279
+#, kde-format
+msgid "never"
+msgstr "aldrig"
+
+#: ui/keyselectiondialog.cpp:289 ui/keyselectiondialog.cpp:291
+#: ui/keyselectiondialog.cpp:300 ui/keyselectiondialog.cpp:302
+#, kde-format
+msgid "unknown"
+msgstr "ukendt"
+
+#: ui/keyselectiondialog.cpp:289
+#, kde-format
+msgid "OpenPGP key for <b>%1</b>"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:291
+#, kde-format
+msgid "S/MIME key for <b>%1</b>"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:298
+#, kde-format
+msgctxt "Key creation date"
+msgid "Created"
+msgstr "Oprettet"
+
+#: ui/keyselectiondialog.cpp:299
+#, kde-format
+msgctxt "Key Expiration date"
+msgid "Expiry"
+msgstr "Udløbstid"
+
+#: ui/keyselectiondialog.cpp:300
+#, kde-format
+msgctxt "Key fingerprint"
+msgid "Fingerprint"
+msgstr "Fingeraftryk"
+
+#: ui/keyselectiondialog.cpp:302
+#, kde-format
+msgctxt "Key issuer"
+msgid "Issuer"
+msgstr "Udsteder"
+
+#: ui/keyselectiondialog.cpp:304
+#, kde-format
+msgctxt "Key status"
+msgid "Status"
+msgstr "Status"
+
+#: ui/keyselectiondialog.cpp:456
+#, kde-format
+msgid "Search for &External Certificates"
+msgstr "Søg efter &eksterne certifikater"
+
+#: ui/keyselectiondialog.cpp:470
+#, kde-format
+msgid "&Search for:"
+msgstr "&Søg efter:"
+
+#: ui/keyselectiondialog.cpp:494
+#, kde-format
+msgid "&Remember choice"
+msgstr "&Husk valget"
+
+#: ui/keyselectiondialog.cpp:497
+#, kde-format
+msgid ""
+"<qt><p>If you check this box your choice will be stored and you will not be "
+"asked again.</p></qt>"
+msgstr ""
+"<qt><p>Hvis du afkrydser dette felt, vil dit valg blive gemt, og du vil ikke "
+"blive spurgt igen.</p></qt>"
+
+#: ui/keyselectiondialog.cpp:509
+#, kde-format
+msgid "&Reread Keys"
+msgstr "&Genlæs nøgler"
+
+#: ui/keyselectiondialog.cpp:510
+#, kde-format
+msgid "&Start Certificate Manager"
+msgstr "&Start certifikathåndtering"
+
+#: ui/keyselectiondialog.cpp:628
+#, kde-format
+msgid "No backends found for listing keys. Check your installation."
+msgstr "Ingen motor fundet til listevisning af nøgler. Tjek din installation."
+
+#: ui/keyselectiondialog.cpp:644
+#, kde-format
+msgid "Could not start certificate manager; please check your installation."
+msgstr "Kunne ikke starte certifikathåndtering. Tjek din installation."
+
+#: ui/keyselectiondialog.cpp:646
+#, kde-format
+msgid "Certificate Manager Error"
+msgstr "Fejl i certifikathåndtering"
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Checking selected keys..."
+msgstr "Tjekker valgte nøgler..."
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Fetching keys..."
+msgstr "Henter nøgler..."
+
+#: ui/keyselectiondialog.cpp:731
+#, kde-format
+msgid ""
+"<qt>One backend returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgid_plural ""
+"<qt>%1 backends returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgstr[0] ""
+"<qt>En motor returnerede afkortet output.<p>Ikke alle tilgængelige nøgler "
+"vises</p></qt>"
+msgstr[1] ""
+"<qt>%1 motorer returnerede afkortet output.<p>Ikke alle tilgængelige nøgler "
+"vises</p></qt>"
+
+#: ui/keyselectiondialog.cpp:736
+#, kde-format
+msgid "Key List Result"
+msgstr "Resultat af nøgleliste"
+
+#: ui/keyselectiondialog.cpp:856
+#, kde-format
+msgid "Recheck Key"
+msgstr "Tjek nøgle igen"
+
+#: ui/messagebox.cpp:71
+#, kde-format
+msgid "Your system does not have support for GnuPG Audit Logs"
+msgstr "Dit system understøtter ikke GnuPG-auditlogge"
+
+#: ui/messagebox.cpp:72
+#, kde-format
+msgid "System Error"
+msgstr "Systemfejl"
+
+#: ui/messagebox.cpp:79
+#, kde-format
+msgid ""
+"An error occurred while trying to retrieve the GnuPG Audit Log:\n"
+"%1"
+msgstr ""
+"En fejl opstod under forsøg på at hente GnuPG audit-log:\n"
+"%1"
+
+#: ui/messagebox.cpp:81
+#, kde-format
+msgid "GnuPG Audit Log Error"
+msgstr "GnuPG auditlog-fejl"
+
+#: ui/messagebox.cpp:88
+#, kde-format
+msgid "No GnuPG Audit Log available for this operation."
+msgstr "Ingen GnuPG-audit-log tilgængelig for denne handling"
+
+#: ui/messagebox.cpp:89
+#, kde-format
+msgid "No GnuPG Audit Log"
+msgstr "Ingen GnuPG-audit-log"
+
+#: ui/messagebox.cpp:109 ui/messagebox.cpp:115
+#, kde-format
+msgid "GnuPG Audit Log Viewer"
+msgstr "GnuPG-auditlog-fremviser"
+
+#: ui/messagebox.cpp:121
+#, kde-format
+msgid "Signing failed: %1"
+msgstr "Signering fejlede: %1"
+
+#: ui/messagebox.cpp:122
+#, kde-format
+msgid "Signing successful"
+msgstr "Signering lykkedes"
+
+#: ui/messagebox.cpp:133
+#, kde-format
+msgid "Encryption failed: %1"
+msgstr "Kryptering fejlede: %1"
+
+#: ui/messagebox.cpp:134
+#, kde-format
+msgid "Encryption successful"
+msgstr "Kryptering lykkedes"
+
+#: ui/messagebox.cpp:155
+#, kde-format
+msgid "Signing Result"
+msgstr "Signeringsresultat"
+
+#: ui/messagebox.cpp:167
+#, kde-format
+msgid "Signing Error"
+msgstr "Signeringsfejl"
+
+#: ui/messagebox.cpp:179 ui/messagebox.cpp:203
+#, kde-format
+msgid "Encryption Result"
+msgstr "Krypteringsresultat"
+
+#: ui/messagebox.cpp:191 ui/messagebox.cpp:215
+#, kde-format
+msgid "Encryption Error"
+msgstr "Krypteringsfejl"
+
+#: ui/messagebox.cpp:263
+#, kde-format
+msgid "&Show Audit Log"
+msgstr "&Vis auditlog"
+
+#: ui/progressdialog.cpp:91
+#, kde-format
+msgid "%1: %2"
+msgstr "%1: %2"
+
+#~ msgctxt "New X.509 Directory Server"
+#~ msgid "X.509"
+#~ msgstr "X.509"
+
+#~ msgctxt "New OpenPGP Directory Server"
+#~ msgid "OpenPGP"
+#~ msgstr "OpenPGP"
+
+#~ msgid "Scheme"
+#~ msgstr "Skema"
+
+#~ msgid "X.509"
+#~ msgstr "X.509"
+
+#~ msgid ""
+#~ "Select the access scheme (scheme) that the directory service is available "
+#~ "through."
+#~ msgstr ""
+#~ "Vælg adgangsskema (skemaet), gennem hvilken mappetjenesten er tilgængelig."
+
+#~ msgid ""
+#~ "Check this column if this directory service is providing S/MIME (X.509) "
+#~ "certificates."
+#~ msgstr ""
+#~ "Tjek denne kolonne, om denne mappetjeneste tilbyder S/MIME (X.509) -"
+#~ "certifikater."
+
+#~ msgid ""
+#~ "Check this column if this directory service is providing OpenPGP "
+#~ "certificates."
+#~ msgstr ""
+#~ "Tjek denne kolonne, om denne mappetjeneste tilbyder OpenGPG-certifikater"
+
+#~ msgid "0 - None (no debugging at all)"
+#~ msgstr "0 - Ingen (ingen fejlsøgning overhovedet)"
+
+#~ msgid "1 - Basic (some basic debug messages)"
+#~ msgstr "1 - Basal (nogle basale fejlsøgningsmeddelelser)"
+
+#~ msgid "2 - Advanced (more verbose debug messages)"
+#~ msgstr "2 - Avanceret (mere uddybende fejlsøgningsmeddelelser)"
+
+#~ msgid "3 - Expert (even more detailed messages)"
+#~ msgstr "3 - Ekspert (endnu mere detaljerede meddelelser)"
+
+#~ msgid "4 - Guru (all of the debug messages you can get)"
+#~ msgstr "4 - Guru (alle de fejlsøgningsmeddelelser du kan få)"
+
+#~ msgid "General"
+#~ msgstr "Generelt"
+
+#~ msgid "Chiasmus"
+#~ msgstr "Chiasmus"
+
+#~ msgid "Chiasmus command line tool"
+#~ msgstr "Chiasmus kommandolinjeværktøj"
+
+#~ msgid "Unsupported protocol \"%1\""
+#~ msgstr "Ikke understøttet protokol \"%1\""
+
+#~ msgid "File \"%1\" does not exist or is not executable."
+#~ msgstr "Filen \"%1\" findes ikke, eller kan ikke køres."
+
+#~ msgid "Output from chiasmus"
+#~ msgstr "Output fra chiasmus"
+
+#~ msgid "Decryption failed: %1"
+#~ msgstr "Afkryptering fejlede: %1"
+
+#~ msgid ""
+#~ "The following was received on stderr:\n"
+#~ "%1"
+#~ msgstr ""
+#~ "Følgende blev modtaget på standardfejludskriften:\n"
+#~ "%1"
+
+#~ msgid "Failed to load %1: %2"
+#~ msgstr "Indlæsning af %1: %2 fejlede"
+
+#~ msgid "Library does not contain the symbol \"Chiasmus\"."
+#~ msgstr "Biblioteket indeholder ikke symbolet \"Chiasmus\"."
+
+#~ msgid "Scanning directory %1..."
+#~ msgstr "Scanner mappen %1..."
+
+#~ msgid "GpgME"
+#~ msgstr "GpgME"
+
+#~ msgid "GPGME was compiled without support for %1."
+#~ msgstr "GPGME blev kompileret uden understøttelse for %1."
+
+#~ msgid "Engine %1 is not installed properly."
+#~ msgstr "Motoren %1 er ikke installeret rigtigt."
+
+#~ msgid "Engine %1 version %2 installed, but at least version %3 is required."
+#~ msgstr ""
+#~ "Motoren %1 version %2 installeret, men mindst version %3 er nødvendig."
+
+#~ msgid "Unknown problem with engine for protocol %1."
+#~ msgstr "Ukendt problem med motor for protokol %1."
+
+#~ msgid "program terminated unexpectedly"
+#~ msgstr "program afsluttede uventet"
+
+#~ msgid "program not found or cannot be started"
+#~ msgstr "program ikke fundet, eller kan ikke startes"
+
+#~ msgid "<qt>Failed to execute gpgconf:<p>%1</p></qt>"
+#~ msgstr "<qt>Afvikling af 'gpgconf' fejlede:<p>%1</p></qt>"
+
+#~ msgid ""
+#~ "Could not start gpgconf.\n"
+#~ "Check that gpgconf is in the PATH and that it can be started."
+#~ msgstr ""
+#~ "Kunne ikke starte 'gpgconf'.\n"
+#~ "Tjek at 'gpgconf' er i stien (PATH), og at den kan startes"
+
+#~ msgid "Error from gpgconf while saving configuration: %1"
+#~ msgstr "Fejl fra 'gpgconf' mens indstillingen blev gemt: %1"
+
+#~ msgid "Generating DSA key..."
+#~ msgstr "Genererer DSA-nøgle..."
+
+#~ msgid "Generating ElGamal key..."
+#~ msgstr "Genererer ElGamal-nøgle..."
+
+#~ msgid "Searching for a large prime number..."
+#~ msgstr "Søger efter et stort primtal..."
+
+#~ msgid ""
+#~ "Waiting for new entropy from random number generator (you might want to "
+#~ "exercise the harddisks or move the mouse)..."
+#~ msgstr ""
+#~ "Venter på ny entropi fra tilfældigtal-generator (du vil måske give "
+#~ "harddisken lidt arbejde eller flytte musen)..."
+
+#~ msgid "Please wait..."
+#~ msgstr "Vent venligst..."
+
+#~ msgid ""
+#~ "Starting gpg-agent (you should consider starting a global instance "
+#~ "instead)..."
+#~ msgstr ""
+#~ "Starter 'gpg-agent' (du skulle overveje at starte en global instans i "
+#~ "stedet)..."
+
+#~ msgid "While scanning for %1 support in backend %2:"
+#~ msgstr "Under skanning efter %1-understøttelse i motor %2:"
+
+#~ msgctxt "progress info: \"%1 of %2\""
+#~ msgid "%1/%2"
+#~ msgstr "%1/%2"
+
+#~ msgid ""
+#~ "OpenPGP key for %1\n"
+#~ "Created: %2\n"
+#~ "Expiry: %3\n"
+#~ "Fingerprint: %4"
+#~ msgstr ""
+#~ "OpenPGP-nøgle for %1\n"
+#~ "Oprettet: %2\n"
+#~ "Udløber: %3\n"
+#~ "Fingeraftryk: %4"
+
+#~ msgid ""
+#~ "S/MIME key for %1\n"
+#~ "Created: %2\n"
+#~ "Expiry: %3\n"
+#~ "Fingerprint: %4\n"
+#~ "Issuer: %5"
+#~ msgstr ""
+#~ "S/MIME nøgle for %1\n"
+#~ "Oprettet: %2\n"
+#~ "Udløber: %3\n"
+#~ "Fingeraftryk: %4\n"
+#~ "Udsteder: %5"
+
+#~ msgid "Copy Audit Log to Clipboard"
+#~ msgstr "Kopiér auditlog til udklipsholderen"
+
+#~ msgid "Add or Change Directory Service"
+#~ msgstr "Tilføj eller ændr mappetjeneste"
+
+#~ msgid "&Server name:"
+#~ msgstr "&Servernavn:"
+
+#~ msgid "389"
+#~ msgstr "389"
+
+#~ msgid "&User name (optional):"
+#~ msgstr "&Brugernavn (valgfri):"
+
+#~ msgid "Pass&word (optional):"
+#~ msgstr "Adgangsk&ode (valgfri):"
+
+#~ msgid "&OK"
+#~ msgstr "&O.k."
+
+#~ msgid "&Cancel"
+#~ msgstr "&Annullér"
+
+#~ msgid "&Base DN:"
+#~ msgstr "&Basis-DN:"
+
+#~ msgid "&Port:"
+#~ msgstr "&Port:"
+
+#~ msgctxt "NAME OF TRANSLATORS"
+#~ msgid "Your names"
+#~ msgstr "Erik Kjær Pedersen,Jan Madsen"
+
+#~ msgctxt "EMAIL OF TRANSLATORS"
+#~ msgid "Your emails"
+#~ msgstr "erik@binghamton.edu,jan.madsen.pt@gmail.com"
+
+#~ msgid "failed"
+#~ msgstr "fejlede"
+
+#~ msgctxt ""
+#~ "Items in Kleo::BackendConfigWidget listview (1: protocol; 2: "
+#~ "implementation name)"
+#~ msgid "%1 (%2)"
+#~ msgstr "%1 (%2)"
+
+#~ msgid "Available Backends"
+#~ msgstr "Tilgængelige motorer"
+
+#~ msgid "Confi&gure..."
+#~ msgstr "Inds&til..."
+
+#~ msgid "Rescan"
+#~ msgstr "Genskan"
+
+#~ msgid "The following problems where encountered during scanning:"
+#~ msgstr "De følgende problemer opstod under skanningen:"
+
+#~ msgctxt "@title:window Results of the scanning"
+#~ msgid "Scan Results"
+#~ msgstr "Skanningsresultater"
+
+#~ msgid "(Unknown Protocol)"
+#~ msgstr "(Ukendt protokol)"
+
+#~ msgid "Error while initializing plugin \"%1\""
+#~ msgstr "Fejl under initialisering af plugin \"%1\""
+
+#~ msgid "Can't start decrypt job"
+#~ msgstr "Kan ikke starte afkrypteringsjob"
+
+#~ msgid "Can't start combined decrypt/verify operation"
+#~ msgstr "Kan ikke starte kombineret afkrypterings-/verificerings-handling"
+
+#~ msgid "Can't start encrypt job"
+#~ msgstr "Kan ikke starte afkrypteringsjob"
+
+#~ msgid "Error adding signer %1."
+#~ msgstr "Fejl under tilføjelse af signerer %1."
+
+#~ msgid ""
+#~ "You need a passphrase to unlock the secret key for user:<br/> %1 (retry)"
+#~ msgstr ""
+#~ "Du har brug for en adgangsfrase til at låse op for den hemmelige nøgle "
+#~ "for brugeren:<br/> %1 (prøv igen)"
+
+#~ msgid "You need a passphrase to unlock the secret key for user:<br/> %1"
+#~ msgstr ""
+#~ "Du har brug for en adgangsfrase til at låse op for den hemmelige nøgle "
+#~ "for brugeren:<br/> %1"
+
+#~ msgid ""
+#~ "This dialog will reappear every time the passphrase is needed. For a more "
+#~ "secure solution that also allows caching the passphrase, use gpg-agent."
+#~ msgstr ""
+#~ "Denne dialog vises igen, hver gang adgangsfrasen kræves. Brug af 'gpg-"
+#~ "agent' er en mere sikker løsning, der også tillader at cache "
+#~ "adgangsfrasen."
+
+#~ msgid "gpg-agent was found in %1, but does not appear to be running."
+#~ msgstr "Fandt 'gpg-agent' i %1, men den kører formodentlig ikke."
+
+#~ msgid "gpg-agent is part of gnupg-%1, which you can download from %2"
+#~ msgstr "'gpg-agent' er en del af gnupg-%1, som du kan downloade fra %2"
+
+#~ msgid "For information on how to set up gpg-agent, see %1"
+#~ msgstr "Se information om, hvordan 'gpg-agent' indstilles på %1"
+
+#~ msgid "Enter passphrase:"
+#~ msgstr "Indtast adgangsfrase:"
+
+#~ msgid "Passphrase Dialog"
+#~ msgstr "Adgangsfrasedialog"
+
+#~ msgid "Can't start combined sign-encrypt job"
+#~ msgstr "Kan ikke starte kombineret sign.-/krypt.-job"
+
+#~ msgid "Can't start sign job"
+#~ msgstr "Kan ikke starte sign.-job"
+
+#~ msgid "Can't start detached signature verification"
+#~ msgstr "Kan ikke starte adskilt signaturverifikation"
+
+#~ msgid "Can't start opaque signature verification"
+#~ msgstr "Kan ikke starte opaque-signaturverifikation"
--- /dev/null
+# Stephan Johach <hunsum@gmx.de>, 2007.
+# Thomas Reitelbach <tr@erdfunkstelle.de>, 2007, 2008, 2009, 2010.
+# Burkhard Lück <lueck@hube-lueck.de>, 2008, 2009, 2013, 2015, 2017.
+# Panagiotis Papadopoulos <pano_90@gmx.net>, 2010.
+# Frederik Schwarzer <schwarzer@kde.org>, 2010, 2016.
+# Andre Heinecke <andre.heinecke@intevation.de>, 2017.
+msgid ""
+msgstr ""
+"Project-Id-Version: libkleopatra\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2017-07-12 06:56+0200\n"
+"PO-Revision-Date: 2017-07-17 20:04+0100\n"
+"Last-Translator: Burkhard Lück <lueck@hube-lueck.de>\n"
+"Language-Team: German <kde-i18n-de@kde.org>\n"
+"Language: de\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Lokalize 2.0\n"
+
+#: kleo/checksumdefinition.cpp:107
+#, kde-format
+msgid "Error in checksum definition %1: %2"
+msgstr "Fehler in der Prüfsummen-Definition %1: %2"
+
+#: kleo/checksumdefinition.cpp:157
+#, kde-format
+msgid "Cannot use both %f and | in '%1'"
+msgstr "Kann nicht beides, %f und | in '%1' benutzen"
+
+#: kleo/checksumdefinition.cpp:167
+#, kde-format
+msgid "Quoting error in '%1' entry"
+msgstr "Fehler mit Anführungszeichen in Eintrag '%1'"
+
+#: kleo/checksumdefinition.cpp:170
+#, kde-format
+msgid "'%1' too complex (would need shell)"
+msgstr "'%1' zu komplex (würde eine Shell benötigen)"
+
+#: kleo/checksumdefinition.cpp:174
+#, kde-format
+msgid "'%1' entry is empty/missing"
+msgstr "'%1' Eintrag ist leer/fehlt"
+
+#: kleo/checksumdefinition.cpp:183
+#, kde-format
+msgid "'%1' empty or not found"
+msgstr "'%1' ist leer oder wurde nicht gefunden"
+
+#: kleo/checksumdefinition.cpp:222
+#, kde-format
+msgid "'id' entry is empty/missing"
+msgstr "Der Eintrag „id“ ist leer oder fehlt"
+
+#: kleo/checksumdefinition.cpp:225
+#, kde-format
+msgid "'output-file' entry is empty/missing"
+msgstr "Der Eintrag „output-file“ ist leer oder fehlt"
+
+#: kleo/checksumdefinition.cpp:228
+#, kde-format
+msgid "'file-patterns' entry is empty/missing"
+msgstr "Der Eintrag „file-patterns“ ist leer oder fehlt"
+
+#: kleo/checksumdefinition.cpp:395
+#, kde-format
+msgid "Caught unknown exception in group %1"
+msgstr "Unbekannte Ausnahme in Gruppe %1 aufgetreten"
+
+#: kleo/dn.cpp:507
+#, kde-format
+msgid "Common name"
+msgstr "Allgemeiner Name"
+
+#: kleo/dn.cpp:508
+#, kde-format
+msgid "Surname"
+msgstr "Nachname"
+
+#: kleo/dn.cpp:509
+#, kde-format
+msgid "Given name"
+msgstr "Vorname"
+
+#: kleo/dn.cpp:510
+#, kde-format
+msgid "Location"
+msgstr "Ort"
+
+#: kleo/dn.cpp:511
+#, kde-format
+msgid "Title"
+msgstr "Titel"
+
+#: kleo/dn.cpp:512
+#, kde-format
+msgid "Organizational unit"
+msgstr "Abteilung"
+
+#: kleo/dn.cpp:513
+#, kde-format
+msgid "Organization"
+msgstr "Organisation"
+
+#: kleo/dn.cpp:514
+#, kde-format
+msgid "Postal code"
+msgstr "Postleitzahl"
+
+#: kleo/dn.cpp:515
+#, kde-format
+msgid "Country code"
+msgstr "Ländercode"
+
+#: kleo/dn.cpp:516
+#, kde-format
+msgid "State or province"
+msgstr "Land oder Provinz"
+
+#: kleo/dn.cpp:517
+#, kde-format
+msgid "Domain component"
+msgstr "Domänenkomponente"
+
+#: kleo/dn.cpp:518
+#, kde-format
+msgid "Business category"
+msgstr "Geschäftsbereich"
+
+#: kleo/dn.cpp:519
+#, kde-format
+msgid "Email address"
+msgstr "E-Mail-Adresse"
+
+#: kleo/dn.cpp:520
+#, kde-format
+msgid "Mail address"
+msgstr "Postanschrift"
+
+#: kleo/dn.cpp:521
+#, kde-format
+msgid "Mobile phone number"
+msgstr "Mobiltelefonnummer"
+
+#: kleo/dn.cpp:522
+#, kde-format
+msgid "Telephone number"
+msgstr "Telefonnummer"
+
+#: kleo/dn.cpp:523
+#, kde-format
+msgid "Fax number"
+msgstr "Faxnummer"
+
+#: kleo/dn.cpp:524
+#, kde-format
+msgid "Street address"
+msgstr "Hausanschrift"
+
+#: kleo/dn.cpp:525
+#, kde-format
+msgid "Unique ID"
+msgstr "Eindeutige Kennung"
+
+#: kleo/enum.cpp:57
+#, kde-format
+msgid "Inline OpenPGP (deprecated)"
+msgstr "Inline-OpenPGP (veraltet)"
+
+#: kleo/enum.cpp:62
+#, kde-format
+msgid "OpenPGP/MIME"
+msgstr "OpenPGP/MIME"
+
+#: kleo/enum.cpp:67 ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "S/MIME"
+msgstr "S/MIME"
+
+#: kleo/enum.cpp:72
+#, kde-format
+msgid "S/MIME Opaque"
+msgstr "S/MIME opak"
+
+#: kleo/enum.cpp:104
+#, kde-format
+msgid "Any"
+msgstr "Alle"
+
+#: kleo/enum.cpp:177
+#, kde-format
+msgid "Never Encrypt"
+msgstr "Nie verschlüsseln"
+
+#: kleo/enum.cpp:179
+#, kde-format
+msgid "Always Encrypt"
+msgstr "Immer verschlüsseln"
+
+#: kleo/enum.cpp:181
+#, kde-format
+msgid "Always Encrypt If Possible"
+msgstr "Verschlüsseln, wenn möglich"
+
+#: kleo/enum.cpp:183 kleo/enum.cpp:240
+#, kde-format
+msgid "Ask"
+msgstr "Nachfragen"
+
+#: kleo/enum.cpp:185 kleo/enum.cpp:242
+#, kde-format
+msgid "Ask Whenever Possible"
+msgstr "Wann immer möglich nachfragen"
+
+#: kleo/enum.cpp:187
+#, kde-kuit-format
+msgctxt "no specific preference"
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>Keine</placeholder>"
+
+#: kleo/enum.cpp:234
+#, kde-format
+msgid "Never Sign"
+msgstr "Nie signieren"
+
+#: kleo/enum.cpp:236
+#, kde-format
+msgid "Always Sign"
+msgstr "Immer signieren"
+
+#: kleo/enum.cpp:238
+#, kde-format
+msgid "Always Sign If Possible"
+msgstr "Signieren, wenn möglich"
+
+#: kleo/enum.cpp:244
+#, kde-format
+msgctxt "no specific preference"
+msgid "<none>"
+msgstr "<kein>"
+
+#: kleo/keyfiltermanager.cpp:85
+#, kde-format
+msgid "All Certificates"
+msgstr "Alle Zertifikate"
+
+#: kleo/keyfiltermanager.cpp:100
+#, kde-format
+msgid "My Certificates"
+msgstr "Meine Zertifikate"
+
+#: kleo/keyfiltermanager.cpp:118
+#, kde-format
+msgid "Trusted Certificates"
+msgstr "Vertrauenswürdige Zertifikate"
+
+#: kleo/keyfiltermanager.cpp:135
+#, kde-format
+msgid "Fully Trusted Certificates"
+msgstr "Vollständig Vertrauenswürdige Zertifikate"
+
+#: kleo/keyfiltermanager.cpp:152
+#, kde-format
+msgid "Other Certificates"
+msgstr "Andere Zertifikate"
+
+#: kleo/keyfiltermanager.cpp:166
+#, kde-format
+msgid "VS-compliant Certificates"
+msgstr "VS-Konforme Zertifikate"
+
+#: kleo/keyfiltermanager.cpp:184
+#, kde-format
+msgid "Not validated Certificates"
+msgstr "Nicht beglaubigte Zertifikate"
+
+#: ui/auditlogviewer.cpp:49
+#, kde-format
+msgid "View GnuPG Audit Log"
+msgstr "GnuPG-Prüfprotokoll ansehen"
+
+#: ui/auditlogviewer.cpp:53
+#, kde-format
+msgid "&Copy to Clipboard"
+msgstr "In die Zwischenablage &kopieren"
+
+#: ui/auditlogviewer.cpp:59
+#, kde-format
+msgid "&Save to Disk..."
+msgstr "In Datei &speichern ..."
+
+#: ui/auditlogviewer.cpp:95
+#, kde-format
+msgid "Choose File to Save GnuPG Audit Log to"
+msgstr "Datei für GnuPG-Prüfprotokoll wählen"
+
+#: ui/auditlogviewer.cpp:118
+#, kde-format
+msgid "Could not save to file \"%1\": %2"
+msgstr "Die Datei „%1“ lässt sich nicht speichern: %2"
+
+#: ui/auditlogviewer.cpp:120
+#, kde-format
+msgid "File Save Error"
+msgstr "Speichern fehlgeschlagen"
+
+#: ui/cryptoconfigdialog.cpp:44
+#, kde-format
+msgid "Configure GnuPG Backend"
+msgstr "GnuPG einrichten"
+
+#: ui/cryptoconfigdialog.cpp:55
+#, kde-format
+msgid "&Reset"
+msgstr "&Zurücksetzen"
+
+#: ui/cryptoconfigmodule.cpp:160
+#, kde-format
+msgid "GpgConf Error"
+msgstr "GpgConf-Fehler"
+
+#: ui/cryptoconfigmodule.cpp:216
+#, kde-format
+msgid ""
+"The gpgconf tool used to provide the information for this dialog does not "
+"seem to be installed properly. It did not return any components. Try running "
+"\"%1\" on the command line for more information."
+msgstr ""
+"Das Dienstprogramm gpgconf, welches die Informationen für diesen Dialog "
+"aufbereitet, scheint nicht korrekt installiert zu sein. Es hat keine "
+"Komponenten übergeben. Führen Sie bitte auf der Befehlszeile „%1“ aus, um "
+"weitere Informationen zu erhalten."
+
+#: ui/cryptoconfigmodule.cpp:496
+#, kde-format
+msgctxt ""
+"Translate this to 'yes' or 'no' (use the English words!) depending on "
+"whether your language uses Sentence style capitalisation in GUI labels (yes) "
+"or not (no). Context: We get some backend strings in that have the wrong "
+"capitalizaion (in English, at least) so we need to force the first character "
+"to upper-case. It is this behaviour you can control for your language with "
+"this translation."
+msgid "yes"
+msgstr "yes"
+
+#: ui/cryptoconfigmodule.cpp:546
+#, kde-format
+msgid "0 - None"
+msgstr "0 - Nichts"
+
+#: ui/cryptoconfigmodule.cpp:547
+#, kde-format
+msgid "1 - Basic"
+msgstr "1 - Basis"
+
+#: ui/cryptoconfigmodule.cpp:548
+#, kde-format
+msgid "2 - Verbose"
+msgstr "2 - Redselig"
+
+#: ui/cryptoconfigmodule.cpp:549
+#, kde-format
+msgid "3 - More Verbose"
+msgstr "3 - Redseliger"
+
+#: ui/cryptoconfigmodule.cpp:550
+#, kde-format
+msgid "4 - All"
+msgstr "4 - Alles"
+
+#: ui/cryptoconfigmodule.cpp:559
+#, kde-format
+msgid "Set the debugging level to"
+msgstr "Debug-Stufe festlegen auf"
+
+#: ui/cryptoconfigmodule.cpp:787
+#, kde-format
+msgid "Show..."
+msgstr "Anzeigen ..."
+
+#: ui/cryptoconfigmodule.cpp:787 ui/cryptoconfigmodule.cpp:876
+#, kde-format
+msgid "Edit..."
+msgstr "Bearbeiten ..."
+
+#: ui/cryptoconfigmodule.cpp:841
+#, kde-format
+msgid "Configure LDAP Servers"
+msgstr "LDAP-Server einrichten"
+
+#: ui/cryptoconfigmodule.cpp:862
+#, kde-format
+msgid "None configured"
+msgstr "Nicht konfiguriert"
+
+#: ui/cryptoconfigmodule.cpp:864
+#, kde-format
+msgid "1 server configured"
+msgid_plural "%1 servers configured"
+msgstr[0] "1 Server eingerichtet"
+msgstr[1] "%1 Server eingerichtet"
+
+#: ui/cryptoconfigmodule.cpp:879
+#, kde-format
+msgid "Use keyserver at"
+msgstr "Verwendeter Schlüsselserver"
+
+#: ui/cryptoconfigmodule.cpp:968
+#, kde-format
+msgid "Configure Keyservers"
+msgstr "Schlüsselserver einrichten"
+
+#: ui/directoryserviceswidget.cpp:67
+#, kde-format
+msgctxt "default server name, keep it a valid domain name, ie. no spaces"
+msgid "server"
+msgstr "Server"
+
+#: ui/directoryserviceswidget.cpp:95
+#, kde-format
+msgid "hkp"
+msgstr "hkp"
+
+#: ui/directoryserviceswidget.cpp:96
+#, kde-format
+msgid "http"
+msgstr "http"
+
+#: ui/directoryserviceswidget.cpp:97
+#, kde-format
+msgid "https"
+msgstr "https"
+
+#: ui/directoryserviceswidget.cpp:98
+#, kde-format
+msgid "ftp"
+msgstr "ftp"
+
+#: ui/directoryserviceswidget.cpp:99
+#, kde-format
+msgid "ftps"
+msgstr "ftps"
+
+#: ui/directoryserviceswidget.cpp:100
+#, kde-format
+msgid "ldap"
+msgstr "ldap"
+
+#: ui/directoryserviceswidget.cpp:101
+#, kde-format
+msgid "ldaps"
+msgstr "ldaps"
+
+#: ui/directoryserviceswidget.cpp:588
+#, kde-format
+msgid "Server Name"
+msgstr "Servername"
+
+#: ui/directoryserviceswidget.cpp:589
+#, kde-format
+msgid "Server Port"
+msgstr "Server-Port"
+
+#: ui/directoryserviceswidget.cpp:590
+#, kde-format
+msgid "Base DN"
+msgstr "Basis-DN"
+
+#: ui/directoryserviceswidget.cpp:591
+#, kde-format
+msgid "User Name"
+msgstr "Benutzername"
+
+#: ui/directoryserviceswidget.cpp:592
+#, kde-format
+msgid "Password"
+msgstr "Passwort"
+
+#: ui/directoryserviceswidget.cpp:614
+#, kde-format
+msgid "(read-only)"
+msgstr "(nur lesen)"
+
+#: ui/directoryserviceswidget.cpp:616
+#, kde-format
+msgctxt "amended tooltip; %1: original tooltip"
+msgid "%1 (read-only)"
+msgstr "%1 (nur lesen)"
+
+#: ui/directoryserviceswidget.cpp:739
+#, kde-format
+msgid ""
+"Enter the name or IP address of the server hosting the directory service."
+msgstr ""
+"Geben Sie den Namen oder die IP-Adresse des Rechners an, der den "
+"Zertifikatsserver anbietet."
+
+#: ui/directoryserviceswidget.cpp:741
+#, kde-format
+msgid ""
+"<b>(Optional, the default is fine in most cases)</b> Pick the port number "
+"the directory service is listening on."
+msgstr ""
+"<b>(Optional, die Voreinstellung ist meistens eine gute Wahl)</b> Wählen Sie "
+"die Port-Nummer, über die der Zertifikatsserver erreichbar ist."
+
+#: ui/directoryserviceswidget.cpp:744
+#, kde-format
+msgid ""
+"<b>(Only for LDAP)</b> Enter the base DN for this LDAP server to limit "
+"searches to only that subtree of the directory."
+msgstr ""
+"<b>(Nur für LDAP)</b> Geben Sie die Basis-DN für diesen LDAP-Server an, um "
+"Suchen auf einen Teilbereich des Verzeichnisses zu beschränken."
+
+#: ui/directoryserviceswidget.cpp:747
+#, kde-format
+msgid "<b>(Optional)</b> Enter your user name here, if needed."
+msgstr ""
+"<b>(Optional)</b> Geben Sie hier Ihren Benutzernamen an, falls notwendig."
+
+#: ui/directoryserviceswidget.cpp:749
+#, kde-format
+msgid ""
+"<b>(Optional, not recommended)</b> Enter your password here, if needed. Note "
+"that the password will be saved in the clear in a config file in your home "
+"directory."
+msgstr ""
+"<b>(Optional, nicht empfohlen)</b> Geben Sie hier Ihr Passwort ein, falls "
+"notwendig. Beachten Sie, dass Ihr Passwort unverschlüsselt in einer "
+"Konfigurationsdatei in Ihrem persönlichen Ordner gespeichert wird."
+
+#. i18n: ectx: property (windowTitle), widget (QWidget, DirectoryServicesWidget)
+#: ui/directoryserviceswidget.ui:14
+#, kde-format
+msgid "Directory Services Configuration"
+msgstr "Einrichtung der Zertifikatsserver"
+
+#. i18n: ectx: property (text), widget (QLabel, pgpKSLabel)
+#: ui/directoryserviceswidget.ui:22
+#, kde-format
+msgid "OpenPGP Keyserver:"
+msgstr "OpenPGP-Schlüsselserver:"
+
+#. i18n: ectx: property (title), widget (QGroupBox, x500LA)
+#: ui/directoryserviceswidget.ui:35
+#, kde-format
+msgid "X509 Directory services:"
+msgstr "X509 Verzeichnisdienste:"
+
+#. i18n: ectx: property (whatsThis), widget (QTreeView, treeView)
+#: ui/directoryserviceswidget.ui:43
+#, kde-format
+msgid ""
+"This is a list of all directory services that are configured for use with "
+"X.509."
+msgstr ""
+"Dies ist eine Liste aller für X.509 eingerichteten Verzeichnisdienste. "
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:70
+#, kde-format
+msgid "Click to add a service"
+msgstr "Klicken Sie hier, um einen Dienst hinzuzufügen."
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:73
+#, kde-format
+msgid ""
+"Click this button to create a new directory service entry as a clone of the "
+"currently selected one (or with default values, if no other is selected). "
+"You can then configure details in the table on the left hand."
+msgstr ""
+"Hier können Sie einen neuen Zertifikatsserver auf der Basis eines bereits "
+"eingetragenen Servers (oder mit Standardwerten, falls keiner ausgewählt "
+"wurde) erstellen. Die Einzelheiten können in der Tabelle rechts angepasst "
+"werden."
+
+#. i18n: ectx: property (text), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:76
+#, kde-format
+msgid "New"
+msgstr "Neu"
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:92
+#, kde-format
+msgid "Click to remove the currently selected service"
+msgstr "Klicken Sie hier, um den ausgewählten Dienst zu entfernen."
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:95
+#, kde-format
+msgid ""
+"Click this button to remove the currently selected directory service. The "
+"change will only take effect once you acknowledge the main configuration "
+"dialog."
+msgstr ""
+"Hier können Sie den derzeit ausgewählten Zertifikatsserver entfernen. Diese "
+"Änderung wird erst übernommen, wenn der Haupt-Einrichtungsdialog bestätigt "
+"wird."
+
+#. i18n: ectx: property (text), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:98
+#, kde-format
+msgid "Delete"
+msgstr "Löschen"
+
+#. i18n: ectx: property (whatsThis), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:128
+#, kde-format
+msgid ""
+"Use this option to switch display of username and password information on or "
+"off in the above table."
+msgstr ""
+"Mit dieser Einstellung können Sie festlegen, ob Benutzername und Passwort im "
+"obigen Feld angezeigt oder ausgeblendet wird."
+
+#. i18n: ectx: property (text), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:131
+#, kde-format
+msgid "Show user and password information"
+msgstr "Benutzername und Passwort anzeigen"
+
+#: ui/dnattributeorderconfigwidget.cpp:73
+#, kde-format
+msgid "Description"
+msgstr "Beschreibung"
+
+#: ui/dnattributeorderconfigwidget.cpp:91
+#, kde-format
+msgid "Available attributes:"
+msgstr "Verfügbare Attribute:"
+
+#: ui/dnattributeorderconfigwidget.cpp:92
+#, kde-format
+msgid "Current attribute order:"
+msgstr "Aktuelle Attributreihenfolge:"
+
+#: ui/dnattributeorderconfigwidget.cpp:112
+#, kde-format
+msgid "All others"
+msgstr "Alle anderen"
+
+#: ui/dnattributeorderconfigwidget.cpp:129
+#, kde-format
+msgid "Move to top"
+msgstr "Nach ganz oben"
+
+#: ui/dnattributeorderconfigwidget.cpp:130
+#, kde-format
+msgid "Move one up"
+msgstr "Nach oben"
+
+#: ui/dnattributeorderconfigwidget.cpp:131
+#, kde-format
+msgid "Remove from current attribute order"
+msgstr "Von der aktuellen Attributreihenfolge entfernen"
+
+#: ui/dnattributeorderconfigwidget.cpp:132
+#, kde-format
+msgid "Add to current attribute order"
+msgstr "Zur aktuellen Attributreihenfolge hinzufügen"
+
+#: ui/dnattributeorderconfigwidget.cpp:133
+#, kde-format
+msgid "Move one down"
+msgstr "Nach unten"
+
+#: ui/dnattributeorderconfigwidget.cpp:134
+#, kde-format
+msgid "Move to bottom"
+msgstr "Ganz nach unten"
+
+#: ui/keyapprovaldialog.cpp:87
+#, kde-kuit-format
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>kein</placeholder>"
+
+#: ui/keyapprovaldialog.cpp:88
+#, kde-format
+msgid "Never Encrypt with This Key"
+msgstr "Nie mit diesem Schlüssel verschlüsseln"
+
+#: ui/keyapprovaldialog.cpp:89
+#, kde-format
+msgid "Always Encrypt with This Key"
+msgstr "Immer mit diesem Schlüssel verschlüsseln"
+
+#: ui/keyapprovaldialog.cpp:90
+#, kde-format
+msgid "Encrypt Whenever Encryption is Possible"
+msgstr "Immer verschlüsseln, wenn Verschlüsselung möglich ist"
+
+#: ui/keyapprovaldialog.cpp:91
+#, kde-format
+msgid "Always Ask"
+msgstr "Immer nachfragen"
+
+#: ui/keyapprovaldialog.cpp:92
+#, kde-format
+msgid "Ask Whenever Encryption is Possible"
+msgstr "Immer nachfragen, wenn Verschlüsselung möglich ist"
+
+#: ui/keyapprovaldialog.cpp:113
+#, kde-format
+msgid "Encryption Key Approval"
+msgstr "Verschlüsselungsschlüssel akzeptieren"
+
+#: ui/keyapprovaldialog.cpp:129
+#, kde-format
+msgid "The following keys will be used for encryption:"
+msgstr "Die folgenden Schlüssel werden zur Verschlüsselung verwendet:"
+
+#: ui/keyapprovaldialog.cpp:145
+#, kde-format
+msgid "Your keys:"
+msgstr "Ihre Schlüssel:"
+
+#: ui/keyapprovaldialog.cpp:157
+#, kde-format
+msgid "Recipient:"
+msgstr "Empfänger:"
+
+#: ui/keyapprovaldialog.cpp:162
+#, kde-format
+msgid "Encryption keys:"
+msgstr "Verschlüsselungsschlüssel:"
+
+#: ui/keyapprovaldialog.cpp:169
+#, kde-format
+msgid "Encryption preference:"
+msgstr "Verschlüsselungseinstellungen:"
+
+#: ui/keyrequester.cpp:118
+#, kde-format
+msgid "Clear"
+msgstr "Leeren"
+
+#: ui/keyrequester.cpp:121
+#, kde-format
+msgid "Change..."
+msgstr "Ändern ..."
+
+#: ui/keyrequester.cpp:232 ui/keyselectiondialog.cpp:256
+#, kde-kuit-format
+msgid "<placeholder>unknown</placeholder>"
+msgstr "<placeholder>unbekannt</placeholder>"
+
+#: ui/keyrequester.cpp:246 ui/keyselectiondialog.cpp:657
+#, kde-format
+msgid ""
+"<qt><p>An error occurred while fetching the keys from the backend:</p><p><b>"
+"%1</b></p></qt>"
+msgstr ""
+"<qt><p>Bei der Abfrage der Schlüssel vom Hintergrundprogramm ist folgender "
+"Fehler aufgetreten:</p><p><b>%1</b></p></qt>"
+
+#: ui/keyrequester.cpp:251 ui/keyrequester.cpp:283 ui/keyrequester.cpp:306
+#: ui/keyselectiondialog.cpp:630 ui/keyselectiondialog.cpp:662
+#, kde-format
+msgid "Key Listing Failed"
+msgstr "Auflisten der Schlüssel fehlgeschlagen"
+
+#: ui/keyrequester.cpp:281
+#, kde-format
+msgid ""
+"The OpenPGP backend does not support listing keys. Check your installation."
+msgstr ""
+"Das OpenPGP-Hintergrundprogramm unterstützt das Auflisten von Schlüsseln "
+"nicht. Bitte überprüfen Sie die korrekte Installation."
+
+#: ui/keyrequester.cpp:304
+#, kde-format
+msgid ""
+"The S/MIME backend does not support listing keys. Check your installation."
+msgstr ""
+"Das S/MIME-Hintergrundprogramm unterstützt das Auflisten von Schlüsseln "
+"nicht. Bitte überprüfen Sie die korrekte Installation."
+
+#: ui/keyrequester.cpp:426
+#, kde-format
+msgid "OpenPGP Key Selection"
+msgstr "OpenPGP-Schlüsselauswahl"
+
+#: ui/keyrequester.cpp:427
+#, kde-format
+msgid "Please select an OpenPGP key to use."
+msgstr "Bitte wählen Sie den zu verwendenden OpenPGP-Schlüssel."
+
+#: ui/keyrequester.cpp:429
+#, kde-format
+msgid "S/MIME Key Selection"
+msgstr "S/MIME-Schlüsselauswahl"
+
+#: ui/keyrequester.cpp:430
+#, kde-format
+msgid "Please select an S/MIME key to use."
+msgstr "Bitte wählen Sie den zu verwendenden S/MIME-Schlüssel."
+
+#: ui/keyrequester.cpp:432
+#, kde-format
+msgid "Key Selection"
+msgstr "Schlüsselauswahl"
+
+#: ui/keyrequester.cpp:433
+#, kde-format
+msgid "Please select an (OpenPGP or S/MIME) key to use."
+msgstr ""
+"Bitte wählen Sie einen (OpenPGP- oder S/MIME-) Schlüssel zur Verwendung."
+
+#: ui/keyselectioncombo.cpp:195
+#, kde-format
+msgctxt "Name <email> (validity, type, created: date)"
+msgid "%1 (%2, %3, created: %4)"
+msgstr "%1 (%2, %3, Erstellt: %4)"
+
+#: ui/keyselectioncombo.cpp:196
+#, kde-format
+msgctxt "Name <email>"
+msgid "%1 <%2>"
+msgstr "%1 <%2>"
+
+#: ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "OpenPGP"
+msgstr "OpenPGP"
+
+#: ui/keyselectioncombo.cpp:347
+#, kde-format
+msgid "Loading keys ..."
+msgstr "Schlüssel werden geladen ..."
+
+#: ui/keyselectiondialog.cpp:98
+#, kde-format
+msgid "The key is not valid."
+msgstr "Der Schlüssel ist ungültig."
+
+#: ui/keyselectiondialog.cpp:106
+#, kde-format
+msgid "The key is expired."
+msgstr "Der Schlüssel ist abgelaufen."
+
+#: ui/keyselectiondialog.cpp:110
+#, kde-format
+msgid "The key is revoked."
+msgstr "Der Schlüssel wurde zurückgezogen."
+
+#: ui/keyselectiondialog.cpp:114
+#, kde-format
+msgid "The key is disabled."
+msgstr "Der Schlüssel ist deaktiviert."
+
+#: ui/keyselectiondialog.cpp:122
+#, kde-format
+msgid "The key is not designated for encryption."
+msgstr "Der Schlüssel ist nicht zur Verschlüsselung vorgesehen."
+
+#: ui/keyselectiondialog.cpp:128
+#, kde-format
+msgid "The key is not designated for signing."
+msgstr "Der Schlüssel ist nicht zur Signierung vorgesehen."
+
+#: ui/keyselectiondialog.cpp:134
+#, kde-format
+msgid "The key is not designated for certifying."
+msgstr "Der Schlüssel ist nicht zur Zertifizierung vorgesehen."
+
+#: ui/keyselectiondialog.cpp:140
+#, kde-format
+msgid "The key is not designated for authentication."
+msgstr "Der Schlüssel ist nicht zur Authentisierung vorgesehen."
+
+#: ui/keyselectiondialog.cpp:148
+#, kde-format
+msgid "The key is not secret."
+msgstr "Der Schlüssel ist nicht geheim."
+
+#: ui/keyselectiondialog.cpp:163
+#, kde-format
+msgid "The key is not trusted enough."
+msgstr "Der Schlüssel ist nicht vertrauenswürdig genug."
+
+#: ui/keyselectiondialog.cpp:169
+#, kde-format
+msgid "The key can be used."
+msgstr "Der Schlüssel kann verwendet werden."
+
+#: ui/keyselectiondialog.cpp:230
+#, kde-format
+msgid "Key ID"
+msgstr "Schlüsselkennung"
+
+#: ui/keyselectiondialog.cpp:231
+#, kde-format
+msgid "User ID"
+msgstr "Benutzer-ID"
+
+#: ui/keyselectiondialog.cpp:279
+#, kde-format
+msgid "never"
+msgstr "nie"
+
+#: ui/keyselectiondialog.cpp:289 ui/keyselectiondialog.cpp:291
+#: ui/keyselectiondialog.cpp:300 ui/keyselectiondialog.cpp:302
+#, kde-format
+msgid "unknown"
+msgstr "unbekannt"
+
+#: ui/keyselectiondialog.cpp:289
+#, kde-format
+msgid "OpenPGP key for <b>%1</b>"
+msgstr "OpenPGP-Schlüssel für <b>%1</b>"
+
+#: ui/keyselectiondialog.cpp:291
+#, kde-format
+msgid "S/MIME key for <b>%1</b>"
+msgstr "S/MIME-Schlüssel für <b>%1</b>"
+
+#: ui/keyselectiondialog.cpp:298
+#, kde-format
+msgctxt "Key creation date"
+msgid "Created"
+msgstr "Erstellt"
+
+#: ui/keyselectiondialog.cpp:299
+#, kde-format
+msgctxt "Key Expiration date"
+msgid "Expiry"
+msgstr "Ablauf"
+
+#: ui/keyselectiondialog.cpp:300
+#, kde-format
+msgctxt "Key fingerprint"
+msgid "Fingerprint"
+msgstr "Fingerabdruck"
+
+#: ui/keyselectiondialog.cpp:302
+#, kde-format
+msgctxt "Key issuer"
+msgid "Issuer"
+msgstr "Ausgestellt durch"
+
+#: ui/keyselectiondialog.cpp:304
+#, kde-format
+msgctxt "Key status"
+msgid "Status"
+msgstr "Status"
+
+#: ui/keyselectiondialog.cpp:456
+#, kde-format
+msgid "Search for &External Certificates"
+msgstr "Suche nach &Externen Zertifikaten"
+
+#: ui/keyselectiondialog.cpp:470
+#, kde-format
+msgid "&Search for:"
+msgstr "&Suchen nach:"
+
+#: ui/keyselectiondialog.cpp:494
+#, kde-format
+msgid "&Remember choice"
+msgstr "&Auswahl merken"
+
+#: ui/keyselectiondialog.cpp:497
+#, kde-format
+msgid ""
+"<qt><p>If you check this box your choice will be stored and you will not be "
+"asked again.</p></qt>"
+msgstr ""
+"<qt><p>Wenn Sie diese Einstellung aktivieren, wird Ihre Auswahl gespeichert "
+"und Sie werden nicht noch einmal danach gefragt.</p></qt>"
+
+#: ui/keyselectiondialog.cpp:509
+#, kde-format
+msgid "&Reread Keys"
+msgstr "Schlüssel neu &einlesen"
+
+#: ui/keyselectiondialog.cpp:510
+#, kde-format
+msgid "&Start Certificate Manager"
+msgstr "Zertifikatsverwaltung &starten"
+
+#: ui/keyselectiondialog.cpp:628
+#, kde-format
+msgid "No backends found for listing keys. Check your installation."
+msgstr ""
+"Keine Hintergrundprogramme zum Auflisten der Schlüssel gefunden. Bitte "
+"überprüfen Sie die korrekte Installation."
+
+#: ui/keyselectiondialog.cpp:644
+#, kde-format
+msgid "Could not start certificate manager; please check your installation."
+msgstr ""
+"Die Zertifikatsverwaltung kann nicht gestartet werden. Bitte überprüfen Sie "
+"die korrekte Installation."
+
+#: ui/keyselectiondialog.cpp:646
+#, kde-format
+msgid "Certificate Manager Error"
+msgstr "Fehler der Zertifikatsverwaltung"
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Checking selected keys..."
+msgstr "Ausgewählte Schlüssel überprüfen ..."
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Fetching keys..."
+msgstr "Schlüssel holen ..."
+
+#: ui/keyselectiondialog.cpp:731
+#, kde-format
+msgid ""
+"<qt>One backend returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgid_plural ""
+"<qt>%1 backends returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgstr[0] ""
+"<qt>Ein Hintergrundprogramm hat eine verkürzte Ausgabe zurückgegeben."
+"<p>Nicht alle verfügbaren Schlüssel werden angezeigt</p></qt>"
+msgstr[1] ""
+"<qt>%1 Hintergrundprogramme haben eine verkürzte Ausgabe zurückgegeben."
+"<p>Nicht alle verfügbaren Schlüssel werden angezeigt</p></qt>"
+
+#: ui/keyselectiondialog.cpp:736
+#, kde-format
+msgid "Key List Result"
+msgstr "Ergebnis des Auflistens der Schlüssel"
+
+#: ui/keyselectiondialog.cpp:856
+#, kde-format
+msgid "Recheck Key"
+msgstr "Schlüssel erneut überprüfen"
+
+#: ui/messagebox.cpp:71
+#, kde-format
+msgid "Your system does not have support for GnuPG Audit Logs"
+msgstr "Ihr System bietet keine Unterstützung für GnuPG-Prüfprotokolle"
+
+#: ui/messagebox.cpp:72
+#, kde-format
+msgid "System Error"
+msgstr "Systemfehler"
+
+#: ui/messagebox.cpp:79
+#, kde-format
+msgid ""
+"An error occurred while trying to retrieve the GnuPG Audit Log:\n"
+"%1"
+msgstr ""
+"Fehler beim Einlesen des GnuPG-Prüfprotokolls:\n"
+"%1"
+
+#: ui/messagebox.cpp:81
+#, kde-format
+msgid "GnuPG Audit Log Error"
+msgstr "GnuPG-Prüfprotokollfehler"
+
+#: ui/messagebox.cpp:88
+#, kde-format
+msgid "No GnuPG Audit Log available for this operation."
+msgstr "Für diese Operation ist kein GnuPG-Prüfprotokoll verfügbar."
+
+#: ui/messagebox.cpp:89
+#, kde-format
+msgid "No GnuPG Audit Log"
+msgstr "Kein GnuPG-Prüfprotokoll"
+
+#: ui/messagebox.cpp:109 ui/messagebox.cpp:115
+#, kde-format
+msgid "GnuPG Audit Log Viewer"
+msgstr "GnuPG-Prüfprotokollbetrachter"
+
+#: ui/messagebox.cpp:121
+#, kde-format
+msgid "Signing failed: %1"
+msgstr "Signieren fehlgeschlagen: %1"
+
+#: ui/messagebox.cpp:122
+#, kde-format
+msgid "Signing successful"
+msgstr "Signieren abgeschlossen"
+
+#: ui/messagebox.cpp:133
+#, kde-format
+msgid "Encryption failed: %1"
+msgstr "Verschlüsseln fehlgeschlagen: %1"
+
+#: ui/messagebox.cpp:134
+#, kde-format
+msgid "Encryption successful"
+msgstr "Verschlüsseln abgeschlossen"
+
+#: ui/messagebox.cpp:155
+#, kde-format
+msgid "Signing Result"
+msgstr "Ergebnis der Signatur"
+
+#: ui/messagebox.cpp:167
+#, kde-format
+msgid "Signing Error"
+msgstr "Signieren fehlgeschlagen"
+
+#: ui/messagebox.cpp:179 ui/messagebox.cpp:203
+#, kde-format
+msgid "Encryption Result"
+msgstr "Ergebnis der Verschlüsselung"
+
+#: ui/messagebox.cpp:191 ui/messagebox.cpp:215
+#, kde-format
+msgid "Encryption Error"
+msgstr "Verschlüsselungsfehler"
+
+#: ui/messagebox.cpp:263
+#, kde-format
+msgid "&Show Audit Log"
+msgstr "Prüfprotokoll &anzeigen"
+
+#: ui/progressdialog.cpp:91
+#, kde-format
+msgid "%1: %2"
+msgstr "%1: %2"
+
+#~ msgctxt "New X.509 Directory Server"
+#~ msgid "X.509"
+#~ msgstr "X.509"
+
+#~ msgctxt "New OpenPGP Directory Server"
+#~ msgid "OpenPGP"
+#~ msgstr "OpenPGP"
+
+#~ msgid "Scheme"
+#~ msgstr "Protokoll"
+
+#~ msgid "X.509"
+#~ msgstr "X.509"
+
+#~ msgid ""
+#~ "Select the access scheme (scheme) that the directory service is available "
+#~ "through."
+#~ msgstr ""
+#~ "Wählen Sie das Zugriffsschema (scheme), über das der Zertifikatsserver "
+#~ "zur Verfügung steht. "
+
+#~ msgid ""
+#~ "Check this column if this directory service is providing S/MIME (X.509) "
+#~ "certificates."
+#~ msgstr ""
+#~ "Aktivieren Sie diese Spalte, falls der Zertifikatsserver S/MIME (X.509)-"
+#~ "Zertifikate anbietet."
+
+#~ msgid ""
+#~ "Check this column if this directory service is providing OpenPGP "
+#~ "certificates."
+#~ msgstr ""
+#~ "Aktivieren Sie diese Spalte, falls der Zertifikatsserver OpenPGP-"
+#~ "Zertifikate anbietet. "
+
+#~ msgid "0 - None (no debugging at all)"
+#~ msgstr "0 – Keine (Keinerlei Debug-Meldungen)"
+
+#~ msgid "1 - Basic (some basic debug messages)"
+#~ msgstr "1 – Einfach (nur die wichtigsten Meldungen)"
+
+#~ msgid "2 - Advanced (more verbose debug messages)"
+#~ msgstr "2 – Fortgeschritten (ausführliche Fehlermeldungen)"
+
+#~ msgid "3 - Expert (even more detailed messages)"
+#~ msgstr "3 – Experte (noch detailliertere Meldungen)"
+
+#~ msgid "4 - Guru (all of the debug messages you can get)"
+#~ msgstr "4 – Guru (alle verfügbaren Meldungen)"
+
+#~ msgid "General"
+#~ msgstr "Allgemein"
+
+#~ msgid "Chiasmus"
+#~ msgstr "Chiasmus"
+
+#~ msgid "Chiasmus command line tool"
+#~ msgstr "Chiasmus-Befehlszeilenprogramm"
+
+#~ msgid "Unsupported protocol \"%1\""
+#~ msgstr "Nicht unterstütztes Protokoll „%1“"
+
+#~ msgid "File \"%1\" does not exist or is not executable."
+#~ msgstr "Die Datei „%1“ existiert nicht oder ist nicht ausführbar."
+
+#~ msgid "Output from chiasmus"
+#~ msgstr "Ausgabe von chiasmus"
+
+#~ msgid "Decryption failed: %1"
+#~ msgstr "Entschlüsselung fehlgeschlagen: %1"
+
+#~ msgid ""
+#~ "The following was received on stderr:\n"
+#~ "%1"
+#~ msgstr ""
+#~ "Auf stderr wurde Folgendes ausgegeben:\n"
+#~ "%1"
+
+#~ msgid "Failed to load %1: %2"
+#~ msgstr "%1 kann nicht geladen werden: %2"
+
+#~ msgid "Library does not contain the symbol \"Chiasmus\"."
+#~ msgstr "Die Bibliothek enthält nicht das Symbol „Chiasmus“."
+
+#~ msgid "Scanning directory %1..."
+#~ msgstr "Ordner %1 wird eingelesen ..."
+
+#~ msgid "GpgME"
+#~ msgstr "GpgME"
+
+#~ msgid "GPGME was compiled without support for %1."
+#~ msgstr "GPGME wurde ohne Unterstützung für %1 kompiliert."
+
+#~ msgid "Engine %1 is not installed properly."
+#~ msgstr "Das Hintergrundprogramm %1 wurde nicht korrekt installiert."
+
+#~ msgid "Engine %1 version %2 installed, but at least version %3 is required."
+#~ msgstr ""
+#~ "Das Hintergrundprogramm %1 wurde in Version %2 installiert; es wird aber "
+#~ "mindestens Version %3 benötigt."
+
+#~ msgid "Unknown problem with engine for protocol %1."
+#~ msgstr ""
+#~ "Unbekanntes Problem mit dem Hintergrundprogramm für das Protokoll %1."
+
+#~ msgid "program terminated unexpectedly"
+#~ msgstr "Das Programm hat sich unerwartet beendet."
+
+#~ msgid "program not found or cannot be started"
+#~ msgstr "Das Programm kann nicht gefunden oder gestartet werden."
+
+#~ msgid "<qt>Failed to execute gpgconf:<p>%1</p></qt>"
+#~ msgstr "<qt>Fehler bei der Ausführung von gpgconf:<p>%1</p></qt>"
+
+#~ msgid ""
+#~ "Could not start gpgconf.\n"
+#~ "Check that gpgconf is in the PATH and that it can be started."
+#~ msgstr ""
+#~ "gpgconf lässt sich nicht starten.\n"
+#~ "Überprüfen Sie, ob sich gpgconf im PATH befindet und gestartet werden "
+#~ "kann."
+
+#~ msgid "Error from gpgconf while saving configuration: %1"
+#~ msgstr "Fehler in gpgconf beim Speichern der Einstellungen: %1"
+
+#~ msgid "Generating DSA key..."
+#~ msgstr "DSA-Schlüssel wird erzeugt ..."
+
+#~ msgid "Generating ElGamal key..."
+#~ msgstr "ElGamal-Schlüssel wird erzeugt ..."
+
+#~ msgid "Searching for a large prime number..."
+#~ msgstr "Suche nach einer großen Primzahl läuft ..."
+
+#~ msgid ""
+#~ "Waiting for new entropy from random number generator (you might want to "
+#~ "exercise the harddisks or move the mouse)..."
+#~ msgstr ""
+#~ "Warten auf neue Zufallsdaten vom Zufallszahlengenerator (Sie können zur "
+#~ "Beschleunigung Festplattenaktivität erzeugen oder auch die Maus "
+#~ "bewegen) ..."
+
+#~ msgid "Please wait..."
+#~ msgstr "Bitte warten ..."
+
+#~ msgid ""
+#~ "Starting gpg-agent (you should consider starting a global instance "
+#~ "instead)..."
+#~ msgstr ""
+#~ "gpg-agent wird gestartet (Sie sollten in Betracht ziehen, eine globale "
+#~ "Instanz zu starten) ..."
+
+#~ msgid "While scanning for %1 support in backend %2:"
+#~ msgstr "Beim Suchen nach Unterstützung für %1 im Hintergrundprogramm %2:"
+
+#~ msgctxt "progress info: \"%1 of %2\""
+#~ msgid "%1/%2"
+#~ msgstr "%1/%2"
+
+#~ msgid ""
+#~ "OpenPGP key for %1\n"
+#~ "Created: %2\n"
+#~ "Expiry: %3\n"
+#~ "Fingerprint: %4"
+#~ msgstr ""
+#~ "OpenPGP-Schlüssel für %1\n"
+#~ "Erzeugt: %2\n"
+#~ "Verfallsdatum: %3\n"
+#~ "Fingerabdruck: %4"
+
+#~ msgid ""
+#~ "S/MIME key for %1\n"
+#~ "Created: %2\n"
+#~ "Expiry: %3\n"
+#~ "Fingerprint: %4\n"
+#~ "Issuer: %5"
+#~ msgstr ""
+#~ "S/MIME-Schlüssel für %1\n"
+#~ "Erzeugt: %2\n"
+#~ "Verfallsdatum: %3\n"
+#~ "Fingerabdruck: %4\n"
+#~ "Aussteller: %5"
+
+#~ msgid "Copy Audit Log to Clipboard"
+#~ msgstr "Prüfprotokoll in die Zwischenablage kopieren"
+
+#~ msgid "Add or Change Directory Service"
+#~ msgstr "Zertifikatsserver hinzufügen oder ändern"
+
+#~ msgid "&Server name:"
+#~ msgstr "&Servername:"
+
+#~ msgid "389"
+#~ msgstr "389"
+
+#~ msgid "&User name (optional):"
+#~ msgstr "&Benutzername (optional):"
+
+#~ msgid "Pass&word (optional):"
+#~ msgstr "Pass&wort (optional):"
+
+#~ msgid "&OK"
+#~ msgstr "&OK"
+
+#~ msgid "&Cancel"
+#~ msgstr "&Abbrechen"
+
+#~ msgid "&Base DN:"
+#~ msgstr "&Basis-DN:"
+
+#~ msgid "&Port:"
+#~ msgstr "&Port:"
+
+#~ msgctxt "NAME OF TRANSLATORS"
+#~ msgid "Your names"
+#~ msgstr "Matthias Kalle Dalheimer"
+
+#~ msgctxt "EMAIL OF TRANSLATORS"
+#~ msgid "Your emails"
+#~ msgstr "kalle@klaralvdalens-datakonsult.se"
+
+#~ msgid "failed"
+#~ msgstr "fehlgeschlagen"
+
+#~ msgctxt ""
+#~ "Items in Kleo::BackendConfigWidget listview (1: protocol; 2: "
+#~ "implementation name)"
+#~ msgid "%1 (%2)"
+#~ msgstr "%1 (%2)"
+
+#~ msgid "Available Backends"
+#~ msgstr "Verfügbare Hintergrundprogramme"
+
+#~ msgid "Confi&gure..."
+#~ msgstr "Ein&richten ..."
+
+#~ msgid "Rescan"
+#~ msgstr "Neu einlesen"
+
+#~ msgid "The following problems where encountered during scanning:"
+#~ msgstr "Die folgenden Probleme sind beim Einlesen aufgetreten:"
+
+#~ msgctxt "@title:window Results of the scanning"
+#~ msgid "Scan Results"
+#~ msgstr "Suchergebnisse"
+
+#~ msgid "(Unknown Protocol)"
+#~ msgstr "(Unbekanntes Protokoll)"
+
+#~ msgid "Error while initializing plugin \"%1\""
+#~ msgstr "Fehler bei der Initialisierung des Moduls „%1“"
+
+#~ msgid "Can't start decrypt job"
+#~ msgstr "Entschlüsselung kann nicht gestartet werden."
+
+#~ msgid "Can't start combined decrypt/verify operation"
+#~ msgstr ""
+#~ "Kombinierte Entschlüsselung und Gültigkeitsprüfung kann nicht gestartet "
+#~ "werden."
+
+#~ msgid "Can't start encrypt job"
+#~ msgstr "Verschlüsselung kann nicht gestartet werden."
+
+#~ msgid "Error adding signer %1."
+#~ msgstr "Fehler beim Hinzufügen der Unterschrift von %1."
+
+#~ msgid ""
+#~ "You need a passphrase to unlock the secret key for user:<br/> %1 (retry)"
+#~ msgstr ""
+#~ "Sie benötigen ein Passwort, um den geheimen Schlüssel für Benutzer <br/>"
+#~ "%1 verwenden zu können (nochmal)."
+
+#~ msgid "You need a passphrase to unlock the secret key for user:<br/> %1"
+#~ msgstr ""
+#~ "Sie benötigen ein Passwort, um den geheimen Schlüssel für Benutzer <br/>"
+#~ "%1 verwenden zu können."
+
+#~ msgid ""
+#~ "This dialog will reappear every time the passphrase is needed. For a more "
+#~ "secure solution that also allows caching the passphrase, use gpg-agent."
+#~ msgstr ""
+#~ "Dieser Dialog wird jedes Mal angezeigt, wenn das Passwort benötigt wird. "
+#~ "Für eine sicherere Lösung, die auch das Zwischenspeichern des Passworts "
+#~ "erlaubt, installieren Sie gpg-agent."
+
+#~ msgid "gpg-agent was found in %1, but does not appear to be running."
+#~ msgstr "gpg-agent wurde in %1 gefunden, scheint aber nicht zu laufen."
+
+#~ msgid "gpg-agent is part of gnupg-%1, which you can download from %2"
+#~ msgstr ""
+#~ "gpg-agent ist Teil von gnupg-%1, das Sie von %2 herunterladen können."
+
+#~ msgid "For information on how to set up gpg-agent, see %1"
+#~ msgstr "Informationen zur Einrichtung von gpg-agent finden Sie in %1."
+
+#~ msgid "Enter passphrase:"
+#~ msgstr "Passwort eingeben:"
+
+#~ msgid "Passphrase Dialog"
+#~ msgstr "Passwort-Dialog"
+
+#~ msgid "Can't start combined sign-encrypt job"
+#~ msgstr ""
+#~ "Kombiniertes Verschlüsseln und Signieren kann nicht gestartet werden."
+
+#~ msgid "Can't start sign job"
+#~ msgstr "Signieren kann nicht gestartet werden."
+
+#~ msgid "Can't start detached signature verification"
+#~ msgstr "Überprüfen der angehängten Signatur kann nicht gestartet werden."
+
+#~ msgid "Can't start opaque signature verification"
+#~ msgstr "Überprüfen der opaken Signatur kann nicht gestartet werden."
+
+#~ msgid "Configure"
+#~ msgstr "Konfi&gurieren ..."
+
+#~ msgid "Select Directory Services to Use Here"
+#~ msgstr "Wählen Sie hier die zu verwendenden Verzeichnisdienste aus"
+
+#~ msgid ""
+#~ "<qt>\n"
+#~ "<h1>X.500 Directory Services</h1>\n"
+#~ "You can use X.500 directory services to retrieve certificates and "
+#~ "certificate revocation lists that are not saved locally. Ask your local "
+#~ "administrator if you want to make use of this feature and are unsure "
+#~ "which directory service you can use.\n"
+#~ "<p>\n"
+#~ "If you do not use a directory service, you can still use local "
+#~ "certificates.\n"
+#~ "</qt>"
+#~ msgstr ""
+#~ "<qt>\n"
+#~ "<h1>X.500-Verzeichnisdienste</h1>\n"
+#~ "Sie können X.500-Verzeichnisdienste verwenden, um Zertifikate und "
+#~ "Zertifikats-Widerrufslisten abzufragen, die derzeit nicht lokal "
+#~ "gespeichert sind. Fragen Sie Ihren lokalen Administrator, wenn Sie diese "
+#~ "Funktion verwenden möchten und sich nicht sicher sind, welchen "
+#~ "Verzeichnisdienst Sie verwenden können.\n"
+#~ "<p>\n"
+#~ "Auch wenn Sie keinen Verzeichnisdienst verwenden, können Sie weiterhin "
+#~ "lokale Zertifikate benutzen.\n"
+#~ "</qt>"
+
+#~ msgid "Port"
+#~ msgstr "Port"
+
+#~ msgid ""
+#~ "<qt>\n"
+#~ "<h1>Add a Directory Service</h1>\n"
+#~ "By clicking this button, you can select a new directory service to be "
+#~ "used for retrieving certificates and CRLs. You will be asked for the "
+#~ "server name and an optional description.\n"
+#~ "</qt>"
+#~ msgstr ""
+#~ "<qt>\n"
+#~ "<h1>Verzeichnisdienst hinzufügen</h1>\n"
+#~ "Wenn Sie diese Schaltfläche betätigen, können Sie einen neuen "
+#~ "Verzeichnisdienst auswählen, der zum Abfragen von Zertifikaten und CRLs "
+#~ "abgefragt werden soll. Sie werden nach dem Servernamen und einer "
+#~ "optionalen Beschreibung gefragt werden.\n"
+#~ "</qt>"
+
+#~ msgid "&Add Service..."
+#~ msgstr "Dienst &hinzufügen ..."
+
+#~ msgid ""
+#~ "<qt>\n"
+#~ "<h1>Remove Directory Service</h1>\n"
+#~ "By clicking this button, you can remove the currently selected directory "
+#~ "service in the list above. You will have a chance to rethink your "
+#~ "decision before the entry is deleted from the list.\n"
+#~ "</qt>"
+#~ msgstr ""
+#~ "<qt>\n"
+#~ "<h1>Verzeichnisdienst entfernen</h1>\n"
+#~ "Wenn Sie diesen Knopf betätigen, können Sie den aktuell ausgewählten "
+#~ "Verzeichnisdienst aus der obigen Liste entfernen. Sie können Ihre "
+#~ "Entscheidung noch einmal überdenken, bevor der Eintrag aus der Liste "
+#~ "gelöscht wird.\n"
+#~ "</qt>"
+
+#~ msgid "&Remove Service"
+#~ msgstr "Dienst &entfernen"
+
+#~ msgid "<placeholder>unnamed</placeholder>"
+#~ msgstr "<placeholder>unbenannt</placeholder>"
--- /dev/null
+# translation of libkleopatra.po to Greek
+# Copyright (C) YEAR This_file_is_part_of_KDE
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Spiros Georgaras <sng@hellug.gr>, 2007, 2008.
+# Toussis Manolis <manolis@koppermind.homelinux.org>, 2007, 2008, 2009.
+# Spiros Georgaras <sngeorgaras@otenet.gr>, 2008.
+# Dimitrios Glentadakis <dglent@gmail.com>, 2011.
+# Stelios <sstavra@gmail.com>, 2012.
+msgid ""
+msgstr ""
+"Project-Id-Version: libkleopatra\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2017-07-12 06:56+0200\n"
+"PO-Revision-Date: 2012-10-16 12:35+0300\n"
+"Last-Translator: Stelios <sstavra@gmail.com>\n"
+"Language-Team: Greek <kde-i18n-el@kde.org>\n"
+"Language: el\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Lokalize 1.4\n"
+
+#: kleo/checksumdefinition.cpp:107
+#, kde-format
+msgid "Error in checksum definition %1: %2"
+msgstr "Σφάλμα στον ορισμό του αθροίσματος ελέγχου %1: %2"
+
+#: kleo/checksumdefinition.cpp:157
+#, kde-format
+msgid "Cannot use both %f and | in '%1'"
+msgstr "Αδυναμία ταυτόχρονης χρήσης %f και | στο '%1'"
+
+#: kleo/checksumdefinition.cpp:167
+#, kde-format
+msgid "Quoting error in '%1' entry"
+msgstr "Παράθεση σφάλματος στην '%1' εγγραφή"
+
+#: kleo/checksumdefinition.cpp:170
+#, kde-format
+msgid "'%1' too complex (would need shell)"
+msgstr "'%1' είναι πολύ σύνθετη (θα χρειαστεί το κέλυφος)"
+
+#: kleo/checksumdefinition.cpp:174
+#, kde-format
+msgid "'%1' entry is empty/missing"
+msgstr "'%1' εγγραφή κενή/λείπει"
+
+#: kleo/checksumdefinition.cpp:183
+#, kde-format
+msgid "'%1' empty or not found"
+msgstr "Η '%1' είναι κενή ή δεν βρέθηκε"
+
+#: kleo/checksumdefinition.cpp:222
+#, kde-format
+msgid "'id' entry is empty/missing"
+msgstr "'id' εγγραφή κενή/λείπει"
+
+#: kleo/checksumdefinition.cpp:225
+#, kde-format
+msgid "'output-file' entry is empty/missing"
+msgstr "'output-file' εγγραφή κενή/λείπει"
+
+#: kleo/checksumdefinition.cpp:228
+#, kde-format
+msgid "'file-patterns' entry is empty/missing"
+msgstr "'file-patterns' εγγραφή κενή/λείπει"
+
+#: kleo/checksumdefinition.cpp:395
+#, kde-format
+msgid "Caught unknown exception in group %1"
+msgstr "Σύλληψη άγνωστης εξαίρεσης στην ομάδα %1"
+
+#: kleo/dn.cpp:507
+#, kde-format
+msgid "Common name"
+msgstr "Κοινό όνομα"
+
+#: kleo/dn.cpp:508
+#, kde-format
+msgid "Surname"
+msgstr "Επίθετο"
+
+#: kleo/dn.cpp:509
+#, kde-format
+msgid "Given name"
+msgstr "Όνομα"
+
+#: kleo/dn.cpp:510
+#, kde-format
+msgid "Location"
+msgstr "Τοποθεσία"
+
+#: kleo/dn.cpp:511
+#, kde-format
+msgid "Title"
+msgstr "Τίτλος"
+
+#: kleo/dn.cpp:512
+#, kde-format
+msgid "Organizational unit"
+msgstr "Μονάδα οργάνωσης"
+
+#: kleo/dn.cpp:513
+#, kde-format
+msgid "Organization"
+msgstr "Οργανισμός"
+
+#: kleo/dn.cpp:514
+#, kde-format
+msgid "Postal code"
+msgstr "Ταχυδρομικός κώδικας"
+
+#: kleo/dn.cpp:515
+#, kde-format
+msgid "Country code"
+msgstr "Κωδικός χώρας"
+
+#: kleo/dn.cpp:516
+#, kde-format
+msgid "State or province"
+msgstr "Πολιτεία ή επαρχία"
+
+#: kleo/dn.cpp:517
+#, kde-format
+msgid "Domain component"
+msgstr "Τμήμα τομέα"
+
+#: kleo/dn.cpp:518
+#, kde-format
+msgid "Business category"
+msgstr "Κατηγορία επιχείρησης"
+
+#: kleo/dn.cpp:519
+#, kde-format
+msgid "Email address"
+msgstr "Διεύθυνση ηλ. αλληλογραφίας"
+
+#: kleo/dn.cpp:520
+#, kde-format
+msgid "Mail address"
+msgstr "Ταχυδρομική διεύθυνση"
+
+#: kleo/dn.cpp:521
+#, kde-format
+msgid "Mobile phone number"
+msgstr "Αριθμός κινητού τηλεφώνου"
+
+#: kleo/dn.cpp:522
+#, kde-format
+msgid "Telephone number"
+msgstr "Αριθμός τηλεφώνου"
+
+#: kleo/dn.cpp:523
+#, kde-format
+msgid "Fax number"
+msgstr "Αριθμός Φαξ"
+
+#: kleo/dn.cpp:524
+#, kde-format
+msgid "Street address"
+msgstr "Διεύθυνση κατοικίας"
+
+#: kleo/dn.cpp:525
+#, kde-format
+msgid "Unique ID"
+msgstr "Μοναδικό ID"
+
+#: kleo/enum.cpp:57
+#, kde-format
+msgid "Inline OpenPGP (deprecated)"
+msgstr "Inline OpenPGP (ξεπερασμένο)"
+
+#: kleo/enum.cpp:62
+#, kde-format
+msgid "OpenPGP/MIME"
+msgstr "OpenPGP/MIME"
+
+#: kleo/enum.cpp:67 ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "S/MIME"
+msgstr "S/MIME"
+
+#: kleo/enum.cpp:72
+#, kde-format
+msgid "S/MIME Opaque"
+msgstr "S/MIME Opaque"
+
+#: kleo/enum.cpp:104
+#, kde-format
+msgid "Any"
+msgstr "Οποιοδήποτε"
+
+#: kleo/enum.cpp:177
+#, kde-format
+msgid "Never Encrypt"
+msgstr "Να μη γίνεται ποτέ κρυπτογράφηση"
+
+#: kleo/enum.cpp:179
+#, kde-format
+msgid "Always Encrypt"
+msgstr "Να γίνεται πάντα κρυπτογράφηση"
+
+#: kleo/enum.cpp:181
+#, kde-format
+msgid "Always Encrypt If Possible"
+msgstr "Να γίνεται πάντα κρυπτογράφηση αν είναι δυνατό"
+
+#: kleo/enum.cpp:183 kleo/enum.cpp:240
+#, kde-format
+msgid "Ask"
+msgstr "Ερώτηση"
+
+#: kleo/enum.cpp:185 kleo/enum.cpp:242
+#, kde-format
+msgid "Ask Whenever Possible"
+msgstr "Ερώτηση αν είναι δυνατό"
+
+#: kleo/enum.cpp:187
+#, kde-kuit-format
+msgctxt "no specific preference"
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>καμία</placeholder>"
+
+#: kleo/enum.cpp:234
+#, kde-format
+msgid "Never Sign"
+msgstr "Να μην υπογράφεται ποτέ"
+
+#: kleo/enum.cpp:236
+#, kde-format
+msgid "Always Sign"
+msgstr "Να υπογράφεται πάντα"
+
+#: kleo/enum.cpp:238
+#, kde-format
+msgid "Always Sign If Possible"
+msgstr "Να υπογράφεται πάντα αν είναι δυνατό"
+
+#: kleo/enum.cpp:244
+#, kde-format
+msgctxt "no specific preference"
+msgid "<none>"
+msgstr "<κανένα>"
+
+#: kleo/keyfiltermanager.cpp:85
+#, kde-format
+msgid "All Certificates"
+msgstr "Όλα τα πιστοποιητικά"
+
+#: kleo/keyfiltermanager.cpp:100
+#, kde-format
+msgid "My Certificates"
+msgstr "Τα πιστοποιητικά μου"
+
+#: kleo/keyfiltermanager.cpp:118
+#, kde-format
+msgid "Trusted Certificates"
+msgstr "Έμπιστα πιστοποιητικά"
+
+#: kleo/keyfiltermanager.cpp:135
+#, fuzzy, kde-format
+#| msgid "Trusted Certificates"
+msgid "Fully Trusted Certificates"
+msgstr "Έμπιστα πιστοποιητικά"
+
+#: kleo/keyfiltermanager.cpp:152
+#, kde-format
+msgid "Other Certificates"
+msgstr "Άλλα πιστοποιητικά"
+
+#: kleo/keyfiltermanager.cpp:166
+#, fuzzy, kde-format
+#| msgid "All Certificates"
+msgid "VS-compliant Certificates"
+msgstr "Όλα τα πιστοποιητικά"
+
+#: kleo/keyfiltermanager.cpp:184
+#, fuzzy, kde-format
+#| msgid "Trusted Certificates"
+msgid "Not validated Certificates"
+msgstr "Έμπιστα πιστοποιητικά"
+
+#: ui/auditlogviewer.cpp:49
+#, kde-format
+msgid "View GnuPG Audit Log"
+msgstr "Προβολή καταγραφής επαλήθευσης GnuPG"
+
+#: ui/auditlogviewer.cpp:53
+#, kde-format
+msgid "&Copy to Clipboard"
+msgstr "&Αντιγραφή στο πρόχειρο"
+
+#: ui/auditlogviewer.cpp:59
+#, kde-format
+msgid "&Save to Disk..."
+msgstr "Απο&θήκευση στο δίσκο..."
+
+#: ui/auditlogviewer.cpp:95
+#, kde-format
+msgid "Choose File to Save GnuPG Audit Log to"
+msgstr "Επιλέξτε αρχείο για την αποθήκευση της καταγραφής επαλήθευσης GnuPG"
+
+#: ui/auditlogviewer.cpp:118
+#, kde-format
+msgid "Could not save to file \"%1\": %2"
+msgstr "Αδυναμία αποθήκευσης στο αρχείο \"%1\": %2"
+
+#: ui/auditlogviewer.cpp:120
+#, kde-format
+msgid "File Save Error"
+msgstr "Σφάλμα αποθήκευσης αρχείου"
+
+#: ui/cryptoconfigdialog.cpp:44
+#, kde-format
+msgid "Configure GnuPG Backend"
+msgstr "Διαμόρφωση συστήματος υποστήριξης GnuPG"
+
+#: ui/cryptoconfigdialog.cpp:55
+#, kde-format
+msgid "&Reset"
+msgstr "&Επαναφορά"
+
+#: ui/cryptoconfigmodule.cpp:160
+#, kde-format
+msgid "GpgConf Error"
+msgstr "Σφάλμα GpgConf"
+
+#: ui/cryptoconfigmodule.cpp:216
+#, kde-format
+msgid ""
+"The gpgconf tool used to provide the information for this dialog does not "
+"seem to be installed properly. It did not return any components. Try running "
+"\"%1\" on the command line for more information."
+msgstr ""
+"Το εργαλείο gpgconf που χρησιμοποιείται για να προσφέρει πληροφορίες σε "
+"αυτόν το διάλογο δε φαίνεται να είναι εγκατεστημένο σωστά. Δεν επέστρεψε "
+"κάποια συστατικά. Δοκιμάστε την εκτέλεση του \"%1\" από τη γραμμή εντολών "
+"για περισσότερες πληροφορίες."
+
+#: ui/cryptoconfigmodule.cpp:496
+#, kde-format
+msgctxt ""
+"Translate this to 'yes' or 'no' (use the English words!) depending on "
+"whether your language uses Sentence style capitalisation in GUI labels (yes) "
+"or not (no). Context: We get some backend strings in that have the wrong "
+"capitalizaion (in English, at least) so we need to force the first character "
+"to upper-case. It is this behaviour you can control for your language with "
+"this translation."
+msgid "yes"
+msgstr "no"
+
+#: ui/cryptoconfigmodule.cpp:546
+#, kde-format
+msgid "0 - None"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:547
+#, kde-format
+msgid "1 - Basic"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:548
+#, kde-format
+msgid "2 - Verbose"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:549
+#, kde-format
+msgid "3 - More Verbose"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:550
+#, kde-format
+msgid "4 - All"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:559
+#, kde-format
+msgid "Set the debugging level to"
+msgstr "Ορισμός επιπέδου αποσφαλμάτωσης"
+
+#: ui/cryptoconfigmodule.cpp:787
+#, kde-format
+msgid "Show..."
+msgstr "Εμφάνιση..."
+
+#: ui/cryptoconfigmodule.cpp:787 ui/cryptoconfigmodule.cpp:876
+#, kde-format
+msgid "Edit..."
+msgstr "Επεξεργασία..."
+
+#: ui/cryptoconfigmodule.cpp:841
+#, kde-format
+msgid "Configure LDAP Servers"
+msgstr "Διαμόρφωση εξυπηρετητών LDAP"
+
+#: ui/cryptoconfigmodule.cpp:862
+#, fuzzy, kde-format
+#| msgid "No server configured yet"
+msgid "None configured"
+msgstr "Δεν έχει διαμορφωθεί εξυπηρετητής ακόμα"
+
+#: ui/cryptoconfigmodule.cpp:864
+#, kde-format
+msgid "1 server configured"
+msgid_plural "%1 servers configured"
+msgstr[0] "Έχει διαμορφωθεί 1 εξυπηρετητής"
+msgstr[1] "Έχουν διαμορφωθεί %1 εξυπηρετητές"
+
+#: ui/cryptoconfigmodule.cpp:879
+#, kde-format
+msgid "Use keyserver at"
+msgstr "Χρήση εξυπηρετητή κλειδιών από"
+
+#: ui/cryptoconfigmodule.cpp:968
+#, kde-format
+msgid "Configure Keyservers"
+msgstr "Διαμόρφωση εξυπηρετητών κλειδιών"
+
+#: ui/directoryserviceswidget.cpp:67
+#, kde-format
+msgctxt "default server name, keep it a valid domain name, ie. no spaces"
+msgid "server"
+msgstr "server"
+
+#: ui/directoryserviceswidget.cpp:95
+#, kde-format
+msgid "hkp"
+msgstr "hkp"
+
+#: ui/directoryserviceswidget.cpp:96
+#, kde-format
+msgid "http"
+msgstr "http"
+
+#: ui/directoryserviceswidget.cpp:97
+#, kde-format
+msgid "https"
+msgstr "https"
+
+#: ui/directoryserviceswidget.cpp:98
+#, kde-format
+msgid "ftp"
+msgstr "ftp"
+
+#: ui/directoryserviceswidget.cpp:99
+#, kde-format
+msgid "ftps"
+msgstr "ftps"
+
+#: ui/directoryserviceswidget.cpp:100
+#, kde-format
+msgid "ldap"
+msgstr "ldap"
+
+#: ui/directoryserviceswidget.cpp:101
+#, kde-format
+msgid "ldaps"
+msgstr "ldaps"
+
+#: ui/directoryserviceswidget.cpp:588
+#, kde-format
+msgid "Server Name"
+msgstr "Όνομα εξυπηρετητή"
+
+#: ui/directoryserviceswidget.cpp:589
+#, kde-format
+msgid "Server Port"
+msgstr "Θύρα εξυπηρετητή"
+
+#: ui/directoryserviceswidget.cpp:590
+#, kde-format
+msgid "Base DN"
+msgstr "Βάση DN"
+
+#: ui/directoryserviceswidget.cpp:591
+#, kde-format
+msgid "User Name"
+msgstr "Όνομα χρήστη"
+
+#: ui/directoryserviceswidget.cpp:592
+#, kde-format
+msgid "Password"
+msgstr "Κωδικός πρόσβασης"
+
+#: ui/directoryserviceswidget.cpp:614
+#, kde-format
+msgid "(read-only)"
+msgstr "(μόνο για ανάγνωση)"
+
+#: ui/directoryserviceswidget.cpp:616
+#, kde-format
+msgctxt "amended tooltip; %1: original tooltip"
+msgid "%1 (read-only)"
+msgstr "%1 (μόνο για ανάγνωση)"
+
+#: ui/directoryserviceswidget.cpp:739
+#, kde-format
+msgid ""
+"Enter the name or IP address of the server hosting the directory service."
+msgstr ""
+"Εισάγετε το όνομα ή τη διεύθυνση IP του εξυπηρετητή της υπηρεσίας καταλόγου."
+
+#: ui/directoryserviceswidget.cpp:741
+#, kde-format
+msgid ""
+"<b>(Optional, the default is fine in most cases)</b> Pick the port number "
+"the directory service is listening on."
+msgstr ""
+"<b>(Προαιρετικό, η προκαθορισμένη αρκεί για τις περισσότερες των "
+"περιπτώσεων)</b> Επιλέξτε τον αριθμό θύρας στον οποίο εκτελεί ακρόαση η "
+"υπηρεσία καταλόγου."
+
+#: ui/directoryserviceswidget.cpp:744
+#, kde-format
+msgid ""
+"<b>(Only for LDAP)</b> Enter the base DN for this LDAP server to limit "
+"searches to only that subtree of the directory."
+msgstr ""
+"<b>(Μόνο για LDAP)</b> Εισάγετε τη βάση DN για αυτόν τον εξυπηρετητή LDAP "
+"για τον περιορισμό των αναζητήσεων σε αυτό μόνο το υποδέντρο του καταλόγου."
+
+#: ui/directoryserviceswidget.cpp:747
+#, kde-format
+msgid "<b>(Optional)</b> Enter your user name here, if needed."
+msgstr "<b>(Προαιρετικό)</b> Εισάγετε εδώ το όνομα χρήστη, αν αυτό απαιτείται."
+
+#: ui/directoryserviceswidget.cpp:749
+#, kde-format
+msgid ""
+"<b>(Optional, not recommended)</b> Enter your password here, if needed. Note "
+"that the password will be saved in the clear in a config file in your home "
+"directory."
+msgstr ""
+"<b>(Προαιρετικό, δεν προτείνεται)</b> Εισάγετε εδώ των κωδικό πρόσβασής σας, "
+"αν αυτό χρειάζεται. Σημειώστε ότι ο κωδικός θα αποθηκευτεί σε ένα απλό "
+"αρχείο ρυθμίσεων στον προσωπικό σας κατάλογο."
+
+#. i18n: ectx: property (windowTitle), widget (QWidget, DirectoryServicesWidget)
+#: ui/directoryserviceswidget.ui:14
+#, kde-format
+msgid "Directory Services Configuration"
+msgstr "Διαμόρφωση υπηρεσίας καταλόγου"
+
+#. i18n: ectx: property (text), widget (QLabel, pgpKSLabel)
+#: ui/directoryserviceswidget.ui:22
+#, fuzzy, kde-format
+#| msgid "OpenPGP Key Selection"
+msgid "OpenPGP Keyserver:"
+msgstr "Επιλογή κλειδιού OpenPGP"
+
+#. i18n: ectx: property (title), widget (QGroupBox, x500LA)
+#: ui/directoryserviceswidget.ui:35
+#, fuzzy, kde-format
+#| msgid "Directory services:"
+msgid "X509 Directory services:"
+msgstr "Υπηρεσίες καταλόγου:"
+
+#. i18n: ectx: property (whatsThis), widget (QTreeView, treeView)
+#: ui/directoryserviceswidget.ui:43
+#, fuzzy, kde-format
+#| msgid ""
+#| "This is a list of all directory services that are configured for use with "
+#| "X.509 and OpenPGP."
+msgid ""
+"This is a list of all directory services that are configured for use with "
+"X.509."
+msgstr ""
+"Αυτή είναι η λίστα των υπηρεσιών καταλόγου που είναι διαμορφωμένες για χρήση "
+"με τα X.509 και OpenPGP."
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:70
+#, kde-format
+msgid "Click to add a service"
+msgstr "Κάντε κλικ για να προσθέσετε μία υπηρεσία"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:73
+#, kde-format
+msgid ""
+"Click this button to create a new directory service entry as a clone of the "
+"currently selected one (or with default values, if no other is selected). "
+"You can then configure details in the table on the left hand."
+msgstr ""
+"Κλικ σε αυτό το κουμπί για τη δημιουργία μιας νέας καταχώρησης υπηρεσίας "
+"καταλόγου ως κλώνο της τρέχουσας επιλεγμένης (ή με προκαθορισμένες τιμές, αν "
+"δεν υπάρχει επιλογή). Μπορείτε έπειτα να διαμορφώσετε τις λεπτομέρειες στον "
+"πίνακα στα αριστερά."
+
+#. i18n: ectx: property (text), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:76
+#, kde-format
+msgid "New"
+msgstr "Νέα"
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:92
+#, kde-format
+msgid "Click to remove the currently selected service"
+msgstr "Κάντε κλικ για να αφαιρέσετε την επιλεγμένη υπηρεσία"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:95
+#, kde-format
+msgid ""
+"Click this button to remove the currently selected directory service. The "
+"change will only take effect once you acknowledge the main configuration "
+"dialog."
+msgstr ""
+"Κλικ σε αυτό το κουμπί για την αφαίρεση της τρέχουσας επιλεγμένης υπηρεσίας "
+"καταλόγου. Η αλλαγή θα έχει ισχύ μόλις επιβεβαιώσετε το διάλογο διαμόρφωσης "
+"αλληλογραφίας."
+
+#. i18n: ectx: property (text), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:98
+#, kde-format
+msgid "Delete"
+msgstr "Διαγραφή"
+
+#. i18n: ectx: property (whatsThis), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:128
+#, kde-format
+msgid ""
+"Use this option to switch display of username and password information on or "
+"off in the above table."
+msgstr ""
+"Χρησιμοποιήστε αυτήν την επιλογή για να ενεργοποιήσετε/απενεργοποιήσετε την "
+"εμφάνιση του ονόματος χρήστη και του κωδικού πρόσβασης στον παραπάνω πίνακα."
+
+#. i18n: ectx: property (text), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:131
+#, kde-format
+msgid "Show user and password information"
+msgstr "Εμφάνιση πληροφοριών χρήστη και κωδικού πρόσβασης"
+
+#: ui/dnattributeorderconfigwidget.cpp:73
+#, kde-format
+msgid "Description"
+msgstr "Περιγραφή"
+
+#: ui/dnattributeorderconfigwidget.cpp:91
+#, kde-format
+msgid "Available attributes:"
+msgstr "Διαθέσιμες ιδιότητες:"
+
+#: ui/dnattributeorderconfigwidget.cpp:92
+#, kde-format
+msgid "Current attribute order:"
+msgstr "Τρέχουσα σειρά ιδιοτήτων:"
+
+#: ui/dnattributeorderconfigwidget.cpp:112
+#, kde-format
+msgid "All others"
+msgstr "Όλες οι άλλες"
+
+#: ui/dnattributeorderconfigwidget.cpp:129
+#, kde-format
+msgid "Move to top"
+msgstr "Μετακίνηση στην κορυφή"
+
+#: ui/dnattributeorderconfigwidget.cpp:130
+#, kde-format
+msgid "Move one up"
+msgstr "Μετακίνηση πάνω κατά ένα"
+
+#: ui/dnattributeorderconfigwidget.cpp:131
+#, kde-format
+msgid "Remove from current attribute order"
+msgstr "Αφαίρεση από την τρέχουσα σειρά ιδιοτήτων"
+
+#: ui/dnattributeorderconfigwidget.cpp:132
+#, kde-format
+msgid "Add to current attribute order"
+msgstr "Προσθήκη στην τρέχουσα σειρά ιδιοτήτων"
+
+#: ui/dnattributeorderconfigwidget.cpp:133
+#, kde-format
+msgid "Move one down"
+msgstr "Μετακίνηση κάτω κατά ένα"
+
+#: ui/dnattributeorderconfigwidget.cpp:134
+#, kde-format
+msgid "Move to bottom"
+msgstr "Μετακίνηση στο τέλος"
+
+#: ui/keyapprovaldialog.cpp:87
+#, kde-kuit-format
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>καμία</placeholder>"
+
+#: ui/keyapprovaldialog.cpp:88
+#, kde-format
+msgid "Never Encrypt with This Key"
+msgstr "Ποτέ να μη γίνει κρυπτογράφηση με αυτό το κλειδί"
+
+#: ui/keyapprovaldialog.cpp:89
+#, kde-format
+msgid "Always Encrypt with This Key"
+msgstr "Πάντα να γίνεται κρυπτογράφηση με αυτό το κλειδί"
+
+#: ui/keyapprovaldialog.cpp:90
+#, kde-format
+msgid "Encrypt Whenever Encryption is Possible"
+msgstr "Κρυπτογράφηση όποτε είναι δυνατόν"
+
+#: ui/keyapprovaldialog.cpp:91
+#, kde-format
+msgid "Always Ask"
+msgstr "Ερώτηση πάντα"
+
+#: ui/keyapprovaldialog.cpp:92
+#, kde-format
+msgid "Ask Whenever Encryption is Possible"
+msgstr "Ερώτηση όποτε η κρυπτογράφηση είναι δυνατή"
+
+#: ui/keyapprovaldialog.cpp:113
+#, kde-format
+msgid "Encryption Key Approval"
+msgstr "Έγκριση κλειδιού κρυπτογράφησης"
+
+#: ui/keyapprovaldialog.cpp:129
+#, kde-format
+msgid "The following keys will be used for encryption:"
+msgstr "Τα ακόλουθα κλειδιά θα χρησιμοποιηθούν για κρυπτογράφηση:"
+
+#: ui/keyapprovaldialog.cpp:145
+#, kde-format
+msgid "Your keys:"
+msgstr "Τα κλειδιά σας:"
+
+#: ui/keyapprovaldialog.cpp:157
+#, kde-format
+msgid "Recipient:"
+msgstr "Παραλήπτης:"
+
+#: ui/keyapprovaldialog.cpp:162
+#, kde-format
+msgid "Encryption keys:"
+msgstr "Κλειδιά κρυπτογράφησης:"
+
+#: ui/keyapprovaldialog.cpp:169
+#, kde-format
+msgid "Encryption preference:"
+msgstr "Προτίμηση κρυπτογράφησης:"
+
+#: ui/keyrequester.cpp:118
+#, kde-format
+msgid "Clear"
+msgstr "Καθαρισμός"
+
+#: ui/keyrequester.cpp:121
+#, kde-format
+msgid "Change..."
+msgstr "Αλλαγή..."
+
+#: ui/keyrequester.cpp:232 ui/keyselectiondialog.cpp:256
+#, kde-kuit-format
+msgid "<placeholder>unknown</placeholder>"
+msgstr "<placeholder>άγνωστο</placeholder>"
+
+#: ui/keyrequester.cpp:246 ui/keyselectiondialog.cpp:657
+#, kde-format
+msgid ""
+"<qt><p>An error occurred while fetching the keys from the backend:</p><p><b>"
+"%1</b></p></qt>"
+msgstr ""
+"<qt><p>Παρουσιάστηκε σφάλμα κατά τη λήψη των κλειδιών από το σύστημα "
+"υποστήριξης:</p><p><b>%1</b></p></qt>"
+
+#: ui/keyrequester.cpp:251 ui/keyrequester.cpp:283 ui/keyrequester.cpp:306
+#: ui/keyselectiondialog.cpp:630 ui/keyselectiondialog.cpp:662
+#, kde-format
+msgid "Key Listing Failed"
+msgstr "Η εμφάνιση των κλειδιών απέτυχε"
+
+#: ui/keyrequester.cpp:281
+#, kde-format
+msgid ""
+"The OpenPGP backend does not support listing keys. Check your installation."
+msgstr ""
+"Το σύστημα υποστήριξης OpenPGP δεν υποστηρίζει την εμφάνιση κλειδιών. "
+"Ελέγξτε την εγκατάστασή σας."
+
+#: ui/keyrequester.cpp:304
+#, kde-format
+msgid ""
+"The S/MIME backend does not support listing keys. Check your installation."
+msgstr ""
+"Το σύστημα υποστήριξης S/MIME δεν υποστηρίζει την εμφάνιση κλειδιών. Ελέγξτε "
+"την εγκατάστασή σας."
+
+#: ui/keyrequester.cpp:426
+#, kde-format
+msgid "OpenPGP Key Selection"
+msgstr "Επιλογή κλειδιού OpenPGP"
+
+#: ui/keyrequester.cpp:427
+#, kde-format
+msgid "Please select an OpenPGP key to use."
+msgstr "Παρακαλώ επιλέξτε ένα κλειδί OpenPGP για χρήση."
+
+#: ui/keyrequester.cpp:429
+#, kde-format
+msgid "S/MIME Key Selection"
+msgstr "Επιλογή κλειδιού S/MIME"
+
+#: ui/keyrequester.cpp:430
+#, kde-format
+msgid "Please select an S/MIME key to use."
+msgstr "Παρακαλώ επιλέξτε ένα κλειδί S/MIME για χρήση."
+
+#: ui/keyrequester.cpp:432
+#, kde-format
+msgid "Key Selection"
+msgstr "Επιλογή κλειδιού"
+
+#: ui/keyrequester.cpp:433
+#, kde-format
+msgid "Please select an (OpenPGP or S/MIME) key to use."
+msgstr "Παρακαλώ επιλέξτε ένα κλειδί (OpenPGP ή S/MIME) για χρήση."
+
+#: ui/keyselectioncombo.cpp:195
+#, kde-format
+msgctxt "Name <email> (validity, type, created: date)"
+msgid "%1 (%2, %3, created: %4)"
+msgstr ""
+
+#: ui/keyselectioncombo.cpp:196
+#, kde-format
+msgctxt "Name <email>"
+msgid "%1 <%2>"
+msgstr ""
+
+#: ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "OpenPGP"
+msgstr "OpenPGP"
+
+#: ui/keyselectioncombo.cpp:347
+#, fuzzy, kde-format
+#| msgid "Fetching keys..."
+msgid "Loading keys ..."
+msgstr "Ανάκτηση κλειδιών..."
+
+#: ui/keyselectiondialog.cpp:98
+#, kde-format
+msgid "The key is not valid."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:106
+#, kde-format
+msgid "The key is expired."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:110
+#, kde-format
+msgid "The key is revoked."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:114
+#, kde-format
+msgid "The key is disabled."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:122
+#, fuzzy, kde-format
+#| msgid "The following keys will be used for encryption:"
+msgid "The key is not designated for encryption."
+msgstr "Τα ακόλουθα κλειδιά θα χρησιμοποιηθούν για κρυπτογράφηση:"
+
+#: ui/keyselectiondialog.cpp:128
+#, kde-format
+msgid "The key is not designated for signing."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:134
+#, kde-format
+msgid "The key is not designated for certifying."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:140
+#, kde-format
+msgid "The key is not designated for authentication."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:148
+#, kde-format
+msgid "The key is not secret."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:163
+#, kde-format
+msgid "The key is not trusted enough."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:169
+#, kde-format
+msgid "The key can be used."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:230
+#, kde-format
+msgid "Key ID"
+msgstr "ID κλειδιού"
+
+#: ui/keyselectiondialog.cpp:231
+#, kde-format
+msgid "User ID"
+msgstr "Ταυτότητα χρήστη"
+
+#: ui/keyselectiondialog.cpp:279
+#, kde-format
+msgid "never"
+msgstr "ποτέ"
+
+#: ui/keyselectiondialog.cpp:289 ui/keyselectiondialog.cpp:291
+#: ui/keyselectiondialog.cpp:300 ui/keyselectiondialog.cpp:302
+#, kde-format
+msgid "unknown"
+msgstr "άγνωστο"
+
+#: ui/keyselectiondialog.cpp:289
+#, kde-format
+msgid "OpenPGP key for <b>%1</b>"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:291
+#, kde-format
+msgid "S/MIME key for <b>%1</b>"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:298
+#, kde-format
+msgctxt "Key creation date"
+msgid "Created"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:299
+#, kde-format
+msgctxt "Key Expiration date"
+msgid "Expiry"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:300
+#, kde-format
+msgctxt "Key fingerprint"
+msgid "Fingerprint"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:302
+#, kde-format
+msgctxt "Key issuer"
+msgid "Issuer"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:304
+#, kde-format
+msgctxt "Key status"
+msgid "Status"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:456
+#, kde-format
+msgid "Search for &External Certificates"
+msgstr "Αναζήτηση για &εξωτερικά πιστοποιητικά"
+
+#: ui/keyselectiondialog.cpp:470
+#, kde-format
+msgid "&Search for:"
+msgstr "&Αναζήτηση για:"
+
+#: ui/keyselectiondialog.cpp:494
+#, kde-format
+msgid "&Remember choice"
+msgstr "Α&πομνημόνευση επιλογής"
+
+#: ui/keyselectiondialog.cpp:497
+#, kde-format
+msgid ""
+"<qt><p>If you check this box your choice will be stored and you will not be "
+"asked again.</p></qt>"
+msgstr ""
+"<qt><p>Αν ενεργοποιήσετε αυτό το πεδίο η επιλογή σας θα αποθηκευτεί και δε "
+"θα ερωτηθείτε ξανά.</p></qt>"
+
+#: ui/keyselectiondialog.cpp:509
+#, kde-format
+msgid "&Reread Keys"
+msgstr "Νέα &ανάγνωση των κλειδιών"
+
+#: ui/keyselectiondialog.cpp:510
+#, kde-format
+msgid "&Start Certificate Manager"
+msgstr "Ε&κκίνηση του διαχειριστή πιστοποιητικών"
+
+#: ui/keyselectiondialog.cpp:628
+#, kde-format
+msgid "No backends found for listing keys. Check your installation."
+msgstr ""
+"Δε βρέθηκαν συστήματα υποστήριξης για την εμφάνιση κλειδιών. Ελέγξτε την "
+"εγκατάστασή σας."
+
+#: ui/keyselectiondialog.cpp:644
+#, kde-format
+msgid "Could not start certificate manager; please check your installation."
+msgstr ""
+"Αδύνατη η εκκίνηση του διαχειριστή πιστοποιητικών. Παρακαλώ ελέγξτε την "
+"εγκατάστασή σας."
+
+#: ui/keyselectiondialog.cpp:646
+#, kde-format
+msgid "Certificate Manager Error"
+msgstr "Σφάλμα διαχειριστή πιστοποιητικών"
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Checking selected keys..."
+msgstr "Έλεγχος επιλεγμένων κλειδιών..."
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Fetching keys..."
+msgstr "Ανάκτηση κλειδιών..."
+
+#: ui/keyselectiondialog.cpp:731
+#, kde-format
+msgid ""
+"<qt>One backend returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgid_plural ""
+"<qt>%1 backends returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgstr[0] ""
+"<qt>Ένα σύστημα υποστήριξης επέστρεψε κομμένη έξοδο.<p>Δε θα εμφανιστούν όλα "
+"τα διαθέσιμα κλειδιά</p></qt>"
+msgstr[1] ""
+"<qt>%1 συστήματα υποστήριξης επέστρεψαν κομμένη έξοδο.<p>Δε θα εμφανιστούν "
+"όλα τα διαθέσιμα κλειδιά</p></qt>"
+
+#: ui/keyselectiondialog.cpp:736
+#, kde-format
+msgid "Key List Result"
+msgstr "Αποτέλεσμα εμφάνισης κλειδιών"
+
+#: ui/keyselectiondialog.cpp:856
+#, kde-format
+msgid "Recheck Key"
+msgstr "Επανέλεγχος του κλειδιού"
+
+#: ui/messagebox.cpp:71
+#, kde-format
+msgid "Your system does not have support for GnuPG Audit Logs"
+msgstr "Το σύστημά σας δεν υποστηρίζει καταγραφή επαλήθευσης GnuPG"
+
+#: ui/messagebox.cpp:72
+#, kde-format
+msgid "System Error"
+msgstr "Σφάλμα συστήματος"
+
+#: ui/messagebox.cpp:79
+#, kde-format
+msgid ""
+"An error occurred while trying to retrieve the GnuPG Audit Log:\n"
+"%1"
+msgstr ""
+"Συνέβη ένα σφάλμα κατά την προσπάθεια ανάκτησης της καταγραφής επαλήθευσης "
+"GnuPG:\n"
+"%1"
+
+#: ui/messagebox.cpp:81
+#, kde-format
+msgid "GnuPG Audit Log Error"
+msgstr "Σφάλμα καταγραφής επαλήθευσης GnuPG"
+
+#: ui/messagebox.cpp:88
+#, kde-format
+msgid "No GnuPG Audit Log available for this operation."
+msgstr "Μη διαθέσιμη καταγραφή επαλήθευσης GnuPG για τη λειτουργία αυτή."
+
+#: ui/messagebox.cpp:89
+#, kde-format
+msgid "No GnuPG Audit Log"
+msgstr "Χωρίς καταγραφή επαλήθευσης GnuPG"
+
+#: ui/messagebox.cpp:109 ui/messagebox.cpp:115
+#, kde-format
+msgid "GnuPG Audit Log Viewer"
+msgstr "Προβολέας καταγραφής επαλήθευσης GnuPG"
+
+#: ui/messagebox.cpp:121
+#, kde-format
+msgid "Signing failed: %1"
+msgstr "Η υπογραφή απέτυχε: %1"
+
+#: ui/messagebox.cpp:122
+#, kde-format
+msgid "Signing successful"
+msgstr "Επιτυχής υπογραφή"
+
+#: ui/messagebox.cpp:133
+#, kde-format
+msgid "Encryption failed: %1"
+msgstr "Η κρυπτογράφηση απέτυχε: %1"
+
+#: ui/messagebox.cpp:134
+#, kde-format
+msgid "Encryption successful"
+msgstr "Επιτυχής κρυπτογράφηση"
+
+#: ui/messagebox.cpp:155
+#, kde-format
+msgid "Signing Result"
+msgstr "Αποτέλεσμα υπογραφής"
+
+#: ui/messagebox.cpp:167
+#, kde-format
+msgid "Signing Error"
+msgstr "Σφάλμα υπογραφής"
+
+#: ui/messagebox.cpp:179 ui/messagebox.cpp:203
+#, kde-format
+msgid "Encryption Result"
+msgstr "Αποτέλεσμα κρυπτογράφησης"
+
+#: ui/messagebox.cpp:191 ui/messagebox.cpp:215
+#, kde-format
+msgid "Encryption Error"
+msgstr "Σφάλμα κρυπτογράφησης"
+
+#: ui/messagebox.cpp:263
+#, kde-format
+msgid "&Show Audit Log"
+msgstr "&Εμφάνιση καταγραφής επαλήθευσης"
+
+#: ui/progressdialog.cpp:91
+#, kde-format
+msgid "%1: %2"
+msgstr "%1: %2"
+
+#~ msgctxt "New X.509 Directory Server"
+#~ msgid "X.509"
+#~ msgstr "X.509"
+
+#~ msgctxt "New OpenPGP Directory Server"
+#~ msgid "OpenPGP"
+#~ msgstr "OpenPGP"
+
+#~ msgid "Scheme"
+#~ msgstr "Σχήμα"
+
+#~ msgid "X.509"
+#~ msgstr "X.509"
+
+#, fuzzy
+#~| msgid ""
+#~| "Select the access protocol (scheme) that the directory service is "
+#~| "available through."
+#~ msgid ""
+#~ "Select the access scheme (scheme) that the directory service is available "
+#~ "through."
+#~ msgstr ""
+#~ "Επιλέξτε το πρωτόκολλο πρόσβασης (σχήμα) με το οποίο είναι διαθέσιμη η "
+#~ "υπηρεσία καταλόγου."
+
+#~ msgid ""
+#~ "Check this column if this directory service is providing S/MIME (X.509) "
+#~ "certificates."
+#~ msgstr ""
+#~ "Ενεργοποιήστε αυτήν τη στήλη αν η υπηρεσία καταλόγου αυτή προσφέρει "
+#~ "πιστοποιητικά S/MIME (X.509)."
+
+#~ msgid ""
+#~ "Check this column if this directory service is providing OpenPGP "
+#~ "certificates."
+#~ msgstr ""
+#~ "Ενεργοποιήστε αυτήν τη στήλη αν η υπηρεσία καταλόγου αυτή προσφέρει "
+#~ "πιστοποιητικά OpenPGP."
+
+#~ msgid "0 - None (no debugging at all)"
+#~ msgstr "0 - Καθόλου (χωρίς αποσφαλμάτωση)"
+
+#~ msgid "1 - Basic (some basic debug messages)"
+#~ msgstr "1 - Βασικό (μερικά μηνύματα αποσφαλμάτωσης)"
+
+#~ msgid "2 - Advanced (more verbose debug messages)"
+#~ msgstr "2 - Προχωρημένο (περισσότερο εκτενή μηνύματα αποσφαλμάτωσης)"
+
+#~ msgid "3 - Expert (even more detailed messages)"
+#~ msgstr "3 - Για ειδικούς (λεπτομερή μηνύματα αποσφαλμάτωσης)"
+
+#~ msgid "4 - Guru (all of the debug messages you can get)"
+#~ msgstr "4 - Για σοφούς (όλα τα μηνύματα αποσφαλμάτωσης)"
+
+#~ msgid "General"
+#~ msgstr "Γενικά"
+
+#~ msgid "Chiasmus"
+#~ msgstr "Chiasmus"
+
+#~ msgid "Chiasmus command line tool"
+#~ msgstr "Εργαλείο Chiasmus γραμμής εντολών"
+
+#~ msgid "Unsupported protocol \"%1\""
+#~ msgstr "Μη υποστηριζόμενο πρωτόκολλο \"%1\""
+
+#~ msgid "File \"%1\" does not exist or is not executable."
+#~ msgstr "Το αρχείο \"%1\" δεν υπάρχει ή δεν είναι εκτελέσιμο."
+
+#~ msgid "Output from chiasmus"
+#~ msgstr "Έξοδος από το chiasmus"
+
+#~ msgid "Decryption failed: %1"
+#~ msgstr "Η αποκρυπτογράφηση απέτυχε: %1"
+
+#~ msgid ""
+#~ "The following was received on stderr:\n"
+#~ "%1"
+#~ msgstr ""
+#~ "Το παρακάτω παραλείφθηκε στο stderr:\n"
+#~ "%1"
+
+#~ msgid "Failed to load %1: %2"
+#~ msgstr "Αποτυχία φόρτωσης του %1: %2"
+
+#~ msgid "Library does not contain the symbol \"Chiasmus\"."
+#~ msgstr "Η βιβλιοθήκη δεν περιέχει το σύμβολο \"Chiasmus\"."
+
+#~ msgid "Scanning directory %1..."
+#~ msgstr "Σάρωση του καταλόγου %1..."
+
+#~ msgid "GpgME"
+#~ msgstr "GpgME"
+
+#~ msgid "GPGME was compiled without support for %1."
+#~ msgstr "Το GPGME μεταγλωττίστηκε χωρίς υποστήριξη για το %1."
+
+#~ msgid "Engine %1 is not installed properly."
+#~ msgstr "Η μηχανή %1 δεν έχει εγκατασταθεί σωστά."
+
+#~ msgid "Engine %1 version %2 installed, but at least version %3 is required."
+#~ msgstr ""
+#~ "Έχει εγκατασταθεί η μηχανή %1 έκδοση %2, αλλά απαιτείται τουλάχιστον η "
+#~ "έκδοση %3."
+
+#~ msgid "Unknown problem with engine for protocol %1."
+#~ msgstr "Άγνωστο πρόβλημα μηχανής για το πρωτόκολλο %1."
+
+#~ msgid "program terminated unexpectedly"
+#~ msgstr "το πρόγραμμα τερμάτισε πρόωρα"
+
+#~ msgid "program not found or cannot be started"
+#~ msgstr "το πρόγραμμα δε βρέθηκε ή δεν μπορεί να εκτελεστεί"
+
+#~ msgid "<qt>Failed to execute gpgconf:<p>%1</p></qt>"
+#~ msgstr "<qt>Η εκτέλεση του gpgconf απέτυχε:<p>%1</p></qt>"
+
+#~ msgid ""
+#~ "Could not start gpgconf.\n"
+#~ "Check that gpgconf is in the PATH and that it can be started."
+#~ msgstr ""
+#~ "Αδύνατη η εκκίνηση του gpgconf\n"
+#~ "Ελέγξτε ότι το gpgconf βρίσκεται στο PATH και ότι μπορεί να εκκινηθεί"
+
+#~ msgid "Error from gpgconf while saving configuration: %1"
+#~ msgstr "Σφάλμα από το gpgconf κατά την αποθήκευση της διαμόρφωσης: %1"
+
+#~ msgid "Generating DSA key..."
+#~ msgstr "Δημιουργία κλειδιού DSA..."
+
+#~ msgid "Generating ElGamal key..."
+#~ msgstr "Δημιουργία κλειδιού ElGamal..."
+
+#~ msgid "Searching for a large prime number..."
+#~ msgstr "Αναζήτηση ενός μεγάλου πρώτου αριθμού..."
+
+#~ msgid ""
+#~ "Waiting for new entropy from random number generator (you might want to "
+#~ "exercise the harddisks or move the mouse)..."
+#~ msgstr ""
+#~ "Αναμονή για νέα εντροπία από την γεννήτρια τυχαίων αριθμών (ίσως να "
+#~ "χρειάζεται να εξασκήσετε τους σκληρούς σας δίσκους ή να μετακινήσετε το "
+#~ "ποντίκι)..."
+
+#~ msgid "Please wait..."
+#~ msgstr "Παρακαλώ περιμένετε..."
+
+#~ msgid ""
+#~ "Starting gpg-agent (you should consider starting a global instance "
+#~ "instead)..."
+#~ msgstr ""
+#~ "Εκκίνηση του gpg-agent (καλύτερα να εκκινούσατε μία καθολική διεργασία "
+#~ "αντί αυτού)..."
+
+#~ msgid "While scanning for %1 support in backend %2:"
+#~ msgstr "Κατά τη σάρωση για υποστήριξη %1 στο σύστημα υποστήριξης %2:"
+
+#~ msgctxt "progress info: \"%1 of %2\""
+#~ msgid "%1/%2"
+#~ msgstr "%1/%2"
+
+#~ msgid ""
+#~ "OpenPGP key for %1\n"
+#~ "Created: %2\n"
+#~ "Expiry: %3\n"
+#~ "Fingerprint: %4"
+#~ msgstr ""
+#~ "Κλειδί OpenPGP για %1\n"
+#~ "Δημιουργία: %2\n"
+#~ "Λήξη: %3\n"
+#~ "Αποτύπωμα: %4"
+
+#~ msgid ""
+#~ "S/MIME key for %1\n"
+#~ "Created: %2\n"
+#~ "Expiry: %3\n"
+#~ "Fingerprint: %4\n"
+#~ "Issuer: %5"
+#~ msgstr ""
+#~ "Κλειδί OpenPGP για %1\n"
+#~ "Δημιουργία: %2\n"
+#~ "Λήξη: %3\n"
+#~ "Αποτύπωμα: %4\n"
+#~ "Εκδότης: %5"
+
+#~ msgid "Copy Audit Log to Clipboard"
+#~ msgstr "Αντιγραφή καταγραφής επαλήθευσης στο πρόχειρο"
+
+#~ msgid "Add or Change Directory Service"
+#~ msgstr "Προσθήκη ή αλλαγή υπηρεσίας καταλόγου"
+
+#~ msgid "&Server name:"
+#~ msgstr "Όνομα ε&ξυπηρετητή:"
+
+#~ msgid "389"
+#~ msgstr "389"
+
+#~ msgid "&User name (optional):"
+#~ msgstr "Όνομα &χρήστη (προαιρετικό):"
+
+#~ msgid "Pass&word (optional):"
+#~ msgstr "Κ&ωδικός πρόσβασης (προαιρετικός):"
+
+#~ msgid "&OK"
+#~ msgstr "&Εντάξει"
+
+#~ msgid "&Cancel"
+#~ msgstr "&Ακύρωση"
+
+#~ msgid "&Base DN:"
+#~ msgstr "&Βάση DN:"
+
+#~ msgid "&Port:"
+#~ msgstr "&Θύρα:"
+
+#~ msgctxt "NAME OF TRANSLATORS"
+#~ msgid "Your names"
+#~ msgstr "Σπύρος Γεωργαράς, Τούσης Μανώλης"
+
+#~ msgctxt "EMAIL OF TRANSLATORS"
+#~ msgid "Your emails"
+#~ msgstr "sng@hellug.gr, manolis@koppermind.homelinux.org"
+
+#~ msgid "(Unknown Protocol)"
+#~ msgstr "(Άγνωστο πρωτόκολλο)"
+
+#~ msgid "Error while initializing plugin \"%1\""
+#~ msgstr "Σφάλμα κατά την αρχικοποίηση του προσθέτου \"%1\""
+
+#~ msgid "failed"
+#~ msgstr "απέτυχε"
+
+#~ msgctxt ""
+#~ "Items in Kleo::BackendConfigWidget listview (1: protocol; 2: "
+#~ "implementation name)"
+#~ msgid "%1 (%2)"
+#~ msgstr "%1 (%2)"
+
+#~ msgid "Available Backends"
+#~ msgstr "Διαθέσιμα συστήματα υποστήριξης"
+
+#~ msgid "Confi&gure..."
+#~ msgstr "Ρύθμ&ιση..."
+
+#~ msgid "Rescan"
+#~ msgstr "Επανασάρωση"
+
+#~ msgid "The following problems where encountered during scanning:"
+#~ msgstr "Κατά τη σάρωση παρουσιάστηκαν τα ακόλουθα προβλήματα:"
+
+#~ msgctxt "@title:window Results of the scanning"
+#~ msgid "Scan Results"
+#~ msgstr "Αποτελέσματα σάρωσης"
--- /dev/null
+# translation of libkleopatra.po to British English
+# Andrew Coles <andrew_coles@yahoo.co.uk>, 2004, 2005, 2009, 2010.
+# Malcolm Hunter <malcolm.hunter@gmx.co.uk>, 2004, 2005.
+# Steve Allewell <steve.allewell@gmail.com>, 2014, 2016, 2017.
+msgid ""
+msgstr ""
+"Project-Id-Version: libkleopatra\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2017-07-12 06:56+0200\n"
+"PO-Revision-Date: 2017-05-21 16:32+0000\n"
+"Last-Translator: Steve Allewell <steve.allewell@gmail.com>\n"
+"Language-Team: English <kde-i18n-doc@kde.org>\n"
+"Language: en_GB\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Lokalize 2.0\n"
+
+#: kleo/checksumdefinition.cpp:107
+#, kde-format
+msgid "Error in checksum definition %1: %2"
+msgstr "Error in checksum definition %1: %2"
+
+#: kleo/checksumdefinition.cpp:157
+#, kde-format
+msgid "Cannot use both %f and | in '%1'"
+msgstr "Cannot use both %f and | in '%1'"
+
+#: kleo/checksumdefinition.cpp:167
+#, kde-format
+msgid "Quoting error in '%1' entry"
+msgstr "Quoting error in '%1' entry"
+
+#: kleo/checksumdefinition.cpp:170
+#, kde-format
+msgid "'%1' too complex (would need shell)"
+msgstr "'%1' too complex (would need shell)"
+
+#: kleo/checksumdefinition.cpp:174
+#, kde-format
+msgid "'%1' entry is empty/missing"
+msgstr "'%1' entry is empty/missing"
+
+#: kleo/checksumdefinition.cpp:183
+#, kde-format
+msgid "'%1' empty or not found"
+msgstr "'%1' empty or not found"
+
+#: kleo/checksumdefinition.cpp:222
+#, kde-format
+msgid "'id' entry is empty/missing"
+msgstr "'id' entry is empty/missing"
+
+#: kleo/checksumdefinition.cpp:225
+#, kde-format
+msgid "'output-file' entry is empty/missing"
+msgstr "'output-file' entry is empty/missing"
+
+#: kleo/checksumdefinition.cpp:228
+#, kde-format
+msgid "'file-patterns' entry is empty/missing"
+msgstr "'file-patterns' entry is empty/missing"
+
+#: kleo/checksumdefinition.cpp:395
+#, kde-format
+msgid "Caught unknown exception in group %1"
+msgstr "Caught unknown exception in group %1"
+
+#: kleo/dn.cpp:507
+#, kde-format
+msgid "Common name"
+msgstr "Common name"
+
+#: kleo/dn.cpp:508
+#, kde-format
+msgid "Surname"
+msgstr "Surname"
+
+#: kleo/dn.cpp:509
+#, kde-format
+msgid "Given name"
+msgstr "Given name"
+
+#: kleo/dn.cpp:510
+#, kde-format
+msgid "Location"
+msgstr "Location"
+
+#: kleo/dn.cpp:511
+#, kde-format
+msgid "Title"
+msgstr "Title"
+
+#: kleo/dn.cpp:512
+#, kde-format
+msgid "Organizational unit"
+msgstr "Organisational unit"
+
+#: kleo/dn.cpp:513
+#, kde-format
+msgid "Organization"
+msgstr "Organisation"
+
+#: kleo/dn.cpp:514
+#, kde-format
+msgid "Postal code"
+msgstr "Postal code"
+
+#: kleo/dn.cpp:515
+#, kde-format
+msgid "Country code"
+msgstr "Country code"
+
+#: kleo/dn.cpp:516
+#, kde-format
+msgid "State or province"
+msgstr "State or province"
+
+#: kleo/dn.cpp:517
+#, kde-format
+msgid "Domain component"
+msgstr "Domain component"
+
+#: kleo/dn.cpp:518
+#, kde-format
+msgid "Business category"
+msgstr "Business category"
+
+#: kleo/dn.cpp:519
+#, kde-format
+msgid "Email address"
+msgstr "Email address"
+
+#: kleo/dn.cpp:520
+#, kde-format
+msgid "Mail address"
+msgstr "Mail address"
+
+#: kleo/dn.cpp:521
+#, kde-format
+msgid "Mobile phone number"
+msgstr "Mobile phone number"
+
+#: kleo/dn.cpp:522
+#, kde-format
+msgid "Telephone number"
+msgstr "Telephone number"
+
+#: kleo/dn.cpp:523
+#, kde-format
+msgid "Fax number"
+msgstr "Fax number"
+
+#: kleo/dn.cpp:524
+#, kde-format
+msgid "Street address"
+msgstr "Street address"
+
+#: kleo/dn.cpp:525
+#, kde-format
+msgid "Unique ID"
+msgstr "Unique ID"
+
+#: kleo/enum.cpp:57
+#, kde-format
+msgid "Inline OpenPGP (deprecated)"
+msgstr "Inline OpenPGP (deprecated)"
+
+#: kleo/enum.cpp:62
+#, kde-format
+msgid "OpenPGP/MIME"
+msgstr "OpenPGP/MIME"
+
+#: kleo/enum.cpp:67 ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "S/MIME"
+msgstr "S/MIME"
+
+#: kleo/enum.cpp:72
+#, kde-format
+msgid "S/MIME Opaque"
+msgstr "S/MIME Opaque"
+
+#: kleo/enum.cpp:104
+#, kde-format
+msgid "Any"
+msgstr "Any"
+
+#: kleo/enum.cpp:177
+#, kde-format
+msgid "Never Encrypt"
+msgstr "Never Encrypt"
+
+#: kleo/enum.cpp:179
+#, kde-format
+msgid "Always Encrypt"
+msgstr "Always Encrypt"
+
+#: kleo/enum.cpp:181
+#, kde-format
+msgid "Always Encrypt If Possible"
+msgstr "Always Encrypt If Possible"
+
+#: kleo/enum.cpp:183 kleo/enum.cpp:240
+#, kde-format
+msgid "Ask"
+msgstr "Ask"
+
+#: kleo/enum.cpp:185 kleo/enum.cpp:242
+#, kde-format
+msgid "Ask Whenever Possible"
+msgstr "Ask Whenever Possible"
+
+#: kleo/enum.cpp:187
+#, kde-kuit-format
+msgctxt "no specific preference"
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>none</placeholder>"
+
+#: kleo/enum.cpp:234
+#, kde-format
+msgid "Never Sign"
+msgstr "Never Sign"
+
+#: kleo/enum.cpp:236
+#, kde-format
+msgid "Always Sign"
+msgstr "Always Sign"
+
+#: kleo/enum.cpp:238
+#, kde-format
+msgid "Always Sign If Possible"
+msgstr "Always Sign If Possible"
+
+#: kleo/enum.cpp:244
+#, kde-format
+msgctxt "no specific preference"
+msgid "<none>"
+msgstr "<none>"
+
+#: kleo/keyfiltermanager.cpp:85
+#, kde-format
+msgid "All Certificates"
+msgstr "All Certificates"
+
+#: kleo/keyfiltermanager.cpp:100
+#, kde-format
+msgid "My Certificates"
+msgstr "My Certificates"
+
+#: kleo/keyfiltermanager.cpp:118
+#, kde-format
+msgid "Trusted Certificates"
+msgstr "Trusted Certificates"
+
+#: kleo/keyfiltermanager.cpp:135
+#, kde-format
+msgid "Fully Trusted Certificates"
+msgstr "Fully Trusted Certificates"
+
+#: kleo/keyfiltermanager.cpp:152
+#, kde-format
+msgid "Other Certificates"
+msgstr "Other Certificates"
+
+#: kleo/keyfiltermanager.cpp:166
+#, fuzzy, kde-format
+#| msgid "All Certificates"
+msgid "VS-compliant Certificates"
+msgstr "All Certificates"
+
+#: kleo/keyfiltermanager.cpp:184
+#, fuzzy, kde-format
+#| msgid "Trusted Certificates"
+msgid "Not validated Certificates"
+msgstr "Trusted Certificates"
+
+#: ui/auditlogviewer.cpp:49
+#, kde-format
+msgid "View GnuPG Audit Log"
+msgstr "View GnuPG Audit Log"
+
+#: ui/auditlogviewer.cpp:53
+#, kde-format
+msgid "&Copy to Clipboard"
+msgstr "&Copy to Clipboard"
+
+#: ui/auditlogviewer.cpp:59
+#, kde-format
+msgid "&Save to Disk..."
+msgstr "&Save to Disk..."
+
+#: ui/auditlogviewer.cpp:95
+#, kde-format
+msgid "Choose File to Save GnuPG Audit Log to"
+msgstr "Choose File to Save GnuPG Audit Log to"
+
+#: ui/auditlogviewer.cpp:118
+#, kde-format
+msgid "Could not save to file \"%1\": %2"
+msgstr "Could not save to file \"%1\": %2"
+
+#: ui/auditlogviewer.cpp:120
+#, kde-format
+msgid "File Save Error"
+msgstr "File Save Error"
+
+#: ui/cryptoconfigdialog.cpp:44
+#, kde-format
+msgid "Configure GnuPG Backend"
+msgstr "Configure GnuPG Backend"
+
+#: ui/cryptoconfigdialog.cpp:55
+#, kde-format
+msgid "&Reset"
+msgstr "&Reset"
+
+#: ui/cryptoconfigmodule.cpp:160
+#, kde-format
+msgid "GpgConf Error"
+msgstr "GpgConf Error"
+
+#: ui/cryptoconfigmodule.cpp:216
+#, kde-format
+msgid ""
+"The gpgconf tool used to provide the information for this dialog does not "
+"seem to be installed properly. It did not return any components. Try running "
+"\"%1\" on the command line for more information."
+msgstr ""
+"The gpgconf tool used to provide the information for this dialogue does not "
+"seem to be installed properly. It did not return any components. Try running "
+"\"%1\" on the command line for more information."
+
+#: ui/cryptoconfigmodule.cpp:496
+#, kde-format
+msgctxt ""
+"Translate this to 'yes' or 'no' (use the English words!) depending on "
+"whether your language uses Sentence style capitalisation in GUI labels (yes) "
+"or not (no). Context: We get some backend strings in that have the wrong "
+"capitalizaion (in English, at least) so we need to force the first character "
+"to upper-case. It is this behaviour you can control for your language with "
+"this translation."
+msgid "yes"
+msgstr "yes"
+
+#: ui/cryptoconfigmodule.cpp:546
+#, kde-format
+msgid "0 - None"
+msgstr "0 - None"
+
+#: ui/cryptoconfigmodule.cpp:547
+#, kde-format
+msgid "1 - Basic"
+msgstr "1 - Basic"
+
+#: ui/cryptoconfigmodule.cpp:548
+#, kde-format
+msgid "2 - Verbose"
+msgstr "2 - Verbose"
+
+#: ui/cryptoconfigmodule.cpp:549
+#, kde-format
+msgid "3 - More Verbose"
+msgstr "3 - More Verbose"
+
+#: ui/cryptoconfigmodule.cpp:550
+#, kde-format
+msgid "4 - All"
+msgstr "4 - All"
+
+#: ui/cryptoconfigmodule.cpp:559
+#, kde-format
+msgid "Set the debugging level to"
+msgstr "Set the debugging level to"
+
+#: ui/cryptoconfigmodule.cpp:787
+#, kde-format
+msgid "Show..."
+msgstr "Show..."
+
+#: ui/cryptoconfigmodule.cpp:787 ui/cryptoconfigmodule.cpp:876
+#, kde-format
+msgid "Edit..."
+msgstr "Edit..."
+
+#: ui/cryptoconfigmodule.cpp:841
+#, kde-format
+msgid "Configure LDAP Servers"
+msgstr "Configure LDAP Servers"
+
+#: ui/cryptoconfigmodule.cpp:862
+#, kde-format
+msgid "None configured"
+msgstr "None configured"
+
+#: ui/cryptoconfigmodule.cpp:864
+#, kde-format
+msgid "1 server configured"
+msgid_plural "%1 servers configured"
+msgstr[0] "1 server configured"
+msgstr[1] "%1 servers configured"
+
+#: ui/cryptoconfigmodule.cpp:879
+#, kde-format
+msgid "Use keyserver at"
+msgstr "Use keyserver at"
+
+#: ui/cryptoconfigmodule.cpp:968
+#, kde-format
+msgid "Configure Keyservers"
+msgstr "Configure Keyservers"
+
+#: ui/directoryserviceswidget.cpp:67
+#, kde-format
+msgctxt "default server name, keep it a valid domain name, ie. no spaces"
+msgid "server"
+msgstr "server"
+
+#: ui/directoryserviceswidget.cpp:95
+#, kde-format
+msgid "hkp"
+msgstr "hkp"
+
+#: ui/directoryserviceswidget.cpp:96
+#, kde-format
+msgid "http"
+msgstr "http"
+
+#: ui/directoryserviceswidget.cpp:97
+#, kde-format
+msgid "https"
+msgstr "https"
+
+#: ui/directoryserviceswidget.cpp:98
+#, kde-format
+msgid "ftp"
+msgstr "ftp"
+
+#: ui/directoryserviceswidget.cpp:99
+#, kde-format
+msgid "ftps"
+msgstr "ftps"
+
+#: ui/directoryserviceswidget.cpp:100
+#, kde-format
+msgid "ldap"
+msgstr "ldap"
+
+#: ui/directoryserviceswidget.cpp:101
+#, kde-format
+msgid "ldaps"
+msgstr "ldaps"
+
+#: ui/directoryserviceswidget.cpp:588
+#, kde-format
+msgid "Server Name"
+msgstr "Server Name"
+
+#: ui/directoryserviceswidget.cpp:589
+#, kde-format
+msgid "Server Port"
+msgstr "Server Port"
+
+#: ui/directoryserviceswidget.cpp:590
+#, kde-format
+msgid "Base DN"
+msgstr "Base DN"
+
+#: ui/directoryserviceswidget.cpp:591
+#, kde-format
+msgid "User Name"
+msgstr "User Name"
+
+#: ui/directoryserviceswidget.cpp:592
+#, kde-format
+msgid "Password"
+msgstr "Password"
+
+#: ui/directoryserviceswidget.cpp:614
+#, kde-format
+msgid "(read-only)"
+msgstr "(read-only)"
+
+#: ui/directoryserviceswidget.cpp:616
+#, kde-format
+msgctxt "amended tooltip; %1: original tooltip"
+msgid "%1 (read-only)"
+msgstr "%1 (read-only)"
+
+#: ui/directoryserviceswidget.cpp:739
+#, kde-format
+msgid ""
+"Enter the name or IP address of the server hosting the directory service."
+msgstr ""
+"Enter the name or IP address of the server hosting the directory service."
+
+#: ui/directoryserviceswidget.cpp:741
+#, kde-format
+msgid ""
+"<b>(Optional, the default is fine in most cases)</b> Pick the port number "
+"the directory service is listening on."
+msgstr ""
+"<b>(Optional, the default is fine in most cases)</b> Pick the port number "
+"the directory service is listening on."
+
+#: ui/directoryserviceswidget.cpp:744
+#, kde-format
+msgid ""
+"<b>(Only for LDAP)</b> Enter the base DN for this LDAP server to limit "
+"searches to only that subtree of the directory."
+msgstr ""
+"<b>(Only for LDAP)</b> Enter the base DN for this LDAP server to limit "
+"searches to only that subtree of the directory."
+
+#: ui/directoryserviceswidget.cpp:747
+#, kde-format
+msgid "<b>(Optional)</b> Enter your user name here, if needed."
+msgstr "<b>(Optional)</b> Enter your user name here, if needed."
+
+#: ui/directoryserviceswidget.cpp:749
+#, kde-format
+msgid ""
+"<b>(Optional, not recommended)</b> Enter your password here, if needed. Note "
+"that the password will be saved in the clear in a config file in your home "
+"directory."
+msgstr ""
+"<b>(Optional, not recommended)</b> Enter your password here, if needed. Note "
+"that the password will be saved in the clear in a config file in your home "
+"directory."
+
+#. i18n: ectx: property (windowTitle), widget (QWidget, DirectoryServicesWidget)
+#: ui/directoryserviceswidget.ui:14
+#, kde-format
+msgid "Directory Services Configuration"
+msgstr "Directory Services Configuration"
+
+#. i18n: ectx: property (text), widget (QLabel, pgpKSLabel)
+#: ui/directoryserviceswidget.ui:22
+#, kde-format
+msgid "OpenPGP Keyserver:"
+msgstr "OpenPGP Keyserver:"
+
+#. i18n: ectx: property (title), widget (QGroupBox, x500LA)
+#: ui/directoryserviceswidget.ui:35
+#, kde-format
+msgid "X509 Directory services:"
+msgstr "X509 Directory services:"
+
+#. i18n: ectx: property (whatsThis), widget (QTreeView, treeView)
+#: ui/directoryserviceswidget.ui:43
+#, kde-format
+msgid ""
+"This is a list of all directory services that are configured for use with "
+"X.509."
+msgstr ""
+"This is a list of all directory services that are configured for use with "
+"X.509."
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:70
+#, kde-format
+msgid "Click to add a service"
+msgstr "Click to add a service"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:73
+#, kde-format
+msgid ""
+"Click this button to create a new directory service entry as a clone of the "
+"currently selected one (or with default values, if no other is selected). "
+"You can then configure details in the table on the left hand."
+msgstr ""
+"Click this button to create a new directory service entry as a clone of the "
+"currently selected one (or with default values, if no other is selected). "
+"You can then configure details in the table on the left hand."
+
+#. i18n: ectx: property (text), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:76
+#, kde-format
+msgid "New"
+msgstr "New"
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:92
+#, kde-format
+msgid "Click to remove the currently selected service"
+msgstr "Click to remove the currently selected service"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:95
+#, kde-format
+msgid ""
+"Click this button to remove the currently selected directory service. The "
+"change will only take effect once you acknowledge the main configuration "
+"dialog."
+msgstr ""
+"Click this button to remove the currently selected directory service. The "
+"change will only take effect once you acknowledge the main configuration "
+"dialogue."
+
+#. i18n: ectx: property (text), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:98
+#, kde-format
+msgid "Delete"
+msgstr "Delete"
+
+#. i18n: ectx: property (whatsThis), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:128
+#, kde-format
+msgid ""
+"Use this option to switch display of username and password information on or "
+"off in the above table."
+msgstr ""
+"Use this option to switch display of username and password information on or "
+"off in the above table."
+
+#. i18n: ectx: property (text), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:131
+#, kde-format
+msgid "Show user and password information"
+msgstr "Show user and password information"
+
+#: ui/dnattributeorderconfigwidget.cpp:73
+#, kde-format
+msgid "Description"
+msgstr "Description"
+
+#: ui/dnattributeorderconfigwidget.cpp:91
+#, kde-format
+msgid "Available attributes:"
+msgstr "Available attributes:"
+
+#: ui/dnattributeorderconfigwidget.cpp:92
+#, kde-format
+msgid "Current attribute order:"
+msgstr "Current attribute order:"
+
+#: ui/dnattributeorderconfigwidget.cpp:112
+#, kde-format
+msgid "All others"
+msgstr "All others"
+
+#: ui/dnattributeorderconfigwidget.cpp:129
+#, kde-format
+msgid "Move to top"
+msgstr "Move to top"
+
+#: ui/dnattributeorderconfigwidget.cpp:130
+#, kde-format
+msgid "Move one up"
+msgstr "Move one up"
+
+#: ui/dnattributeorderconfigwidget.cpp:131
+#, kde-format
+msgid "Remove from current attribute order"
+msgstr "Remove from current attribute order"
+
+#: ui/dnattributeorderconfigwidget.cpp:132
+#, kde-format
+msgid "Add to current attribute order"
+msgstr "Add to current attribute order"
+
+#: ui/dnattributeorderconfigwidget.cpp:133
+#, kde-format
+msgid "Move one down"
+msgstr "Move one down"
+
+#: ui/dnattributeorderconfigwidget.cpp:134
+#, kde-format
+msgid "Move to bottom"
+msgstr "Move to bottom"
+
+#: ui/keyapprovaldialog.cpp:87
+#, kde-kuit-format
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>none</placeholder>"
+
+#: ui/keyapprovaldialog.cpp:88
+#, kde-format
+msgid "Never Encrypt with This Key"
+msgstr "Never Encrypt with This Key"
+
+#: ui/keyapprovaldialog.cpp:89
+#, kde-format
+msgid "Always Encrypt with This Key"
+msgstr "Always Encrypt with This Key"
+
+#: ui/keyapprovaldialog.cpp:90
+#, kde-format
+msgid "Encrypt Whenever Encryption is Possible"
+msgstr "Encrypt Whenever Encryption is Possible"
+
+#: ui/keyapprovaldialog.cpp:91
+#, kde-format
+msgid "Always Ask"
+msgstr "Always Ask"
+
+#: ui/keyapprovaldialog.cpp:92
+#, kde-format
+msgid "Ask Whenever Encryption is Possible"
+msgstr "Ask Whenever Encryption is Possible"
+
+#: ui/keyapprovaldialog.cpp:113
+#, kde-format
+msgid "Encryption Key Approval"
+msgstr "Encryption Key Approval"
+
+#: ui/keyapprovaldialog.cpp:129
+#, kde-format
+msgid "The following keys will be used for encryption:"
+msgstr "The following keys will be used for encryption:"
+
+#: ui/keyapprovaldialog.cpp:145
+#, kde-format
+msgid "Your keys:"
+msgstr "Your keys:"
+
+#: ui/keyapprovaldialog.cpp:157
+#, kde-format
+msgid "Recipient:"
+msgstr "Recipient:"
+
+#: ui/keyapprovaldialog.cpp:162
+#, kde-format
+msgid "Encryption keys:"
+msgstr "Encryption keys:"
+
+#: ui/keyapprovaldialog.cpp:169
+#, kde-format
+msgid "Encryption preference:"
+msgstr "Encryption preference:"
+
+#: ui/keyrequester.cpp:118
+#, kde-format
+msgid "Clear"
+msgstr "Clear"
+
+#: ui/keyrequester.cpp:121
+#, kde-format
+msgid "Change..."
+msgstr "Change..."
+
+#: ui/keyrequester.cpp:232 ui/keyselectiondialog.cpp:256
+#, kde-kuit-format
+msgid "<placeholder>unknown</placeholder>"
+msgstr "<placeholder>unknown</placeholder>"
+
+#: ui/keyrequester.cpp:246 ui/keyselectiondialog.cpp:657
+#, kde-format
+msgid ""
+"<qt><p>An error occurred while fetching the keys from the backend:</p><p><b>"
+"%1</b></p></qt>"
+msgstr ""
+"<qt><p>An error occurred while fetching the keys from the backend:</p><p><b>"
+"%1</b></p></qt>"
+
+#: ui/keyrequester.cpp:251 ui/keyrequester.cpp:283 ui/keyrequester.cpp:306
+#: ui/keyselectiondialog.cpp:630 ui/keyselectiondialog.cpp:662
+#, kde-format
+msgid "Key Listing Failed"
+msgstr "Key Listing Failed"
+
+#: ui/keyrequester.cpp:281
+#, kde-format
+msgid ""
+"The OpenPGP backend does not support listing keys. Check your installation."
+msgstr ""
+"The OpenPGP backend does not support listing keys. Check your installation."
+
+#: ui/keyrequester.cpp:304
+#, kde-format
+msgid ""
+"The S/MIME backend does not support listing keys. Check your installation."
+msgstr ""
+"The S/MIME backend does not support listing keys. Check your installation."
+
+#: ui/keyrequester.cpp:426
+#, kde-format
+msgid "OpenPGP Key Selection"
+msgstr "OpenPGP Key Selection"
+
+#: ui/keyrequester.cpp:427
+#, kde-format
+msgid "Please select an OpenPGP key to use."
+msgstr "Please select an OpenPGP key to use."
+
+#: ui/keyrequester.cpp:429
+#, kde-format
+msgid "S/MIME Key Selection"
+msgstr "S/MIME Key Selection"
+
+#: ui/keyrequester.cpp:430
+#, kde-format
+msgid "Please select an S/MIME key to use."
+msgstr "Please select an S/MIME key to use."
+
+#: ui/keyrequester.cpp:432
+#, kde-format
+msgid "Key Selection"
+msgstr "Key Selection"
+
+#: ui/keyrequester.cpp:433
+#, kde-format
+msgid "Please select an (OpenPGP or S/MIME) key to use."
+msgstr "Please select an (OpenPGP or S/MIME) key to use."
+
+#: ui/keyselectioncombo.cpp:195
+#, fuzzy, kde-format
+#| msgctxt "Name <email> (type, created: date)"
+#| msgid "%1 (%2, created: %3)"
+msgctxt "Name <email> (validity, type, created: date)"
+msgid "%1 (%2, %3, created: %4)"
+msgstr "%1 (%2, created: %3)"
+
+#: ui/keyselectioncombo.cpp:196
+#, kde-format
+msgctxt "Name <email>"
+msgid "%1 <%2>"
+msgstr "%1 <%2>"
+
+#: ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "OpenPGP"
+msgstr "OpenPGP"
+
+#: ui/keyselectioncombo.cpp:347
+#, kde-format
+msgid "Loading keys ..."
+msgstr "Loading keys ..."
+
+#: ui/keyselectiondialog.cpp:98
+#, kde-format
+msgid "The key is not valid."
+msgstr "The key is not valid."
+
+#: ui/keyselectiondialog.cpp:106
+#, kde-format
+msgid "The key is expired."
+msgstr "The key is expired."
+
+#: ui/keyselectiondialog.cpp:110
+#, kde-format
+msgid "The key is revoked."
+msgstr "The key is revoked."
+
+#: ui/keyselectiondialog.cpp:114
+#, kde-format
+msgid "The key is disabled."
+msgstr "The key is disabled."
+
+#: ui/keyselectiondialog.cpp:122
+#, kde-format
+msgid "The key is not designated for encryption."
+msgstr "The key is not designated for encryption."
+
+#: ui/keyselectiondialog.cpp:128
+#, kde-format
+msgid "The key is not designated for signing."
+msgstr "The key is not designated for signing."
+
+#: ui/keyselectiondialog.cpp:134
+#, kde-format
+msgid "The key is not designated for certifying."
+msgstr "The key is not designated for certifying."
+
+#: ui/keyselectiondialog.cpp:140
+#, kde-format
+msgid "The key is not designated for authentication."
+msgstr "The key is not designated for authentication."
+
+#: ui/keyselectiondialog.cpp:148
+#, kde-format
+msgid "The key is not secret."
+msgstr "The key is not secret."
+
+#: ui/keyselectiondialog.cpp:163
+#, kde-format
+msgid "The key is not trusted enough."
+msgstr "The key is not trusted enough."
+
+#: ui/keyselectiondialog.cpp:169
+#, kde-format
+msgid "The key can be used."
+msgstr "The key can be used."
+
+#: ui/keyselectiondialog.cpp:230
+#, kde-format
+msgid "Key ID"
+msgstr "Key ID"
+
+#: ui/keyselectiondialog.cpp:231
+#, kde-format
+msgid "User ID"
+msgstr "User ID"
+
+#: ui/keyselectiondialog.cpp:279
+#, kde-format
+msgid "never"
+msgstr "never"
+
+#: ui/keyselectiondialog.cpp:289 ui/keyselectiondialog.cpp:291
+#: ui/keyselectiondialog.cpp:300 ui/keyselectiondialog.cpp:302
+#, kde-format
+msgid "unknown"
+msgstr "unknown"
+
+#: ui/keyselectiondialog.cpp:289
+#, kde-format
+msgid "OpenPGP key for <b>%1</b>"
+msgstr "OpenPGP key for <b>%1</b>"
+
+#: ui/keyselectiondialog.cpp:291
+#, kde-format
+msgid "S/MIME key for <b>%1</b>"
+msgstr "S/MIME key for <b>%1</b>"
+
+#: ui/keyselectiondialog.cpp:298
+#, kde-format
+msgctxt "Key creation date"
+msgid "Created"
+msgstr "Created"
+
+#: ui/keyselectiondialog.cpp:299
+#, kde-format
+msgctxt "Key Expiration date"
+msgid "Expiry"
+msgstr "Expiry"
+
+#: ui/keyselectiondialog.cpp:300
+#, kde-format
+msgctxt "Key fingerprint"
+msgid "Fingerprint"
+msgstr "Fingerprint"
+
+#: ui/keyselectiondialog.cpp:302
+#, kde-format
+msgctxt "Key issuer"
+msgid "Issuer"
+msgstr "Issuer"
+
+#: ui/keyselectiondialog.cpp:304
+#, kde-format
+msgctxt "Key status"
+msgid "Status"
+msgstr "Status"
+
+#: ui/keyselectiondialog.cpp:456
+#, kde-format
+msgid "Search for &External Certificates"
+msgstr "Search for &External Certificates"
+
+#: ui/keyselectiondialog.cpp:470
+#, kde-format
+msgid "&Search for:"
+msgstr "&Search for:"
+
+#: ui/keyselectiondialog.cpp:494
+#, kde-format
+msgid "&Remember choice"
+msgstr "&Remember choice"
+
+#: ui/keyselectiondialog.cpp:497
+#, kde-format
+msgid ""
+"<qt><p>If you check this box your choice will be stored and you will not be "
+"asked again.</p></qt>"
+msgstr ""
+"<qt><p>If you tick this box your choice will be stored and you will not be "
+"asked again.</p></qt>"
+
+#: ui/keyselectiondialog.cpp:509
+#, kde-format
+msgid "&Reread Keys"
+msgstr "&Reread Keys"
+
+#: ui/keyselectiondialog.cpp:510
+#, kde-format
+msgid "&Start Certificate Manager"
+msgstr "&Start Certificate Manager"
+
+#: ui/keyselectiondialog.cpp:628
+#, kde-format
+msgid "No backends found for listing keys. Check your installation."
+msgstr "No backends found for listing keys. Check your installation."
+
+#: ui/keyselectiondialog.cpp:644
+#, kde-format
+msgid "Could not start certificate manager; please check your installation."
+msgstr "Could not start certificate manager; please check your installation."
+
+#: ui/keyselectiondialog.cpp:646
+#, kde-format
+msgid "Certificate Manager Error"
+msgstr "Certificate Manager Error"
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Checking selected keys..."
+msgstr "Checking selected keys..."
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Fetching keys..."
+msgstr "Fetching keys..."
+
+#: ui/keyselectiondialog.cpp:731
+#, kde-format
+msgid ""
+"<qt>One backend returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgid_plural ""
+"<qt>%1 backends returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgstr[0] ""
+"<qt>One backend returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgstr[1] ""
+"<qt>%1 backends returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+
+#: ui/keyselectiondialog.cpp:736
+#, kde-format
+msgid "Key List Result"
+msgstr "Key List Result"
+
+#: ui/keyselectiondialog.cpp:856
+#, kde-format
+msgid "Recheck Key"
+msgstr "Recheck Key"
+
+#: ui/messagebox.cpp:71
+#, kde-format
+msgid "Your system does not have support for GnuPG Audit Logs"
+msgstr "Your system does not have support for GnuPG Audit Logs"
+
+#: ui/messagebox.cpp:72
+#, kde-format
+msgid "System Error"
+msgstr "System Error"
+
+#: ui/messagebox.cpp:79
+#, kde-format
+msgid ""
+"An error occurred while trying to retrieve the GnuPG Audit Log:\n"
+"%1"
+msgstr ""
+"An error occurred while trying to retrieve the GnuPG Audit Log:\n"
+"%1"
+
+#: ui/messagebox.cpp:81
+#, kde-format
+msgid "GnuPG Audit Log Error"
+msgstr "GnuPG Audit Log Error"
+
+#: ui/messagebox.cpp:88
+#, kde-format
+msgid "No GnuPG Audit Log available for this operation."
+msgstr "No GnuPG Audit Log available for this operation."
+
+#: ui/messagebox.cpp:89
+#, kde-format
+msgid "No GnuPG Audit Log"
+msgstr "No GnuPG Audit Log"
+
+#: ui/messagebox.cpp:109 ui/messagebox.cpp:115
+#, kde-format
+msgid "GnuPG Audit Log Viewer"
+msgstr "GnuPG Audit Log Viewer"
+
+#: ui/messagebox.cpp:121
+#, kde-format
+msgid "Signing failed: %1"
+msgstr "Signing failed: %1"
+
+#: ui/messagebox.cpp:122
+#, kde-format
+msgid "Signing successful"
+msgstr "Signing successful"
+
+#: ui/messagebox.cpp:133
+#, kde-format
+msgid "Encryption failed: %1"
+msgstr "Encryption failed: %1"
+
+#: ui/messagebox.cpp:134
+#, kde-format
+msgid "Encryption successful"
+msgstr "Encryption successful"
+
+#: ui/messagebox.cpp:155
+#, kde-format
+msgid "Signing Result"
+msgstr "Signing Result"
+
+#: ui/messagebox.cpp:167
+#, kde-format
+msgid "Signing Error"
+msgstr "Signing Error"
+
+#: ui/messagebox.cpp:179 ui/messagebox.cpp:203
+#, kde-format
+msgid "Encryption Result"
+msgstr "Encryption Result"
+
+#: ui/messagebox.cpp:191 ui/messagebox.cpp:215
+#, kde-format
+msgid "Encryption Error"
+msgstr "Encryption Error"
+
+#: ui/messagebox.cpp:263
+#, kde-format
+msgid "&Show Audit Log"
+msgstr "&Show Audit Log"
+
+#: ui/progressdialog.cpp:91
+#, kde-format
+msgid "%1: %2"
+msgstr "%1: %2"
+
+#~ msgctxt "New X.509 Directory Server"
+#~ msgid "X.509"
+#~ msgstr "X.509"
+
+#~ msgctxt "New OpenPGP Directory Server"
+#~ msgid "OpenPGP"
+#~ msgstr "OpenPGP"
+
+#~ msgid "Scheme"
+#~ msgstr "Scheme"
+
+#~ msgid "X.509"
+#~ msgstr "X.509"
+
+#~ msgid ""
+#~ "Select the access scheme (scheme) that the directory service is available "
+#~ "through."
+#~ msgstr ""
+#~ "Select the access scheme (scheme) that the directory service is available "
+#~ "through."
+
+#~ msgid ""
+#~ "Check this column if this directory service is providing S/MIME (X.509) "
+#~ "certificates."
+#~ msgstr ""
+#~ "Check this column if this directory service is providing S/MIME (X.509) "
+#~ "certificates."
+
+#~ msgid ""
+#~ "Check this column if this directory service is providing OpenPGP "
+#~ "certificates."
+#~ msgstr ""
+#~ "Check this column if this directory service is providing OpenPGP "
+#~ "certificates."
+
+#~ msgid "0 - None (no debugging at all)"
+#~ msgstr "0 - None (no debugging at all)"
+
+#~ msgid "1 - Basic (some basic debug messages)"
+#~ msgstr "1 - Basic (some basic debug messages)"
+
+#~ msgid "2 - Advanced (more verbose debug messages)"
+#~ msgstr "2 - Advanced (more verbose debug messages)"
+
+#~ msgid "3 - Expert (even more detailed messages)"
+#~ msgstr "3 - Expert (even more detailed messages)"
+
+#~ msgid "4 - Guru (all of the debug messages you can get)"
+#~ msgstr "4 - Guru (all of the debug messages you can get)"
+
+#~ msgid "General"
+#~ msgstr "General"
+
+#~ msgid "Chiasmus"
+#~ msgstr "Chiasmus"
+
+#~ msgid "Chiasmus command line tool"
+#~ msgstr "Chiasmus command line tool"
+
+#~ msgid "Unsupported protocol \"%1\""
+#~ msgstr "Unsupported protocol \"%1\""
+
+#~ msgid "File \"%1\" does not exist or is not executable."
+#~ msgstr "File \"%1\" does not exist or is not executable."
+
+#~ msgid "Output from chiasmus"
+#~ msgstr "Output from chiasmus"
+
+#~ msgid "Decryption failed: %1"
+#~ msgstr "Decryption failed: %1"
+
+#~ msgid ""
+#~ "The following was received on stderr:\n"
+#~ "%1"
+#~ msgstr ""
+#~ "The following was received on stderr:\n"
+#~ "%1"
+
+#~ msgid "Failed to load %1: %2"
+#~ msgstr "Failed to load %1: %2"
+
+#~ msgid "Library does not contain the symbol \"Chiasmus\"."
+#~ msgstr "Library does not contain the symbol \"Chiasmus\"."
+
+#~ msgid "Scanning directory %1..."
+#~ msgstr "Scanning directory %1..."
+
+#~ msgid "GpgME"
+#~ msgstr "GpgME"
+
+#~ msgid "GPGME was compiled without support for %1."
+#~ msgstr "GPGME was compiled without support for %1."
+
+#~ msgid "Engine %1 is not installed properly."
+#~ msgstr "Engine %1 is not installed properly."
+
+#~ msgid "Engine %1 version %2 installed, but at least version %3 is required."
+#~ msgstr ""
+#~ "Engine %1 version %2 installed, but at least version %3 is required."
+
+#~ msgid "Unknown problem with engine for protocol %1."
+#~ msgstr "Unknown problem with engine for protocol %1."
+
+#~ msgid "program terminated unexpectedly"
+#~ msgstr "program terminated unexpectedly"
+
+#~ msgid "program not found or cannot be started"
+#~ msgstr "program not found or cannot be started"
+
+#~ msgid "<qt>Failed to execute gpgconf:<p>%1</p></qt>"
+#~ msgstr "<qt>Failed to execute gpgconf:<p>%1</p></qt>"
+
+#~ msgid ""
+#~ "Could not start gpgconf.\n"
+#~ "Check that gpgconf is in the PATH and that it can be started."
+#~ msgstr ""
+#~ "Could not start gpgconf.\n"
+#~ "Check that gpgconf is in the PATH and that it can be started."
+
+#~ msgid "Error from gpgconf while saving configuration: %1"
+#~ msgstr "Error from gpgconf while saving configuration: %1"
+
+#~ msgid "Generating DSA key..."
+#~ msgstr "Generating DSA key..."
+
+#~ msgid "Generating ElGamal key..."
+#~ msgstr "Generating ElGamal key..."
+
+#~ msgid "Searching for a large prime number..."
+#~ msgstr "Searching for a large prime number..."
+
+#~ msgid ""
+#~ "Waiting for new entropy from random number generator (you might want to "
+#~ "exercise the harddisks or move the mouse)..."
+#~ msgstr ""
+#~ "Waiting for new entropy from random number generator (you might want to "
+#~ "exercise the harddisks or move the mouse)..."
+
+#~ msgid "Please wait..."
+#~ msgstr "Please wait..."
+
+#~ msgid ""
+#~ "Starting gpg-agent (you should consider starting a global instance "
+#~ "instead)..."
+#~ msgstr ""
+#~ "Starting gpg-agent (you should consider starting a global instance "
+#~ "instead)..."
+
+#~ msgid "While scanning for %1 support in backend %2:"
+#~ msgstr "While scanning for %1 support in backend %2:"
+
+#~ msgctxt "progress info: \"%1 of %2\""
+#~ msgid "%1/%2"
+#~ msgstr "%1/%2"
+
+#~ msgid ""
+#~ "OpenPGP key for %1\n"
+#~ "Created: %2\n"
+#~ "Expiry: %3\n"
+#~ "Fingerprint: %4"
+#~ msgstr ""
+#~ "OpenPGP key for %1\n"
+#~ "Created: %2\n"
+#~ "Expiry: %3\n"
+#~ "Fingerprint: %4"
+
+#~ msgid ""
+#~ "S/MIME key for %1\n"
+#~ "Created: %2\n"
+#~ "Expiry: %3\n"
+#~ "Fingerprint: %4\n"
+#~ "Issuer: %5"
+#~ msgstr ""
+#~ "S/MIME key for %1\n"
+#~ "Created: %2\n"
+#~ "Expiry: %3\n"
+#~ "Fingerprint: %4\n"
+#~ "Issuer: %5"
+
+#~ msgid "Copy Audit Log to Clipboard"
+#~ msgstr "Copy Audit Log to Clipboard"
+
+#~ msgid "Add or Change Directory Service"
+#~ msgstr "Add or Change Directory Service"
+
+#~ msgid "&Server name:"
+#~ msgstr "&Server name:"
+
+#~ msgid "389"
+#~ msgstr "389"
+
+#~ msgid "&User name (optional):"
+#~ msgstr "&User name (optional):"
+
+#~ msgid "Pass&word (optional):"
+#~ msgstr "Pass&word (optional):"
+
+#~ msgid "&OK"
+#~ msgstr "&OK"
+
+#~ msgid "&Cancel"
+#~ msgstr "&Cancel"
+
+#~ msgid "&Base DN:"
+#~ msgstr "&Base DN:"
+
+#~ msgid "&Port:"
+#~ msgstr "&Port:"
+
+#, fuzzy
+#~| msgid "'create-command' not found in filesystem"
+#~ msgid "'%1' not found in filesystem"
+#~ msgstr "'create-command' not found in filesystem"
+
+#~ msgctxt "NAME OF TRANSLATORS"
+#~ msgid "Your names"
+#~ msgstr "Andrew Coles"
+
+#~ msgctxt "EMAIL OF TRANSLATORS"
+#~ msgid "Your emails"
+#~ msgstr "andrew_coles@yahoo.co.uk"
+
+#~ msgid "'create-command' entry is empty/missing"
+#~ msgstr "'create-command' entry is empty/missing"
+
+#~ msgid "Quoting error in 'verify-command' entry"
+#~ msgstr "Quoting error in 'verify-command' entry"
+
+#~ msgid "'verify-command' too complex (would need shell)"
+#~ msgstr "'verify-command' too complex (would need shell)"
+
+#~ msgid "'verify-command' entry is empty/missing"
+#~ msgstr "'verify-command' entry is empty/missing"
+
+#~ msgid "'verify-command' not found in filesystem"
+#~ msgstr "'verify-command' not found in filesystem"
+
+#~ msgid "'verify-command' empty or not found"
+#~ msgstr "'verify-command' empty or not found"
+
+#~ msgid "failed"
+#~ msgstr "failed"
+
+#~ msgctxt ""
+#~ "Items in Kleo::BackendConfigWidget listview (1: protocol; 2: "
+#~ "implementation name)"
+#~ msgid "%1 (%2)"
+#~ msgstr "%1 (%2)"
+
+#~ msgid "Available Backends"
+#~ msgstr "Available Backends"
+
+#~ msgid "Confi&gure..."
+#~ msgstr "Confi&gure..."
+
+#~ msgid "Rescan"
+#~ msgstr "Rescan"
+
+#~ msgid "The following problems where encountered during scanning:"
+#~ msgstr "The following problems where encountered during scanning:"
+
+#~ msgctxt "@title:window Results of the scanning"
+#~ msgid "Scan Results"
+#~ msgstr "Scan Results"
+
+#~ msgid "(Unknown Protocol)"
+#~ msgstr "(Unknown Protocol)"
+
+#~ msgid "Error while initializing plugin \"%1\""
+#~ msgstr "Error while initialising plugin \"%1\""
--- /dev/null
+# Translation of libkleopatra into esperanto.
+# Axel Rousseau <axel@esperanto-jeunes.org>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: libkleopatra\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2017-07-12 06:56+0200\n"
+"PO-Revision-Date: 2009-11-15 12:06+0100\n"
+"Last-Translator: Axel Rousseau <axel@esperanto-jeunes.org>\n"
+"Language-Team: esperanto <kde-i18n-eo@kde.org>\n"
+"Language: eo\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: pology\n"
+
+#: kleo/checksumdefinition.cpp:107
+#, kde-format
+msgid "Error in checksum definition %1: %2"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:157
+#, kde-format
+msgid "Cannot use both %f and | in '%1'"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:167
+#, kde-format
+msgid "Quoting error in '%1' entry"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:170
+#, kde-format
+msgid "'%1' too complex (would need shell)"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:174
+#, kde-format
+msgid "'%1' entry is empty/missing"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:183
+#, kde-format
+msgid "'%1' empty or not found"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:222
+#, kde-format
+msgid "'id' entry is empty/missing"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:225
+#, kde-format
+msgid "'output-file' entry is empty/missing"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:228
+#, kde-format
+msgid "'file-patterns' entry is empty/missing"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:395
+#, kde-format
+msgid "Caught unknown exception in group %1"
+msgstr ""
+
+#: kleo/dn.cpp:507
+#, kde-format
+msgid "Common name"
+msgstr "Komuna nomo"
+
+#: kleo/dn.cpp:508
+#, fuzzy, kde-format
+#| msgctxt "City name (optional, probably does not need a translation)"
+#| msgid "Hungnam"
+msgid "Surname"
+msgstr "Hungnam"
+
+#: kleo/dn.cpp:509
+#, kde-format
+msgid "Given name"
+msgstr "Donita nomo:"
+
+#: kleo/dn.cpp:510
+#, kde-format
+msgid "Location"
+msgstr "Loko"
+
+#: kleo/dn.cpp:511
+#, kde-format
+msgid "Title"
+msgstr "Titolo"
+
+#: kleo/dn.cpp:512
+#, kde-format
+msgid "Organizational unit"
+msgstr ""
+
+#: kleo/dn.cpp:513
+#, kde-format
+msgid "Organization"
+msgstr "Organizaĵo"
+
+#: kleo/dn.cpp:514
+#, kde-format
+msgid "Postal code"
+msgstr ""
+
+#: kleo/dn.cpp:515
+#, kde-format
+msgid "Country code"
+msgstr ""
+
+#: kleo/dn.cpp:516
+#, kde-format
+msgid "State or province"
+msgstr ""
+
+#: kleo/dn.cpp:517
+#, kde-format
+msgid "Domain component"
+msgstr ""
+
+#: kleo/dn.cpp:518
+#, kde-format
+msgid "Business category"
+msgstr ""
+
+#: kleo/dn.cpp:519
+#, kde-format
+msgid "Email address"
+msgstr ""
+
+#: kleo/dn.cpp:520
+#, kde-format
+msgid "Mail address"
+msgstr ""
+
+#: kleo/dn.cpp:521
+#, kde-format
+msgid "Mobile phone number"
+msgstr ""
+
+#: kleo/dn.cpp:522
+#, kde-format
+msgid "Telephone number"
+msgstr "Telefonnumero"
+
+#: kleo/dn.cpp:523
+#, kde-format
+msgid "Fax number"
+msgstr ""
+
+#: kleo/dn.cpp:524
+#, kde-format
+msgid "Street address"
+msgstr ""
+
+#: kleo/dn.cpp:525
+#, kde-format
+msgid "Unique ID"
+msgstr ""
+
+#: kleo/enum.cpp:57
+#, kde-format
+msgid "Inline OpenPGP (deprecated)"
+msgstr ""
+
+#: kleo/enum.cpp:62
+#, kde-format
+msgid "OpenPGP/MIME"
+msgstr "OpenPGP/MIME"
+
+#: kleo/enum.cpp:67 ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "S/MIME"
+msgstr "S/MIME"
+
+#: kleo/enum.cpp:72
+#, kde-format
+msgid "S/MIME Opaque"
+msgstr ""
+
+#: kleo/enum.cpp:104
+#, kde-format
+msgid "Any"
+msgstr "Iu"
+
+#: kleo/enum.cpp:177
+#, kde-format
+msgid "Never Encrypt"
+msgstr ""
+
+#: kleo/enum.cpp:179
+#, kde-format
+msgid "Always Encrypt"
+msgstr ""
+
+#: kleo/enum.cpp:181
+#, kde-format
+msgid "Always Encrypt If Possible"
+msgstr ""
+
+#: kleo/enum.cpp:183 kleo/enum.cpp:240
+#, kde-format
+msgid "Ask"
+msgstr "Demandi"
+
+#: kleo/enum.cpp:185 kleo/enum.cpp:242
+#, kde-format
+msgid "Ask Whenever Possible"
+msgstr ""
+
+#: kleo/enum.cpp:187
+#, kde-kuit-format
+msgctxt "no specific preference"
+msgid "<placeholder>none</placeholder>"
+msgstr ""
+
+#: kleo/enum.cpp:234
+#, kde-format
+msgid "Never Sign"
+msgstr ""
+
+#: kleo/enum.cpp:236
+#, kde-format
+msgid "Always Sign"
+msgstr ""
+
+#: kleo/enum.cpp:238
+#, kde-format
+msgid "Always Sign If Possible"
+msgstr ""
+
+#: kleo/enum.cpp:244
+#, kde-format
+msgctxt "no specific preference"
+msgid "<none>"
+msgstr ""
+
+#: kleo/keyfiltermanager.cpp:85
+#, kde-format
+msgid "All Certificates"
+msgstr ""
+
+#: kleo/keyfiltermanager.cpp:100
+#, kde-format
+msgid "My Certificates"
+msgstr ""
+
+#: kleo/keyfiltermanager.cpp:118
+#, kde-format
+msgid "Trusted Certificates"
+msgstr ""
+
+#: kleo/keyfiltermanager.cpp:135
+#, kde-format
+msgid "Fully Trusted Certificates"
+msgstr ""
+
+#: kleo/keyfiltermanager.cpp:152
+#, kde-format
+msgid "Other Certificates"
+msgstr ""
+
+#: kleo/keyfiltermanager.cpp:166
+#, kde-format
+msgid "VS-compliant Certificates"
+msgstr ""
+
+#: kleo/keyfiltermanager.cpp:184
+#, kde-format
+msgid "Not validated Certificates"
+msgstr ""
+
+#: ui/auditlogviewer.cpp:49
+#, kde-format
+msgid "View GnuPG Audit Log"
+msgstr ""
+
+#: ui/auditlogviewer.cpp:53
+#, kde-format
+msgid "&Copy to Clipboard"
+msgstr "&Kopii al la poŝo"
+
+#: ui/auditlogviewer.cpp:59
+#, kde-format
+msgid "&Save to Disk..."
+msgstr ""
+
+#: ui/auditlogviewer.cpp:95
+#, kde-format
+msgid "Choose File to Save GnuPG Audit Log to"
+msgstr ""
+
+#: ui/auditlogviewer.cpp:118
+#, kde-format
+msgid "Could not save to file \"%1\": %2"
+msgstr ""
+
+#: ui/auditlogviewer.cpp:120
+#, kde-format
+msgid "File Save Error"
+msgstr ""
+
+#: ui/cryptoconfigdialog.cpp:44
+#, kde-format
+msgid "Configure GnuPG Backend"
+msgstr ""
+
+#: ui/cryptoconfigdialog.cpp:55
+#, kde-format
+msgid "&Reset"
+msgstr "&Reagordu"
+
+#: ui/cryptoconfigmodule.cpp:160
+#, kde-format
+msgid "GpgConf Error"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:216
+#, kde-format
+msgid ""
+"The gpgconf tool used to provide the information for this dialog does not "
+"seem to be installed properly. It did not return any components. Try running "
+"\"%1\" on the command line for more information."
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:496
+#, kde-format
+msgctxt ""
+"Translate this to 'yes' or 'no' (use the English words!) depending on "
+"whether your language uses Sentence style capitalisation in GUI labels (yes) "
+"or not (no). Context: We get some backend strings in that have the wrong "
+"capitalizaion (in English, at least) so we need to force the first character "
+"to upper-case. It is this behaviour you can control for your language with "
+"this translation."
+msgid "yes"
+msgstr "yes"
+
+#: ui/cryptoconfigmodule.cpp:546
+#, kde-format
+msgid "0 - None"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:547
+#, kde-format
+msgid "1 - Basic"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:548
+#, kde-format
+msgid "2 - Verbose"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:549
+#, kde-format
+msgid "3 - More Verbose"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:550
+#, kde-format
+msgid "4 - All"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:559
+#, kde-format
+msgid "Set the debugging level to"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:787
+#, kde-format
+msgid "Show..."
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:787 ui/cryptoconfigmodule.cpp:876
+#, kde-format
+msgid "Edit..."
+msgstr "Redakti..."
+
+#: ui/cryptoconfigmodule.cpp:841
+#, kde-format
+msgid "Configure LDAP Servers"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:862
+#, kde-format
+msgid "None configured"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:864
+#, kde-format
+msgid "1 server configured"
+msgid_plural "%1 servers configured"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ui/cryptoconfigmodule.cpp:879
+#, kde-format
+msgid "Use keyserver at"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:968
+#, kde-format
+msgid "Configure Keyservers"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:67
+#, kde-format
+msgctxt "default server name, keep it a valid domain name, ie. no spaces"
+msgid "server"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:95
+#, kde-format
+msgid "hkp"
+msgstr "hkp"
+
+#: ui/directoryserviceswidget.cpp:96
+#, kde-format
+msgid "http"
+msgstr "http"
+
+#: ui/directoryserviceswidget.cpp:97
+#, kde-format
+msgid "https"
+msgstr "https"
+
+#: ui/directoryserviceswidget.cpp:98
+#, kde-format
+msgid "ftp"
+msgstr "ftp"
+
+#: ui/directoryserviceswidget.cpp:99
+#, kde-format
+msgid "ftps"
+msgstr "ftps"
+
+#: ui/directoryserviceswidget.cpp:100
+#, kde-format
+msgid "ldap"
+msgstr "ldap"
+
+#: ui/directoryserviceswidget.cpp:101
+#, kde-format
+msgid "ldaps"
+msgstr "ldaps"
+
+#: ui/directoryserviceswidget.cpp:588
+#, fuzzy, kde-format
+msgid "Server Name"
+msgstr "Servilonomo:"
+
+#: ui/directoryserviceswidget.cpp:589
+#, fuzzy, kde-format
+msgid "Server Port"
+msgstr "St. Peter Port"
+
+#: ui/directoryserviceswidget.cpp:590
+#, kde-format
+msgid "Base DN"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:591
+#, kde-format
+msgid "User Name"
+msgstr "Uzantonomo"
+
+#: ui/directoryserviceswidget.cpp:592
+#, kde-format
+msgid "Password"
+msgstr "Pasvorto"
+
+#: ui/directoryserviceswidget.cpp:614
+#, kde-format
+msgid "(read-only)"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:616
+#, kde-format
+msgctxt "amended tooltip; %1: original tooltip"
+msgid "%1 (read-only)"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:739
+#, kde-format
+msgid ""
+"Enter the name or IP address of the server hosting the directory service."
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:741
+#, kde-format
+msgid ""
+"<b>(Optional, the default is fine in most cases)</b> Pick the port number "
+"the directory service is listening on."
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:744
+#, kde-format
+msgid ""
+"<b>(Only for LDAP)</b> Enter the base DN for this LDAP server to limit "
+"searches to only that subtree of the directory."
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:747
+#, kde-format
+msgid "<b>(Optional)</b> Enter your user name here, if needed."
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:749
+#, kde-format
+msgid ""
+"<b>(Optional, not recommended)</b> Enter your password here, if needed. Note "
+"that the password will be saved in the clear in a config file in your home "
+"directory."
+msgstr ""
+
+#. i18n: ectx: property (windowTitle), widget (QWidget, DirectoryServicesWidget)
+#: ui/directoryserviceswidget.ui:14
+#, kde-format
+msgid "Directory Services Configuration"
+msgstr ""
+
+#. i18n: ectx: property (text), widget (QLabel, pgpKSLabel)
+#: ui/directoryserviceswidget.ui:22
+#, kde-format
+msgid "OpenPGP Keyserver:"
+msgstr ""
+
+#. i18n: ectx: property (title), widget (QGroupBox, x500LA)
+#: ui/directoryserviceswidget.ui:35
+#, kde-format
+msgid "X509 Directory services:"
+msgstr ""
+
+#. i18n: ectx: property (whatsThis), widget (QTreeView, treeView)
+#: ui/directoryserviceswidget.ui:43
+#, kde-format
+msgid ""
+"This is a list of all directory services that are configured for use with "
+"X.509."
+msgstr ""
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:70
+#, kde-format
+msgid "Click to add a service"
+msgstr ""
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:73
+#, kde-format
+msgid ""
+"Click this button to create a new directory service entry as a clone of the "
+"currently selected one (or with default values, if no other is selected). "
+"You can then configure details in the table on the left hand."
+msgstr ""
+
+#. i18n: ectx: property (text), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:76
+#, kde-format
+msgid "New"
+msgstr "Nova"
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:92
+#, kde-format
+msgid "Click to remove the currently selected service"
+msgstr ""
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:95
+#, kde-format
+msgid ""
+"Click this button to remove the currently selected directory service. The "
+"change will only take effect once you acknowledge the main configuration "
+"dialog."
+msgstr ""
+
+#. i18n: ectx: property (text), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:98
+#, kde-format
+msgid "Delete"
+msgstr "Forigi"
+
+#. i18n: ectx: property (whatsThis), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:128
+#, kde-format
+msgid ""
+"Use this option to switch display of username and password information on or "
+"off in the above table."
+msgstr ""
+
+#. i18n: ectx: property (text), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:131
+#, kde-format
+msgid "Show user and password information"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:73
+#, kde-format
+msgid "Description"
+msgstr "Priskribo"
+
+#: ui/dnattributeorderconfigwidget.cpp:91
+#, kde-format
+msgid "Available attributes:"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:92
+#, kde-format
+msgid "Current attribute order:"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:112
+#, kde-format
+msgid "All others"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:129
+#, kde-format
+msgid "Move to top"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:130
+#, kde-format
+msgid "Move one up"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:131
+#, kde-format
+msgid "Remove from current attribute order"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:132
+#, kde-format
+msgid "Add to current attribute order"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:133
+#, kde-format
+msgid "Move one down"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:134
+#, kde-format
+msgid "Move to bottom"
+msgstr ""
+
+#: ui/keyapprovaldialog.cpp:87
+#, kde-kuit-format
+msgid "<placeholder>none</placeholder>"
+msgstr ""
+
+#: ui/keyapprovaldialog.cpp:88
+#, kde-format
+msgid "Never Encrypt with This Key"
+msgstr ""
+
+#: ui/keyapprovaldialog.cpp:89
+#, kde-format
+msgid "Always Encrypt with This Key"
+msgstr ""
+
+#: ui/keyapprovaldialog.cpp:90
+#, kde-format
+msgid "Encrypt Whenever Encryption is Possible"
+msgstr ""
+
+#: ui/keyapprovaldialog.cpp:91
+#, kde-format
+msgid "Always Ask"
+msgstr ""
+
+#: ui/keyapprovaldialog.cpp:92
+#, kde-format
+msgid "Ask Whenever Encryption is Possible"
+msgstr ""
+
+#: ui/keyapprovaldialog.cpp:113
+#, kde-format
+msgid "Encryption Key Approval"
+msgstr ""
+
+#: ui/keyapprovaldialog.cpp:129
+#, kde-format
+msgid "The following keys will be used for encryption:"
+msgstr ""
+
+#: ui/keyapprovaldialog.cpp:145
+#, kde-format
+msgid "Your keys:"
+msgstr ""
+
+#: ui/keyapprovaldialog.cpp:157
+#, kde-format
+msgid "Recipient:"
+msgstr ""
+
+#: ui/keyapprovaldialog.cpp:162
+#, kde-format
+msgid "Encryption keys:"
+msgstr ""
+
+#: ui/keyapprovaldialog.cpp:169
+#, kde-format
+msgid "Encryption preference:"
+msgstr ""
+
+#: ui/keyrequester.cpp:118
+#, kde-format
+msgid "Clear"
+msgstr "Forigi"
+
+#: ui/keyrequester.cpp:121
+#, kde-format
+msgid "Change..."
+msgstr "Ŝanĝi..."
+
+#: ui/keyrequester.cpp:232 ui/keyselectiondialog.cpp:256
+#, kde-kuit-format
+msgid "<placeholder>unknown</placeholder>"
+msgstr ""
+
+#: ui/keyrequester.cpp:246 ui/keyselectiondialog.cpp:657
+#, kde-format
+msgid ""
+"<qt><p>An error occurred while fetching the keys from the backend:</p><p><b>"
+"%1</b></p></qt>"
+msgstr ""
+
+#: ui/keyrequester.cpp:251 ui/keyrequester.cpp:283 ui/keyrequester.cpp:306
+#: ui/keyselectiondialog.cpp:630 ui/keyselectiondialog.cpp:662
+#, kde-format
+msgid "Key Listing Failed"
+msgstr ""
+
+#: ui/keyrequester.cpp:281
+#, kde-format
+msgid ""
+"The OpenPGP backend does not support listing keys. Check your installation."
+msgstr ""
+
+#: ui/keyrequester.cpp:304
+#, kde-format
+msgid ""
+"The S/MIME backend does not support listing keys. Check your installation."
+msgstr ""
+
+#: ui/keyrequester.cpp:426
+#, kde-format
+msgid "OpenPGP Key Selection"
+msgstr ""
+
+#: ui/keyrequester.cpp:427
+#, kde-format
+msgid "Please select an OpenPGP key to use."
+msgstr ""
+
+#: ui/keyrequester.cpp:429
+#, kde-format
+msgid "S/MIME Key Selection"
+msgstr ""
+
+#: ui/keyrequester.cpp:430
+#, kde-format
+msgid "Please select an S/MIME key to use."
+msgstr ""
+
+#: ui/keyrequester.cpp:432
+#, kde-format
+msgid "Key Selection"
+msgstr ""
+
+#: ui/keyrequester.cpp:433
+#, kde-format
+msgid "Please select an (OpenPGP or S/MIME) key to use."
+msgstr ""
+
+#: ui/keyselectioncombo.cpp:195
+#, kde-format
+msgctxt "Name <email> (validity, type, created: date)"
+msgid "%1 (%2, %3, created: %4)"
+msgstr ""
+
+#: ui/keyselectioncombo.cpp:196
+#, kde-format
+msgctxt "Name <email>"
+msgid "%1 <%2>"
+msgstr ""
+
+#: ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "OpenPGP"
+msgstr "OpenPGP"
+
+#: ui/keyselectioncombo.cpp:347
+#, kde-format
+msgid "Loading keys ..."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:98
+#, kde-format
+msgid "The key is not valid."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:106
+#, kde-format
+msgid "The key is expired."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:110
+#, kde-format
+msgid "The key is revoked."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:114
+#, kde-format
+msgid "The key is disabled."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:122
+#, kde-format
+msgid "The key is not designated for encryption."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:128
+#, kde-format
+msgid "The key is not designated for signing."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:134
+#, kde-format
+msgid "The key is not designated for certifying."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:140
+#, kde-format
+msgid "The key is not designated for authentication."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:148
+#, kde-format
+msgid "The key is not secret."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:163
+#, kde-format
+msgid "The key is not trusted enough."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:169
+#, kde-format
+msgid "The key can be used."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:230
+#, kde-format
+msgid "Key ID"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:231
+#, kde-format
+msgid "User ID"
+msgstr "Uzant-ID"
+
+#: ui/keyselectiondialog.cpp:279
+#, kde-format
+msgid "never"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:289 ui/keyselectiondialog.cpp:291
+#: ui/keyselectiondialog.cpp:300 ui/keyselectiondialog.cpp:302
+#, kde-format
+msgid "unknown"
+msgstr "nekonata"
+
+#: ui/keyselectiondialog.cpp:289
+#, kde-format
+msgid "OpenPGP key for <b>%1</b>"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:291
+#, kde-format
+msgid "S/MIME key for <b>%1</b>"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:298
+#, kde-format
+msgctxt "Key creation date"
+msgid "Created"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:299
+#, kde-format
+msgctxt "Key Expiration date"
+msgid "Expiry"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:300
+#, kde-format
+msgctxt "Key fingerprint"
+msgid "Fingerprint"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:302
+#, kde-format
+msgctxt "Key issuer"
+msgid "Issuer"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:304
+#, kde-format
+msgctxt "Key status"
+msgid "Status"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:456
+#, kde-format
+msgid "Search for &External Certificates"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:470
+#, kde-format
+msgid "&Search for:"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:494
+#, kde-format
+msgid "&Remember choice"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:497
+#, kde-format
+msgid ""
+"<qt><p>If you check this box your choice will be stored and you will not be "
+"asked again.</p></qt>"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:509
+#, kde-format
+msgid "&Reread Keys"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:510
+#, kde-format
+msgid "&Start Certificate Manager"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:628
+#, kde-format
+msgid "No backends found for listing keys. Check your installation."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:644
+#, kde-format
+msgid "Could not start certificate manager; please check your installation."
+msgstr "Ne eblis starti atestilo-manaĝeron. Bonvolu kontroli vian instaladon."
+
+#: ui/keyselectiondialog.cpp:646
+#, kde-format
+msgid "Certificate Manager Error"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Checking selected keys..."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Fetching keys..."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:731
+#, kde-format
+msgid ""
+"<qt>One backend returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgid_plural ""
+"<qt>%1 backends returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ui/keyselectiondialog.cpp:736
+#, kde-format
+msgid "Key List Result"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:856
+#, kde-format
+msgid "Recheck Key"
+msgstr ""
+
+#: ui/messagebox.cpp:71
+#, kde-format
+msgid "Your system does not have support for GnuPG Audit Logs"
+msgstr ""
+
+#: ui/messagebox.cpp:72
+#, kde-format
+msgid "System Error"
+msgstr ""
+
+#: ui/messagebox.cpp:79
+#, kde-format
+msgid ""
+"An error occurred while trying to retrieve the GnuPG Audit Log:\n"
+"%1"
+msgstr ""
+
+#: ui/messagebox.cpp:81
+#, kde-format
+msgid "GnuPG Audit Log Error"
+msgstr ""
+
+#: ui/messagebox.cpp:88
+#, kde-format
+msgid "No GnuPG Audit Log available for this operation."
+msgstr ""
+
+#: ui/messagebox.cpp:89
+#, kde-format
+msgid "No GnuPG Audit Log"
+msgstr ""
+
+#: ui/messagebox.cpp:109 ui/messagebox.cpp:115
+#, kde-format
+msgid "GnuPG Audit Log Viewer"
+msgstr ""
+
+#: ui/messagebox.cpp:121
+#, kde-format
+msgid "Signing failed: %1"
+msgstr ""
+
+#: ui/messagebox.cpp:122
+#, kde-format
+msgid "Signing successful"
+msgstr ""
+
+#: ui/messagebox.cpp:133
+#, kde-format
+msgid "Encryption failed: %1"
+msgstr ""
+
+#: ui/messagebox.cpp:134
+#, kde-format
+msgid "Encryption successful"
+msgstr ""
+
+#: ui/messagebox.cpp:155
+#, kde-format
+msgid "Signing Result"
+msgstr ""
+
+#: ui/messagebox.cpp:167
+#, kde-format
+msgid "Signing Error"
+msgstr ""
+
+#: ui/messagebox.cpp:179 ui/messagebox.cpp:203
+#, kde-format
+msgid "Encryption Result"
+msgstr ""
+
+#: ui/messagebox.cpp:191 ui/messagebox.cpp:215
+#, kde-format
+msgid "Encryption Error"
+msgstr ""
+
+#: ui/messagebox.cpp:263
+#, kde-format
+msgid "&Show Audit Log"
+msgstr ""
+
+#: ui/progressdialog.cpp:91
+#, kde-format
+msgid "%1: %2"
+msgstr "%1: %2"
+
+#~ msgctxt "New X.509 Directory Server"
+#~ msgid "X.509"
+#~ msgstr "X.509"
+
+#~ msgctxt "New OpenPGP Directory Server"
+#~ msgid "OpenPGP"
+#~ msgstr "OpenPGP"
+
+#~ msgid "X.509"
+#~ msgstr "X.509"
+
+#~ msgid "General"
+#~ msgstr "Ĝeneralo"
+
+#~ msgid "Chiasmus"
+#~ msgstr "Chiasmus"
+
+#~ msgid "GpgME"
+#~ msgstr "GpgME"
+
+#~ msgctxt "progress info: \"%1 of %2\""
+#~ msgid "%1/%2"
+#~ msgstr "%1/%2"
+
+#~ msgid "389"
+#~ msgstr "389"
+
+#~ msgid "&OK"
+#~ msgstr "&Bone"
+
+#~ msgid "&Cancel"
+#~ msgstr "&Rezigni"
+
+#~ msgid "&Port:"
+#~ msgstr "&Pordo:"
+
+#~ msgctxt "NAME OF TRANSLATORS"
+#~ msgid "Your names"
+#~ msgstr "Axel Rousseau"
+
+#~ msgctxt "EMAIL OF TRANSLATORS"
+#~ msgid "Your emails"
+#~ msgstr "axel@esperanto-jeunes.org"
+
+#~ msgctxt ""
+#~ "Items in Kleo::BackendConfigWidget listview (1: protocol; 2: "
+#~ "implementation name)"
+#~ msgid "%1 (%2)"
+#~ msgstr "%1 (%2)"
+
+#~ msgid "Confi&gure..."
+#~ msgstr "A&gordi..."
+
+#~ msgid "Rescan"
+#~ msgstr "Reserĉi"
--- /dev/null
+# translation of libkleopatra.po to Spanish
+# Translation of libkleopatra to Spanish
+# Juan Manuel Garcia Molina <juanma@superiodico.net>, 2004, 2005.
+# Enrique Matias Sanchez (aka Quique) <cronopios@gmail.com>, 2007.
+# Eloy Cuadra <ecuadra@eloihr.net>, 2008, 2009.
+# Franco Mariluis <fmariluis@gmail.com>, 2008, 2009.
+# Javier Viñal <fjvinal@gmail.com>, 2010, 2013.
+# Javier Vinal <kde-l10n-es@kde.org >, 2010.
+# Javier Vinal <fjvinal@gmail.com>, 2010, 2012, 2014, 2015, 2016, 2017.
+msgid ""
+msgstr ""
+"Project-Id-Version: libkleopatra\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2017-07-12 06:56+0200\n"
+"PO-Revision-Date: 2017-10-18 14:49+0100\n"
+"Last-Translator: Javier Vinal <fjvinal²gmail.com>\n"
+"Language-Team: Spanish <l10n-kde-es@kde.org>\n"
+"Language: es\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Lokalize 2.0\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+
+#: kleo/checksumdefinition.cpp:107
+#, kde-format
+msgid "Error in checksum definition %1: %2"
+msgstr "Error en la definición de suma de verificación %1: %2"
+
+#: kleo/checksumdefinition.cpp:157
+#, kde-format
+msgid "Cannot use both %f and | in '%1'"
+msgstr "No se pueden usar ambos %f y | en %1"
+
+#: kleo/checksumdefinition.cpp:167
+#, kde-format
+msgid "Quoting error in '%1' entry"
+msgstr "Error de citado en la entrada «%1»"
+
+#: kleo/checksumdefinition.cpp:170
+#, kde-format
+msgid "'%1' too complex (would need shell)"
+msgstr "«%1» demasiado compleja (podría necesitar de línea de órdenes)"
+
+#: kleo/checksumdefinition.cpp:174
+#, kde-format
+msgid "'%1' entry is empty/missing"
+msgstr "la entrada «%1» está vacía/perdida"
+
+#: kleo/checksumdefinition.cpp:183
+#, kde-format
+msgid "'%1' empty or not found"
+msgstr "«%1» vacía o no encontrada"
+
+#: kleo/checksumdefinition.cpp:222
+#, kde-format
+msgid "'id' entry is empty/missing"
+msgstr "la entrada «id» está vacía/perdida"
+
+#: kleo/checksumdefinition.cpp:225
+#, kde-format
+msgid "'output-file' entry is empty/missing"
+msgstr "la entrada «archivo de salida» está vacía/perdida"
+
+#: kleo/checksumdefinition.cpp:228
+#, kde-format
+msgid "'file-patterns' entry is empty/missing"
+msgstr "la entrada «patrones de archivo» está vacía/perdida"
+
+#: kleo/checksumdefinition.cpp:395
+#, kde-format
+msgid "Caught unknown exception in group %1"
+msgstr "Capturada excepción desconocida en el grupo %1"
+
+#: kleo/dn.cpp:507
+#, kde-format
+msgid "Common name"
+msgstr "Nombre de pila"
+
+#: kleo/dn.cpp:508
+#, kde-format
+msgid "Surname"
+msgstr "Apellidos"
+
+#: kleo/dn.cpp:509
+#, kde-format
+msgid "Given name"
+msgstr "Nombre"
+
+#: kleo/dn.cpp:510
+#, kde-format
+msgid "Location"
+msgstr "Ubicación"
+
+#: kleo/dn.cpp:511
+#, kde-format
+msgid "Title"
+msgstr "Título"
+
+#: kleo/dn.cpp:512
+#, kde-format
+msgid "Organizational unit"
+msgstr "Unidad organizativa"
+
+#: kleo/dn.cpp:513
+#, kde-format
+msgid "Organization"
+msgstr "Organización"
+
+#: kleo/dn.cpp:514
+#, kde-format
+msgid "Postal code"
+msgstr "Código postal"
+
+#: kleo/dn.cpp:515
+#, kde-format
+msgid "Country code"
+msgstr "Código de país"
+
+#: kleo/dn.cpp:516
+#, kde-format
+msgid "State or province"
+msgstr "Estado o provincia"
+
+#: kleo/dn.cpp:517
+#, kde-format
+msgid "Domain component"
+msgstr "Componente del dominio"
+
+#: kleo/dn.cpp:518
+#, kde-format
+msgid "Business category"
+msgstr "Categoría de negocios"
+
+#: kleo/dn.cpp:519
+#, kde-format
+msgid "Email address"
+msgstr "Dirección de correo"
+
+#: kleo/dn.cpp:520
+#, kde-format
+msgid "Mail address"
+msgstr "Dirección de correo"
+
+#: kleo/dn.cpp:521
+#, kde-format
+msgid "Mobile phone number"
+msgstr "Número de teléfono móvil"
+
+#: kleo/dn.cpp:522
+#, kde-format
+msgid "Telephone number"
+msgstr "Número de teléfono"
+
+#: kleo/dn.cpp:523
+#, kde-format
+msgid "Fax number"
+msgstr "Número de fax"
+
+#: kleo/dn.cpp:524
+#, kde-format
+msgid "Street address"
+msgstr "Dirección postal"
+
+#: kleo/dn.cpp:525
+#, kde-format
+msgid "Unique ID"
+msgstr "ID único"
+
+#: kleo/enum.cpp:57
+#, kde-format
+msgid "Inline OpenPGP (deprecated)"
+msgstr "OpenPGP intercalado (obsoleto)"
+
+#: kleo/enum.cpp:62
+#, kde-format
+msgid "OpenPGP/MIME"
+msgstr "OpenPGP/MIME"
+
+#: kleo/enum.cpp:67 ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "S/MIME"
+msgstr "S/MIME"
+
+#: kleo/enum.cpp:72
+#, kde-format
+msgid "S/MIME Opaque"
+msgstr "S/MIME opaco"
+
+#: kleo/enum.cpp:104
+#, kde-format
+msgid "Any"
+msgstr "Cualquiera"
+
+#: kleo/enum.cpp:177
+#, kde-format
+msgid "Never Encrypt"
+msgstr "No cifrar nunca"
+
+#: kleo/enum.cpp:179
+#, kde-format
+msgid "Always Encrypt"
+msgstr "Cifrar siempre"
+
+#: kleo/enum.cpp:181
+#, kde-format
+msgid "Always Encrypt If Possible"
+msgstr "Cifrar siempre que sea posible"
+
+#: kleo/enum.cpp:183 kleo/enum.cpp:240
+#, kde-format
+msgid "Ask"
+msgstr "Preguntar"
+
+#: kleo/enum.cpp:185 kleo/enum.cpp:242
+#, kde-format
+msgid "Ask Whenever Possible"
+msgstr "Preguntar cada vez que sea posible"
+
+#: kleo/enum.cpp:187
+#, kde-kuit-format
+msgctxt "no specific preference"
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>ninguno</placeholder>"
+
+#: kleo/enum.cpp:234
+#, kde-format
+msgid "Never Sign"
+msgstr "No firmar nunca"
+
+#: kleo/enum.cpp:236
+#, kde-format
+msgid "Always Sign"
+msgstr "Firmar siempre"
+
+#: kleo/enum.cpp:238
+#, kde-format
+msgid "Always Sign If Possible"
+msgstr "Firmar siempre que sea posible"
+
+#: kleo/enum.cpp:244
+#, kde-format
+msgctxt "no specific preference"
+msgid "<none>"
+msgstr "<ninguno>"
+
+#: kleo/keyfiltermanager.cpp:85
+#, kde-format
+msgid "All Certificates"
+msgstr "Todos los certificados"
+
+#: kleo/keyfiltermanager.cpp:100
+#, kde-format
+msgid "My Certificates"
+msgstr "Mis certificados"
+
+#: kleo/keyfiltermanager.cpp:118
+#, kde-format
+msgid "Trusted Certificates"
+msgstr "Certificados confiables"
+
+#: kleo/keyfiltermanager.cpp:135
+#, kde-format
+msgid "Fully Trusted Certificates"
+msgstr "Certificados totalmente confiables"
+
+#: kleo/keyfiltermanager.cpp:152
+#, kde-format
+msgid "Other Certificates"
+msgstr "Otros certificados"
+
+#: kleo/keyfiltermanager.cpp:166
+#, kde-format
+msgid "VS-compliant Certificates"
+msgstr "Certificados VS-compatibles"
+
+#: kleo/keyfiltermanager.cpp:184
+#, kde-format
+msgid "Not validated Certificates"
+msgstr "Certificados no validados"
+
+#: ui/auditlogviewer.cpp:49
+#, kde-format
+msgid "View GnuPG Audit Log"
+msgstr "Ver el registro de auditoría GnuPG"
+
+#: ui/auditlogviewer.cpp:53
+#, kde-format
+msgid "&Copy to Clipboard"
+msgstr "&Copiar en el portapapeles"
+
+#: ui/auditlogviewer.cpp:59
+#, kde-format
+msgid "&Save to Disk..."
+msgstr "&Guardar a disco..."
+
+#: ui/auditlogviewer.cpp:95
+#, kde-format
+msgid "Choose File to Save GnuPG Audit Log to"
+msgstr "Elija en qué archivo guardar el registro de auditoría de GnuPG"
+
+#: ui/auditlogviewer.cpp:118
+#, kde-format
+msgid "Could not save to file \"%1\": %2"
+msgstr "No se ha podido guardar en el archivo «%1»: %2"
+
+#: ui/auditlogviewer.cpp:120
+#, kde-format
+msgid "File Save Error"
+msgstr "Error al guardar archivo"
+
+#: ui/cryptoconfigdialog.cpp:44
+#, kde-format
+msgid "Configure GnuPG Backend"
+msgstr "Configurar el motor GnuPG"
+
+#: ui/cryptoconfigdialog.cpp:55
+#, kde-format
+msgid "&Reset"
+msgstr "&Reiniciar"
+
+#: ui/cryptoconfigmodule.cpp:160
+#, kde-format
+msgid "GpgConf Error"
+msgstr "Error de GpgConf"
+
+#: ui/cryptoconfigmodule.cpp:216
+#, kde-format
+msgid ""
+"The gpgconf tool used to provide the information for this dialog does not "
+"seem to be installed properly. It did not return any components. Try running "
+"\"%1\" on the command line for more information."
+msgstr ""
+"La herramienta gpgconf usada para proveer la información para este diálogo "
+"parece no estar instalada correctamente. No devolvió ningún componente. "
+"Intente ejecutar «%1» en la línea de órdenes para más información."
+
+#: ui/cryptoconfigmodule.cpp:496
+#, kde-format
+msgctxt ""
+"Translate this to 'yes' or 'no' (use the English words!) depending on "
+"whether your language uses Sentence style capitalisation in GUI labels (yes) "
+"or not (no). Context: We get some backend strings in that have the wrong "
+"capitalizaion (in English, at least) so we need to force the first character "
+"to upper-case. It is this behaviour you can control for your language with "
+"this translation."
+msgid "yes"
+msgstr "yes"
+
+#: ui/cryptoconfigmodule.cpp:546
+#, kde-format
+msgid "0 - None"
+msgstr "0 - Ninguna"
+
+#: ui/cryptoconfigmodule.cpp:547
+#, kde-format
+msgid "1 - Basic"
+msgstr "1 - Básico"
+
+#: ui/cryptoconfigmodule.cpp:548
+#, kde-format
+msgid "2 - Verbose"
+msgstr "2 - Prolija"
+
+#: ui/cryptoconfigmodule.cpp:549
+#, kde-format
+msgid "3 - More Verbose"
+msgstr "3 - Más prolija"
+
+#: ui/cryptoconfigmodule.cpp:550
+#, kde-format
+msgid "4 - All"
+msgstr "4 - Todo"
+
+#: ui/cryptoconfigmodule.cpp:559
+#, kde-format
+msgid "Set the debugging level to"
+msgstr "Configure el nivel de depuración a"
+
+#: ui/cryptoconfigmodule.cpp:787
+#, kde-format
+msgid "Show..."
+msgstr "Mostrar..."
+
+#: ui/cryptoconfigmodule.cpp:787 ui/cryptoconfigmodule.cpp:876
+#, kde-format
+msgid "Edit..."
+msgstr "Editar..."
+
+#: ui/cryptoconfigmodule.cpp:841
+#, kde-format
+msgid "Configure LDAP Servers"
+msgstr "Configurar los servidores LDAP"
+
+#: ui/cryptoconfigmodule.cpp:862
+#, kde-format
+msgid "None configured"
+msgstr "Ninguna configurada"
+
+#: ui/cryptoconfigmodule.cpp:864
+#, kde-format
+msgid "1 server configured"
+msgid_plural "%1 servers configured"
+msgstr[0] "1 servidor configurado"
+msgstr[1] "%1 servidores configurados"
+
+#: ui/cryptoconfigmodule.cpp:879
+#, kde-format
+msgid "Use keyserver at"
+msgstr "Usar servidor de claves en"
+
+#: ui/cryptoconfigmodule.cpp:968
+#, kde-format
+msgid "Configure Keyservers"
+msgstr "Configurar los servidores de claves"
+
+#: ui/directoryserviceswidget.cpp:67
+#, kde-format
+msgctxt "default server name, keep it a valid domain name, ie. no spaces"
+msgid "server"
+msgstr "servidor"
+
+#: ui/directoryserviceswidget.cpp:95
+#, kde-format
+msgid "hkp"
+msgstr "hkp"
+
+#: ui/directoryserviceswidget.cpp:96
+#, kde-format
+msgid "http"
+msgstr "http"
+
+#: ui/directoryserviceswidget.cpp:97
+#, kde-format
+msgid "https"
+msgstr "https"
+
+#: ui/directoryserviceswidget.cpp:98
+#, kde-format
+msgid "ftp"
+msgstr "ftp"
+
+#: ui/directoryserviceswidget.cpp:99
+#, kde-format
+msgid "ftps"
+msgstr "ftps"
+
+#: ui/directoryserviceswidget.cpp:100
+#, kde-format
+msgid "ldap"
+msgstr "ldap"
+
+#: ui/directoryserviceswidget.cpp:101
+#, kde-format
+msgid "ldaps"
+msgstr "ldaps"
+
+#: ui/directoryserviceswidget.cpp:588
+#, kde-format
+msgid "Server Name"
+msgstr "Nombre del servidor"
+
+#: ui/directoryserviceswidget.cpp:589
+#, kde-format
+msgid "Server Port"
+msgstr "Puerto del servidor"
+
+#: ui/directoryserviceswidget.cpp:590
+#, kde-format
+msgid "Base DN"
+msgstr "DN base"
+
+#: ui/directoryserviceswidget.cpp:591
+#, kde-format
+msgid "User Name"
+msgstr "Nombre de usuario"
+
+#: ui/directoryserviceswidget.cpp:592
+#, kde-format
+msgid "Password"
+msgstr "Contraseña"
+
+#: ui/directoryserviceswidget.cpp:614
+#, kde-format
+msgid "(read-only)"
+msgstr "(solo lectura)"
+
+#: ui/directoryserviceswidget.cpp:616
+#, kde-format
+msgctxt "amended tooltip; %1: original tooltip"
+msgid "%1 (read-only)"
+msgstr "%1 (solo lectura)"
+
+#: ui/directoryserviceswidget.cpp:739
+#, kde-format
+msgid ""
+"Enter the name or IP address of the server hosting the directory service."
+msgstr ""
+"Introduzca el nombre o la dirección IP del servidor que hospeda el servicio "
+"de directorio."
+
+#: ui/directoryserviceswidget.cpp:741
+#, kde-format
+msgid ""
+"<b>(Optional, the default is fine in most cases)</b> Pick the port number "
+"the directory service is listening on."
+msgstr ""
+"<b>(Opcional, la opción predeterminada es suficiente en la mayoría de los "
+"casos)</b> Elija el número de puerto en el que el servicio de directorio "
+"está escuchando."
+
+#: ui/directoryserviceswidget.cpp:744
+#, kde-format
+msgid ""
+"<b>(Only for LDAP)</b> Enter the base DN for this LDAP server to limit "
+"searches to only that subtree of the directory."
+msgstr ""
+"<b>(solo para LDAP)</b> Introduzca la base DN para este servidor LDAP para "
+"limitar las búsquedas al subárbol del directorio."
+
+#: ui/directoryserviceswidget.cpp:747
+#, kde-format
+msgid "<b>(Optional)</b> Enter your user name here, if needed."
+msgstr ""
+"<b>(Opcional)</b> Introduzca aquí su nombre de usuario, si fuera necesario."
+
+#: ui/directoryserviceswidget.cpp:749
+#, kde-format
+msgid ""
+"<b>(Optional, not recommended)</b> Enter your password here, if needed. Note "
+"that the password will be saved in the clear in a config file in your home "
+"directory."
+msgstr ""
+"<b>(Opcional, no recomendable)</b> Introduzca su contraseña aquí, si fuera "
+"necesaria. Tenga en cuenta que la contraseña será guardada en claro en un "
+"archivo de configuración en su directorio personal."
+
+#. i18n: ectx: property (windowTitle), widget (QWidget, DirectoryServicesWidget)
+#: ui/directoryserviceswidget.ui:14
+#, kde-format
+msgid "Directory Services Configuration"
+msgstr "Configuración de servicios de directorio"
+
+#. i18n: ectx: property (text), widget (QLabel, pgpKSLabel)
+#: ui/directoryserviceswidget.ui:22
+#, kde-format
+msgid "OpenPGP Keyserver:"
+msgstr "Servidor de claves OpenPGP:"
+
+#. i18n: ectx: property (title), widget (QGroupBox, x500LA)
+#: ui/directoryserviceswidget.ui:35
+#, kde-format
+msgid "X509 Directory services:"
+msgstr "Servicios de directorio X509:"
+
+#. i18n: ectx: property (whatsThis), widget (QTreeView, treeView)
+#: ui/directoryserviceswidget.ui:43
+#, kde-format
+msgid ""
+"This is a list of all directory services that are configured for use with "
+"X.509."
+msgstr ""
+"Esta es una lista de todos los servicios de directorio que están "
+"configurados para usarse con X.509."
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:70
+#, kde-format
+msgid "Click to add a service"
+msgstr "Pulse para añadir un servicio"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:73
+#, kde-format
+msgid ""
+"Click this button to create a new directory service entry as a clone of the "
+"currently selected one (or with default values, if no other is selected). "
+"You can then configure details in the table on the left hand."
+msgstr ""
+"Pulse este botón para crear una nueva entrada de servicio de directorio como "
+"un clon de la actualmente seleccionada (o con valores predeterminados, si "
+"ninguna entrada está seleccionada). Usted puede entonces configurar detalles "
+"en la tabla ubicada a la izquierda."
+
+#. i18n: ectx: property (text), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:76
+#, kde-format
+msgid "New"
+msgstr "Nuevo"
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:92
+#, kde-format
+msgid "Click to remove the currently selected service"
+msgstr "Pulse para eliminar el servicio seleccionado en este momento"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:95
+#, kde-format
+msgid ""
+"Click this button to remove the currently selected directory service. The "
+"change will only take effect once you acknowledge the main configuration "
+"dialog."
+msgstr ""
+"Pulse este botón para eliminar el servicio de directorio actualmente "
+"seleccionado. El cambio solo tendrá efecto una vez que haya aceptado el "
+"diálogo de configuración."
+
+#. i18n: ectx: property (text), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:98
+#, kde-format
+msgid "Delete"
+msgstr "Borrar"
+
+#. i18n: ectx: property (whatsThis), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:128
+#, kde-format
+msgid ""
+"Use this option to switch display of username and password information on or "
+"off in the above table."
+msgstr ""
+"Use esta opción para conmutar la visualización del nombre de usuario y "
+"contraseña en la tabla de arriba."
+
+#. i18n: ectx: property (text), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:131
+#, kde-format
+msgid "Show user and password information"
+msgstr "Mostrar información de usuario y contraseña"
+
+#: ui/dnattributeorderconfigwidget.cpp:73
+#, kde-format
+msgid "Description"
+msgstr "Descripción"
+
+#: ui/dnattributeorderconfigwidget.cpp:91
+#, kde-format
+msgid "Available attributes:"
+msgstr "Atributos disponibles:"
+
+#: ui/dnattributeorderconfigwidget.cpp:92
+#, kde-format
+msgid "Current attribute order:"
+msgstr "Orden actual de atributos:"
+
+#: ui/dnattributeorderconfigwidget.cpp:112
+#, kde-format
+msgid "All others"
+msgstr "Todos los demás"
+
+#: ui/dnattributeorderconfigwidget.cpp:129
+#, kde-format
+msgid "Move to top"
+msgstr "Mueve a la cima"
+
+#: ui/dnattributeorderconfigwidget.cpp:130
+#, kde-format
+msgid "Move one up"
+msgstr "Mueve uno hacia arriba"
+
+#: ui/dnattributeorderconfigwidget.cpp:131
+#, kde-format
+msgid "Remove from current attribute order"
+msgstr "Eliminar del orden actual de atributos"
+
+#: ui/dnattributeorderconfigwidget.cpp:132
+#, kde-format
+msgid "Add to current attribute order"
+msgstr "Añadir al orden actual de atributos"
+
+#: ui/dnattributeorderconfigwidget.cpp:133
+#, kde-format
+msgid "Move one down"
+msgstr "Mueve uno hacia abajo"
+
+#: ui/dnattributeorderconfigwidget.cpp:134
+#, kde-format
+msgid "Move to bottom"
+msgstr "Mover a la base"
+
+#: ui/keyapprovaldialog.cpp:87
+#, kde-kuit-format
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>ninguno</placeholder>"
+
+#: ui/keyapprovaldialog.cpp:88
+#, kde-format
+msgid "Never Encrypt with This Key"
+msgstr "No cifrar nunca con esta clave"
+
+#: ui/keyapprovaldialog.cpp:89
+#, kde-format
+msgid "Always Encrypt with This Key"
+msgstr "Cifrar siempre con esta clave"
+
+#: ui/keyapprovaldialog.cpp:90
+#, kde-format
+msgid "Encrypt Whenever Encryption is Possible"
+msgstr "Cifrar siempre que sea posible"
+
+#: ui/keyapprovaldialog.cpp:91
+#, kde-format
+msgid "Always Ask"
+msgstr "Preguntar siempre"
+
+#: ui/keyapprovaldialog.cpp:92
+#, kde-format
+msgid "Ask Whenever Encryption is Possible"
+msgstr "Preguntar cada vez que sea posible cifrar"
+
+#: ui/keyapprovaldialog.cpp:113
+#, kde-format
+msgid "Encryption Key Approval"
+msgstr "Aprobación de la clave de cifrado"
+
+#: ui/keyapprovaldialog.cpp:129
+#, kde-format
+msgid "The following keys will be used for encryption:"
+msgstr "Se usarán las siguientes claves para el cifrado:"
+
+#: ui/keyapprovaldialog.cpp:145
+#, kde-format
+msgid "Your keys:"
+msgstr "Sus claves:"
+
+#: ui/keyapprovaldialog.cpp:157
+#, kde-format
+msgid "Recipient:"
+msgstr "Destinatario:"
+
+#: ui/keyapprovaldialog.cpp:162
+#, kde-format
+msgid "Encryption keys:"
+msgstr "Claves de cifrado:"
+
+#: ui/keyapprovaldialog.cpp:169
+#, kde-format
+msgid "Encryption preference:"
+msgstr "Preferencia de cifrado:"
+
+#: ui/keyrequester.cpp:118
+#, kde-format
+msgid "Clear"
+msgstr "Borrar"
+
+#: ui/keyrequester.cpp:121
+#, kde-format
+msgid "Change..."
+msgstr "Cambiar..."
+
+#: ui/keyrequester.cpp:232 ui/keyselectiondialog.cpp:256
+#, kde-kuit-format
+msgid "<placeholder>unknown</placeholder>"
+msgstr "<placeholder>desconocido</placeholder>"
+
+#: ui/keyrequester.cpp:246 ui/keyselectiondialog.cpp:657
+#, kde-format
+msgid ""
+"<qt><p>An error occurred while fetching the keys from the backend:</p><p><b>"
+"%1</b></p></qt>"
+msgstr ""
+"<qt><p>Ocurrió un error al obtener las claves del motor:</p><p><b>%1</b></"
+"p></qt>"
+
+#: ui/keyrequester.cpp:251 ui/keyrequester.cpp:283 ui/keyrequester.cpp:306
+#: ui/keyselectiondialog.cpp:630 ui/keyselectiondialog.cpp:662
+#, kde-format
+msgid "Key Listing Failed"
+msgstr "El listado de las claves ha fallado"
+
+#: ui/keyrequester.cpp:281
+#, kde-format
+msgid ""
+"The OpenPGP backend does not support listing keys. Check your installation."
+msgstr ""
+"El motor OpenPGP no admite el listado de claves. Compruebe su instalación."
+
+#: ui/keyrequester.cpp:304
+#, kde-format
+msgid ""
+"The S/MIME backend does not support listing keys. Check your installation."
+msgstr ""
+"El motor S/MIME no admite el listado de claves. Compruebe su instalación."
+
+#: ui/keyrequester.cpp:426
+#, kde-format
+msgid "OpenPGP Key Selection"
+msgstr "Selección de clave OpenPGP"
+
+#: ui/keyrequester.cpp:427
+#, kde-format
+msgid "Please select an OpenPGP key to use."
+msgstr "Seleccione qué clave OpenPGP usar."
+
+#: ui/keyrequester.cpp:429
+#, kde-format
+msgid "S/MIME Key Selection"
+msgstr "Selección de clave S/MIME"
+
+#: ui/keyrequester.cpp:430
+#, kde-format
+msgid "Please select an S/MIME key to use."
+msgstr "Seleccione qué clave S/MIME usar."
+
+#: ui/keyrequester.cpp:432
+#, kde-format
+msgid "Key Selection"
+msgstr "Selección de clave"
+
+#: ui/keyrequester.cpp:433
+#, kde-format
+msgid "Please select an (OpenPGP or S/MIME) key to use."
+msgstr "Seleccione qué clave (OpenPGP o S/MIME) usar."
+
+#: ui/keyselectioncombo.cpp:195
+#, kde-format
+msgctxt "Name <email> (validity, type, created: date)"
+msgid "%1 (%2, %3, created: %4)"
+msgstr "%1 (%2, %3, creado: %4)"
+
+#: ui/keyselectioncombo.cpp:196
+#, kde-format
+msgctxt "Name <email>"
+msgid "%1 <%2>"
+msgstr "%1 <%2>"
+
+#: ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "OpenPGP"
+msgstr "OpenPGP"
+
+#: ui/keyselectioncombo.cpp:347
+#, kde-format
+msgid "Loading keys ..."
+msgstr "Cargando claves..."
+
+#: ui/keyselectiondialog.cpp:98
+#, kde-format
+msgid "The key is not valid."
+msgstr "La clave no es válida."
+
+#: ui/keyselectiondialog.cpp:106
+#, kde-format
+msgid "The key is expired."
+msgstr "La clave ha expirado."
+
+#: ui/keyselectiondialog.cpp:110
+#, kde-format
+msgid "The key is revoked."
+msgstr "La clave está revocada."
+
+#: ui/keyselectiondialog.cpp:114
+#, kde-format
+msgid "The key is disabled."
+msgstr "La clave está desactivada."
+
+#: ui/keyselectiondialog.cpp:122
+#, kde-format
+msgid "The key is not designated for encryption."
+msgstr "La clave no está desasignada para cifrado."
+
+#: ui/keyselectiondialog.cpp:128
+#, kde-format
+msgid "The key is not designated for signing."
+msgstr "La clave no está desasignada para firmado."
+
+#: ui/keyselectiondialog.cpp:134
+#, kde-format
+msgid "The key is not designated for certifying."
+msgstr "La clave no está desasignada para certificación."
+
+#: ui/keyselectiondialog.cpp:140
+#, kde-format
+msgid "The key is not designated for authentication."
+msgstr "La clave no está desasignada para autenticación."
+
+#: ui/keyselectiondialog.cpp:148
+#, kde-format
+msgid "The key is not secret."
+msgstr "La clave no es secreta."
+
+#: ui/keyselectiondialog.cpp:163
+#, kde-format
+msgid "The key is not trusted enough."
+msgstr "La clave no es lo bastante fiable."
+
+#: ui/keyselectiondialog.cpp:169
+#, kde-format
+msgid "The key can be used."
+msgstr "La clave no puede usarse."
+
+#: ui/keyselectiondialog.cpp:230
+#, kde-format
+msgid "Key ID"
+msgstr "ID de la clave"
+
+#: ui/keyselectiondialog.cpp:231
+#, kde-format
+msgid "User ID"
+msgstr "ID del usuario"
+
+#: ui/keyselectiondialog.cpp:279
+#, kde-format
+msgid "never"
+msgstr "nunca"
+
+#: ui/keyselectiondialog.cpp:289 ui/keyselectiondialog.cpp:291
+#: ui/keyselectiondialog.cpp:300 ui/keyselectiondialog.cpp:302
+#, kde-format
+msgid "unknown"
+msgstr "desconocido"
+
+#: ui/keyselectiondialog.cpp:289
+#, kde-format
+msgid "OpenPGP key for <b>%1</b>"
+msgstr "Clave OpenPGP para <b>%1</b>"
+
+#: ui/keyselectiondialog.cpp:291
+#, kde-format
+msgid "S/MIME key for <b>%1</b>"
+msgstr "Clave S/MIME para <b>%1</b>"
+
+#: ui/keyselectiondialog.cpp:298
+#, kde-format
+msgctxt "Key creation date"
+msgid "Created"
+msgstr "Creado"
+
+#: ui/keyselectiondialog.cpp:299
+#, kde-format
+msgctxt "Key Expiration date"
+msgid "Expiry"
+msgstr "Expirar"
+
+#: ui/keyselectiondialog.cpp:300
+#, kde-format
+msgctxt "Key fingerprint"
+msgid "Fingerprint"
+msgstr "Huella dactilar"
+
+#: ui/keyselectiondialog.cpp:302
+#, kde-format
+msgctxt "Key issuer"
+msgid "Issuer"
+msgstr "Emisor"
+
+#: ui/keyselectiondialog.cpp:304
+#, kde-format
+msgctxt "Key status"
+msgid "Status"
+msgstr "Estado"
+
+#: ui/keyselectiondialog.cpp:456
+#, kde-format
+msgid "Search for &External Certificates"
+msgstr "Buscar certificados &externos"
+
+#: ui/keyselectiondialog.cpp:470
+#, kde-format
+msgid "&Search for:"
+msgstr "Bu&scar:"
+
+#: ui/keyselectiondialog.cpp:494
+#, kde-format
+msgid "&Remember choice"
+msgstr "&Recordar la elección"
+
+#: ui/keyselectiondialog.cpp:497
+#, kde-format
+msgid ""
+"<qt><p>If you check this box your choice will be stored and you will not be "
+"asked again.</p></qt>"
+msgstr ""
+"<qt><p>Si marca esta casilla, se guardará su elección y no se le volverá a "
+"preguntar.</p></qt>"
+
+#: ui/keyselectiondialog.cpp:509
+#, kde-format
+msgid "&Reread Keys"
+msgstr "Volve&r a leer las claves"
+
+#: ui/keyselectiondialog.cpp:510
+#, kde-format
+msgid "&Start Certificate Manager"
+msgstr "Iniciar el ge&stor de certificados"
+
+#: ui/keyselectiondialog.cpp:628
+#, kde-format
+msgid "No backends found for listing keys. Check your installation."
+msgstr ""
+"No se encontró ningún motor para listar las claves. Compruebe su instalación."
+
+#: ui/keyselectiondialog.cpp:644
+#, kde-format
+msgid "Could not start certificate manager; please check your installation."
+msgstr ""
+"No se ha podido iniciar el gestor de certificados; compruebe su instalación."
+
+#: ui/keyselectiondialog.cpp:646
+#, kde-format
+msgid "Certificate Manager Error"
+msgstr "Error del gestor de certificados"
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Checking selected keys..."
+msgstr "Verificando las claves seleccionadas..."
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Fetching keys..."
+msgstr "Obteniendo las claves..."
+
+#: ui/keyselectiondialog.cpp:731
+#, kde-format
+msgid ""
+"<qt>One backend returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgid_plural ""
+"<qt>%1 backends returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgstr[0] ""
+"<qt>Un motor devolvió una salida truncada.<p>No se muestran todas las claves "
+"disponibles</p></qt>"
+msgstr[1] ""
+"<qt>%1 motores devolvieron una salida truncada.<p>No se muestran todas las "
+"claves disponibles</p></qt>"
+
+#: ui/keyselectiondialog.cpp:736
+#, kde-format
+msgid "Key List Result"
+msgstr "Resultado de la lista de claves"
+
+#: ui/keyselectiondialog.cpp:856
+#, kde-format
+msgid "Recheck Key"
+msgstr "Volver a comprobar la clave"
+
+#: ui/messagebox.cpp:71
+#, kde-format
+msgid "Your system does not have support for GnuPG Audit Logs"
+msgstr "Su sistema no implementa registros de auditoría de GnuPG"
+
+#: ui/messagebox.cpp:72
+#, kde-format
+msgid "System Error"
+msgstr "Error de sistema"
+
+#: ui/messagebox.cpp:79
+#, kde-format
+msgid ""
+"An error occurred while trying to retrieve the GnuPG Audit Log:\n"
+"%1"
+msgstr ""
+"Ocurrió un error al intentar recuperar el registro de auditoría de GnuPG:\n"
+"%1"
+
+#: ui/messagebox.cpp:81
+#, kde-format
+msgid "GnuPG Audit Log Error"
+msgstr "Error del registro de auditoría de GnuPG"
+
+#: ui/messagebox.cpp:88
+#, kde-format
+msgid "No GnuPG Audit Log available for this operation."
+msgstr ""
+"No hay un registro de auditoría de GnuPG disponible para esta operación."
+
+#: ui/messagebox.cpp:89
+#, kde-format
+msgid "No GnuPG Audit Log"
+msgstr "Sin registro de auditoría de GnuPG"
+
+#: ui/messagebox.cpp:109 ui/messagebox.cpp:115
+#, kde-format
+msgid "GnuPG Audit Log Viewer"
+msgstr "Visor del registro de auditoría de GnuPG"
+
+#: ui/messagebox.cpp:121
+#, kde-format
+msgid "Signing failed: %1"
+msgstr "Fallo al firmar: %1"
+
+#: ui/messagebox.cpp:122
+#, kde-format
+msgid "Signing successful"
+msgstr "Firmado exitoso"
+
+#: ui/messagebox.cpp:133
+#, kde-format
+msgid "Encryption failed: %1"
+msgstr "Fallo al cifrar: %1"
+
+#: ui/messagebox.cpp:134
+#, kde-format
+msgid "Encryption successful"
+msgstr "Cifrado exitoso"
+
+#: ui/messagebox.cpp:155
+#, kde-format
+msgid "Signing Result"
+msgstr "Resultados de la firma"
+
+#: ui/messagebox.cpp:167
+#, kde-format
+msgid "Signing Error"
+msgstr "Error de firmado"
+
+#: ui/messagebox.cpp:179 ui/messagebox.cpp:203
+#, kde-format
+msgid "Encryption Result"
+msgstr "Resultado del cifrado"
+
+#: ui/messagebox.cpp:191 ui/messagebox.cpp:215
+#, kde-format
+msgid "Encryption Error"
+msgstr "Error de cifrado"
+
+#: ui/messagebox.cpp:263
+#, kde-format
+msgid "&Show Audit Log"
+msgstr "Mo&strar el registro de auditoría"
+
+#: ui/progressdialog.cpp:91
+#, kde-format
+msgid "%1: %2"
+msgstr "%1: %2"
--- /dev/null
+# translation of libkleopatra.po to Estonian
+# Marek Laane <bald@starman.ee>, 2004-2007.
+# Hasso Tepper <hasso@kde.org>, 2004.
+# Marek Laane <bald@smail.ee>, 2008-2009, 2010, 2016.
+msgid ""
+msgstr ""
+"Project-Id-Version: libkleopatra\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2017-07-12 06:56+0200\n"
+"PO-Revision-Date: 2016-08-19 19:50+0300\n"
+"Last-Translator: Marek Laane <qiilaq69@gmail.com>\n"
+"Language-Team: Estonian <kde-i18n-doc@kde.org>\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"
+
+#: kleo/checksumdefinition.cpp:107
+#, kde-format
+msgid "Error in checksum definition %1: %2"
+msgstr "Viga kontrollsumma definitsioonis %1: %2"
+
+#: kleo/checksumdefinition.cpp:157
+#, kde-format
+msgid "Cannot use both %f and | in '%1'"
+msgstr "%f ja | korraga kasutamine '%1' puhul ei ole võimalik"
+
+#: kleo/checksumdefinition.cpp:167
+#, kde-format
+msgid "Quoting error in '%1' entry"
+msgstr "Tsiteerimisviga kirjes '%1'"
+
+#: kleo/checksumdefinition.cpp:170
+#, kde-format
+msgid "'%1' too complex (would need shell)"
+msgstr "'%1' on liiga keeruline (vajab shelli)"
+
+#: kleo/checksumdefinition.cpp:174
+#, kde-format
+msgid "'%1' entry is empty/missing"
+msgstr "Kirje '%1' on tühi või puudub"
+
+#: kleo/checksumdefinition.cpp:183
+#, kde-format
+msgid "'%1' empty or not found"
+msgstr "'%1' on tühi või seda ei leitud"
+
+#: kleo/checksumdefinition.cpp:222
+#, kde-format
+msgid "'id' entry is empty/missing"
+msgstr "'id' kirje on tühi või puudu"
+
+#: kleo/checksumdefinition.cpp:225
+#, kde-format
+msgid "'output-file' entry is empty/missing"
+msgstr "'output-file' kirje on tühi või puudu"
+
+#: kleo/checksumdefinition.cpp:228
+#, kde-format
+msgid "'file-patterns' entry is empty/missing"
+msgstr "'file-patterns' kirje on tühi või puudu"
+
+#: kleo/checksumdefinition.cpp:395
+#, kde-format
+msgid "Caught unknown exception in group %1"
+msgstr "Ilmnes tundmatu erind rühmas %1"
+
+#: kleo/dn.cpp:507
+#, kde-format
+msgid "Common name"
+msgstr "Ühine nimi"
+
+#: kleo/dn.cpp:508
+#, kde-format
+msgid "Surname"
+msgstr "Perekonnanimi"
+
+#: kleo/dn.cpp:509
+#, kde-format
+msgid "Given name"
+msgstr "Eesnimi"
+
+#: kleo/dn.cpp:510
+#, kde-format
+msgid "Location"
+msgstr "Asukoht"
+
+#: kleo/dn.cpp:511
+#, kde-format
+msgid "Title"
+msgstr "Tiitel"
+
+#: kleo/dn.cpp:512
+#, kde-format
+msgid "Organizational unit"
+msgstr "Allüksus"
+
+#: kleo/dn.cpp:513
+#, kde-format
+msgid "Organization"
+msgstr "Organisatsioon"
+
+#: kleo/dn.cpp:514
+#, kde-format
+msgid "Postal code"
+msgstr "Postikood"
+
+#: kleo/dn.cpp:515
+#, kde-format
+msgid "Country code"
+msgstr "Riigikood"
+
+#: kleo/dn.cpp:516
+#, kde-format
+msgid "State or province"
+msgstr "Maakond/provints"
+
+#: kleo/dn.cpp:517
+#, kde-format
+msgid "Domain component"
+msgstr "Domeen"
+
+#: kleo/dn.cpp:518
+#, kde-format
+msgid "Business category"
+msgstr "Ärivaldkond"
+
+#: kleo/dn.cpp:519
+#, kde-format
+msgid "Email address"
+msgstr "E-posti aadress"
+
+#: kleo/dn.cpp:520
+#, kde-format
+msgid "Mail address"
+msgstr "Postiaadress"
+
+#: kleo/dn.cpp:521
+#, kde-format
+msgid "Mobile phone number"
+msgstr "Mobiilinumber"
+
+#: kleo/dn.cpp:522
+#, kde-format
+msgid "Telephone number"
+msgstr "Telefoninumber"
+
+#: kleo/dn.cpp:523
+#, kde-format
+msgid "Fax number"
+msgstr "Faksinumber"
+
+#: kleo/dn.cpp:524
+#, kde-format
+msgid "Street address"
+msgstr "Postiaadress"
+
+#: kleo/dn.cpp:525
+#, kde-format
+msgid "Unique ID"
+msgstr "Unikaalne ID"
+
+#: kleo/enum.cpp:57
+#, kde-format
+msgid "Inline OpenPGP (deprecated)"
+msgstr "Sisene OpenPGP (iganenud)"
+
+#: kleo/enum.cpp:62
+#, kde-format
+msgid "OpenPGP/MIME"
+msgstr "OpenPGP/MIME"
+
+#: kleo/enum.cpp:67 ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "S/MIME"
+msgstr "S/MIME"
+
+#: kleo/enum.cpp:72
+#, kde-format
+msgid "S/MIME Opaque"
+msgstr "S/MIME läbipaistmatu"
+
+#: kleo/enum.cpp:104
+#, kde-format
+msgid "Any"
+msgstr "Suvaline"
+
+#: kleo/enum.cpp:177
+#, kde-format
+msgid "Never Encrypt"
+msgstr "Kunagi ei krüptita"
+
+#: kleo/enum.cpp:179
+#, kde-format
+msgid "Always Encrypt"
+msgstr "Alati krüptitakse"
+
+#: kleo/enum.cpp:181
+#, kde-format
+msgid "Always Encrypt If Possible"
+msgstr "Võimalusel krüptitakse alati"
+
+#: kleo/enum.cpp:183 kleo/enum.cpp:240
+#, kde-format
+msgid "Ask"
+msgstr "Küsitakse"
+
+#: kleo/enum.cpp:185 kleo/enum.cpp:242
+#, kde-format
+msgid "Ask Whenever Possible"
+msgstr "Võimalusel küsitakse alati"
+
+#: kleo/enum.cpp:187
+#, kde-kuit-format
+msgctxt "no specific preference"
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>puudub</placeholder>"
+
+#: kleo/enum.cpp:234
+#, kde-format
+msgid "Never Sign"
+msgstr "Kunagi ei signeerita"
+
+#: kleo/enum.cpp:236
+#, kde-format
+msgid "Always Sign"
+msgstr "Alati signeeritakse"
+
+#: kleo/enum.cpp:238
+#, kde-format
+msgid "Always Sign If Possible"
+msgstr "Võimalusel signeeritakse alati"
+
+#: kleo/enum.cpp:244
+#, kde-format
+msgctxt "no specific preference"
+msgid "<none>"
+msgstr "<puudub>"
+
+#: kleo/keyfiltermanager.cpp:85
+#, kde-format
+msgid "All Certificates"
+msgstr "Kõik sertifikaadid"
+
+#: kleo/keyfiltermanager.cpp:100
+#, kde-format
+msgid "My Certificates"
+msgstr "Minu sertifikaadid"
+
+#: kleo/keyfiltermanager.cpp:118
+#, kde-format
+msgid "Trusted Certificates"
+msgstr "Usaldusväärsed sertifikaadid"
+
+#: kleo/keyfiltermanager.cpp:135
+#, fuzzy, kde-format
+#| msgid "Trusted Certificates"
+msgid "Fully Trusted Certificates"
+msgstr "Usaldusväärsed sertifikaadid"
+
+#: kleo/keyfiltermanager.cpp:152
+#, kde-format
+msgid "Other Certificates"
+msgstr "Muud sertifikaadid"
+
+#: kleo/keyfiltermanager.cpp:166
+#, fuzzy, kde-format
+#| msgid "All Certificates"
+msgid "VS-compliant Certificates"
+msgstr "Kõik sertifikaadid"
+
+#: kleo/keyfiltermanager.cpp:184
+#, fuzzy, kde-format
+#| msgid "Trusted Certificates"
+msgid "Not validated Certificates"
+msgstr "Usaldusväärsed sertifikaadid"
+
+#: ui/auditlogviewer.cpp:49
+#, kde-format
+msgid "View GnuPG Audit Log"
+msgstr "Näita GnuPG auditi logi"
+
+#: ui/auditlogviewer.cpp:53
+#, kde-format
+msgid "&Copy to Clipboard"
+msgstr "&Kopeeri lõikepuhvrisse"
+
+#: ui/auditlogviewer.cpp:59
+#, kde-format
+msgid "&Save to Disk..."
+msgstr "&Salvesta kettale..."
+
+#: ui/auditlogviewer.cpp:95
+#, kde-format
+msgid "Choose File to Save GnuPG Audit Log to"
+msgstr "GnuPG auditi logi salvestamiseks kasutatava faili valik"
+
+#: ui/auditlogviewer.cpp:118
+#, kde-format
+msgid "Could not save to file \"%1\": %2"
+msgstr "Faili \"%1\" salvestamine nurjus: %2"
+
+#: ui/auditlogviewer.cpp:120
+#, kde-format
+msgid "File Save Error"
+msgstr "Faili salvestamise viga"
+
+#: ui/cryptoconfigdialog.cpp:44
+#, kde-format
+msgid "Configure GnuPG Backend"
+msgstr "Seadista GnuPG taustaprogramm"
+
+#: ui/cryptoconfigdialog.cpp:55
+#, kde-format
+msgid "&Reset"
+msgstr "Lä&htesta"
+
+#: ui/cryptoconfigmodule.cpp:160
+#, kde-format
+msgid "GpgConf Error"
+msgstr "GpgConfi viga"
+
+#: ui/cryptoconfigmodule.cpp:216
+#, kde-format
+msgid ""
+"The gpgconf tool used to provide the information for this dialog does not "
+"seem to be installed properly. It did not return any components. Try running "
+"\"%1\" on the command line for more information."
+msgstr ""
+"Programm gpgconf, mis pidanuks jagama sellele dialoogile teavet, ei ole "
+"nähtavasti korrektselt paigaldatud. Ta ei tagastanud ühtegi komponenti. "
+"Proovi käivitada \"%1\" käsurealt, mis peaks andma rohkem teavet."
+
+#: ui/cryptoconfigmodule.cpp:496
+#, kde-format
+msgctxt ""
+"Translate this to 'yes' or 'no' (use the English words!) depending on "
+"whether your language uses Sentence style capitalisation in GUI labels (yes) "
+"or not (no). Context: We get some backend strings in that have the wrong "
+"capitalizaion (in English, at least) so we need to force the first character "
+"to upper-case. It is this behaviour you can control for your language with "
+"this translation."
+msgid "yes"
+msgstr "yes"
+
+#: ui/cryptoconfigmodule.cpp:546
+#, kde-format
+msgid "0 - None"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:547
+#, kde-format
+msgid "1 - Basic"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:548
+#, kde-format
+msgid "2 - Verbose"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:549
+#, kde-format
+msgid "3 - More Verbose"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:550
+#, kde-format
+msgid "4 - All"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:559
+#, kde-format
+msgid "Set the debugging level to"
+msgstr "Silumistasemeks määratakse"
+
+#: ui/cryptoconfigmodule.cpp:787
+#, kde-format
+msgid "Show..."
+msgstr "Näita..."
+
+#: ui/cryptoconfigmodule.cpp:787 ui/cryptoconfigmodule.cpp:876
+#, kde-format
+msgid "Edit..."
+msgstr "Muuda..."
+
+#: ui/cryptoconfigmodule.cpp:841
+#, kde-format
+msgid "Configure LDAP Servers"
+msgstr "LDAP serverite seadistamine"
+
+#: ui/cryptoconfigmodule.cpp:862
+#, fuzzy, kde-format
+#| msgid "No server configured yet"
+msgid "None configured"
+msgstr "Serverit pole veel seadistatud"
+
+#: ui/cryptoconfigmodule.cpp:864
+#, kde-format
+msgid "1 server configured"
+msgid_plural "%1 servers configured"
+msgstr[0] "1 server seadistatud"
+msgstr[1] "%1 serverit seadistatud"
+
+#: ui/cryptoconfigmodule.cpp:879
+#, kde-format
+msgid "Use keyserver at"
+msgstr "Kasutatakse võtmeserverit"
+
+#: ui/cryptoconfigmodule.cpp:968
+#, kde-format
+msgid "Configure Keyservers"
+msgstr "Võtmeserverite seadistamine"
+
+#: ui/directoryserviceswidget.cpp:67
+#, kde-format
+msgctxt "default server name, keep it a valid domain name, ie. no spaces"
+msgid "server"
+msgstr "server"
+
+#: ui/directoryserviceswidget.cpp:95
+#, kde-format
+msgid "hkp"
+msgstr "hkp"
+
+#: ui/directoryserviceswidget.cpp:96
+#, kde-format
+msgid "http"
+msgstr "http"
+
+#: ui/directoryserviceswidget.cpp:97
+#, kde-format
+msgid "https"
+msgstr "https"
+
+#: ui/directoryserviceswidget.cpp:98
+#, kde-format
+msgid "ftp"
+msgstr "ftp"
+
+#: ui/directoryserviceswidget.cpp:99
+#, kde-format
+msgid "ftps"
+msgstr "ftps"
+
+#: ui/directoryserviceswidget.cpp:100
+#, kde-format
+msgid "ldap"
+msgstr "ldap"
+
+#: ui/directoryserviceswidget.cpp:101
+#, kde-format
+msgid "ldaps"
+msgstr "ldaps"
+
+#: ui/directoryserviceswidget.cpp:588
+#, kde-format
+msgid "Server Name"
+msgstr "Serveri nimi"
+
+#: ui/directoryserviceswidget.cpp:589
+#, kde-format
+msgid "Server Port"
+msgstr "Serveri port"
+
+#: ui/directoryserviceswidget.cpp:590
+#, kde-format
+msgid "Base DN"
+msgstr "Baas DN"
+
+#: ui/directoryserviceswidget.cpp:591
+#, kde-format
+msgid "User Name"
+msgstr "Kasutajanimi"
+
+#: ui/directoryserviceswidget.cpp:592
+#, kde-format
+msgid "Password"
+msgstr "Parool"
+
+#: ui/directoryserviceswidget.cpp:614
+#, kde-format
+msgid "(read-only)"
+msgstr "(kirjutuskaitstud)"
+
+#: ui/directoryserviceswidget.cpp:616
+#, kde-format
+msgctxt "amended tooltip; %1: original tooltip"
+msgid "%1 (read-only)"
+msgstr "%1 (kirjutuskaitstud)"
+
+#: ui/directoryserviceswidget.cpp:739
+#, kde-format
+msgid ""
+"Enter the name or IP address of the server hosting the directory service."
+msgstr "Sisesta kataloogiteenust majutava serveri nimi või IP-aadress."
+
+#: ui/directoryserviceswidget.cpp:741
+#, kde-format
+msgid ""
+"<b>(Optional, the default is fine in most cases)</b> Pick the port number "
+"the directory service is listening on."
+msgstr ""
+"<b>(Lisavõimalus, vaikeväärtus peaks enamasti sobima)</b> Vali pordinumber, "
+"mida kataloogiteenus jälgib."
+
+#: ui/directoryserviceswidget.cpp:744
+#, kde-format
+msgid ""
+"<b>(Only for LDAP)</b> Enter the base DN for this LDAP server to limit "
+"searches to only that subtree of the directory."
+msgstr ""
+"<b>(Ainult LDAP-i puhul)</b> Sisesta selle LDAP-serveri baas-DN, et piirata "
+"otsinguid ainult kataloogi selle alampuuga."
+
+#: ui/directoryserviceswidget.cpp:747
+#, kde-format
+msgid "<b>(Optional)</b> Enter your user name here, if needed."
+msgstr "<b>(Lisavõimalus)</b> Sisesta vajaduse korral kasutajanimi."
+
+#: ui/directoryserviceswidget.cpp:749
+#, kde-format
+msgid ""
+"<b>(Optional, not recommended)</b> Enter your password here, if needed. Note "
+"that the password will be saved in the clear in a config file in your home "
+"directory."
+msgstr ""
+"<b>(Lisavõimalus, pole soovitatav)</b> Sisesta vajaduse korral parool. Pane "
+"tähele, et parool salvestatakse sinu kodukataloogi seadistustefaili ilma "
+"seda mingil kujul varjamata."
+
+#. i18n: ectx: property (windowTitle), widget (QWidget, DirectoryServicesWidget)
+#: ui/directoryserviceswidget.ui:14
+#, kde-format
+msgid "Directory Services Configuration"
+msgstr "Kataloogi teenuse seadistamine"
+
+#. i18n: ectx: property (text), widget (QLabel, pgpKSLabel)
+#: ui/directoryserviceswidget.ui:22
+#, fuzzy, kde-format
+#| msgid "OpenPGP Key Selection"
+msgid "OpenPGP Keyserver:"
+msgstr "OpenPGP võtme valik"
+
+#. i18n: ectx: property (title), widget (QGroupBox, x500LA)
+#: ui/directoryserviceswidget.ui:35
+#, fuzzy, kde-format
+#| msgid "Directory services:"
+msgid "X509 Directory services:"
+msgstr "Kataloogi teenused:"
+
+#. i18n: ectx: property (whatsThis), widget (QTreeView, treeView)
+#: ui/directoryserviceswidget.ui:43
+#, fuzzy, kde-format
+#| msgid ""
+#| "This is a list of all directory services that are configured for use with "
+#| "X.509 and OpenPGP."
+msgid ""
+"This is a list of all directory services that are configured for use with "
+"X.509."
+msgstr ""
+"See on kõigi kataloogiteenuste nimekiri, mis on seadistatud töötama X.509 ja "
+"OpenPGP abil."
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:70
+#, kde-format
+msgid "Click to add a service"
+msgstr "Klõpsa teenuse lisamiseks"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:73
+#, kde-format
+msgid ""
+"Click this button to create a new directory service entry as a clone of the "
+"currently selected one (or with default values, if no other is selected). "
+"You can then configure details in the table on the left hand."
+msgstr ""
+"Sellele nupule klõpsates luuakse uus kataloogiteenuse kirje, mis on "
+"parajasti valitud kirje koopia (või vaikeväärtustega, kui midagi pole "
+"valitud). Seejärel saab vasakul asuvas tabelis seadistada selle üksikasju."
+
+#. i18n: ectx: property (text), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:76
+#, kde-format
+msgid "New"
+msgstr "Uus"
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:92
+#, kde-format
+msgid "Click to remove the currently selected service"
+msgstr "Valitud teenuse eemaldamiseks klõpsa siia"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:95
+#, kde-format
+msgid ""
+"Click this button to remove the currently selected directory service. The "
+"change will only take effect once you acknowledge the main configuration "
+"dialog."
+msgstr ""
+"Sellele nupule klõpsates eemaldatakse parajasti valitud kataloogiteenus. "
+"Muudatus rakendub alles pärast seda, kui oled kinnitanud "
+"seadistustedialoogis tehtud muudatused."
+
+#. i18n: ectx: property (text), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:98
+#, kde-format
+msgid "Delete"
+msgstr "Kustuta"
+
+#. i18n: ectx: property (whatsThis), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:128
+#, kde-format
+msgid ""
+"Use this option to switch display of username and password information on or "
+"off in the above table."
+msgstr ""
+"Selle abil saab lülitada kasutajanime ja parooli näitamise sisse ja välja."
+
+#. i18n: ectx: property (text), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:131
+#, kde-format
+msgid "Show user and password information"
+msgstr "Näita kasutaja ja parooli teavet"
+
+#: ui/dnattributeorderconfigwidget.cpp:73
+#, kde-format
+msgid "Description"
+msgstr "Kirjeldus"
+
+#: ui/dnattributeorderconfigwidget.cpp:91
+#, kde-format
+msgid "Available attributes:"
+msgstr "Saadaolevad atribuudid:"
+
+#: ui/dnattributeorderconfigwidget.cpp:92
+#, kde-format
+msgid "Current attribute order:"
+msgstr "Praegune atribuutide järjekord:"
+
+#: ui/dnattributeorderconfigwidget.cpp:112
+#, kde-format
+msgid "All others"
+msgstr "Kõik muud"
+
+#: ui/dnattributeorderconfigwidget.cpp:129
+#, kde-format
+msgid "Move to top"
+msgstr "Liiguta esimeseks"
+
+#: ui/dnattributeorderconfigwidget.cpp:130
+#, kde-format
+msgid "Move one up"
+msgstr "Liiguta üles"
+
+#: ui/dnattributeorderconfigwidget.cpp:131
+#, kde-format
+msgid "Remove from current attribute order"
+msgstr "Eemalda praegusest atribuutide järjekorrast"
+
+#: ui/dnattributeorderconfigwidget.cpp:132
+#, kde-format
+msgid "Add to current attribute order"
+msgstr "Lisa praegusse atribuutide järjekorda"
+
+#: ui/dnattributeorderconfigwidget.cpp:133
+#, kde-format
+msgid "Move one down"
+msgstr "Liiguta alla"
+
+#: ui/dnattributeorderconfigwidget.cpp:134
+#, kde-format
+msgid "Move to bottom"
+msgstr "Liiguta viimaseks"
+
+#: ui/keyapprovaldialog.cpp:87
+#, kde-kuit-format
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>puudub</placeholder>"
+
+#: ui/keyapprovaldialog.cpp:88
+#, kde-format
+msgid "Never Encrypt with This Key"
+msgstr "Kunagi ei krüptita selle võtmega"
+
+#: ui/keyapprovaldialog.cpp:89
+#, kde-format
+msgid "Always Encrypt with This Key"
+msgstr "Alati krüptitakse selle võtmega"
+
+#: ui/keyapprovaldialog.cpp:90
+#, kde-format
+msgid "Encrypt Whenever Encryption is Possible"
+msgstr "Krüptitakse alati, kui võimalik"
+
+#: ui/keyapprovaldialog.cpp:91
+#, kde-format
+msgid "Always Ask"
+msgstr "Alati küsitakse"
+
+#: ui/keyapprovaldialog.cpp:92
+#, kde-format
+msgid "Ask Whenever Encryption is Possible"
+msgstr "Alati küsitakse, kui krüptimine on võimalik"
+
+#: ui/keyapprovaldialog.cpp:113
+#, kde-format
+msgid "Encryption Key Approval"
+msgstr "Krüptovõtme kinnitus"
+
+#: ui/keyapprovaldialog.cpp:129
+#, kde-format
+msgid "The following keys will be used for encryption:"
+msgstr "Krüptimiseks kasutatakse järgmisi võtmeid:"
+
+#: ui/keyapprovaldialog.cpp:145
+#, kde-format
+msgid "Your keys:"
+msgstr "Sinu võtmed:"
+
+#: ui/keyapprovaldialog.cpp:157
+#, kde-format
+msgid "Recipient:"
+msgstr "Vastuvõtja:"
+
+#: ui/keyapprovaldialog.cpp:162
+#, kde-format
+msgid "Encryption keys:"
+msgstr "Krüptovõtmed:"
+
+#: ui/keyapprovaldialog.cpp:169
+#, kde-format
+msgid "Encryption preference:"
+msgstr "Krüptimise eelistus:"
+
+#: ui/keyrequester.cpp:118
+#, kde-format
+msgid "Clear"
+msgstr "Puhasta"
+
+#: ui/keyrequester.cpp:121
+#, kde-format
+msgid "Change..."
+msgstr "Muuda..."
+
+#: ui/keyrequester.cpp:232 ui/keyselectiondialog.cpp:256
+#, kde-kuit-format
+msgid "<placeholder>unknown</placeholder>"
+msgstr "<placeholder>tundmatu</placeholder>"
+
+#: ui/keyrequester.cpp:246 ui/keyselectiondialog.cpp:657
+#, kde-format
+msgid ""
+"<qt><p>An error occurred while fetching the keys from the backend:</p><p><b>"
+"%1</b></p></qt>"
+msgstr ""
+"<qt><p>Tekkis viga võtmete hankimisel taustaprogrammilt:</p><p><b>%1</b></"
+"p></qt>"
+
+#: ui/keyrequester.cpp:251 ui/keyrequester.cpp:283 ui/keyrequester.cpp:306
+#: ui/keyselectiondialog.cpp:630 ui/keyselectiondialog.cpp:662
+#, kde-format
+msgid "Key Listing Failed"
+msgstr "Võtmete hankimine nurjus"
+
+#: ui/keyrequester.cpp:281
+#, kde-format
+msgid ""
+"The OpenPGP backend does not support listing keys. Check your installation."
+msgstr ""
+"OpenPGP taustarakendus ei toeta võtmete hankimist. Kontrolli paigaldust."
+
+#: ui/keyrequester.cpp:304
+#, kde-format
+msgid ""
+"The S/MIME backend does not support listing keys. Check your installation."
+msgstr ""
+"S/MIME taustarakendus ei toeta võtmete hankimist. Kontrolli paigaldust."
+
+#: ui/keyrequester.cpp:426
+#, kde-format
+msgid "OpenPGP Key Selection"
+msgstr "OpenPGP võtme valik"
+
+#: ui/keyrequester.cpp:427
+#, kde-format
+msgid "Please select an OpenPGP key to use."
+msgstr "Palun vali kasutatav OpenPGP võti."
+
+#: ui/keyrequester.cpp:429
+#, kde-format
+msgid "S/MIME Key Selection"
+msgstr "S/MIME võtme valik"
+
+#: ui/keyrequester.cpp:430
+#, kde-format
+msgid "Please select an S/MIME key to use."
+msgstr "Palun vali kasutatav S/MIME võti."
+
+#: ui/keyrequester.cpp:432
+#, kde-format
+msgid "Key Selection"
+msgstr "Võtme valik"
+
+#: ui/keyrequester.cpp:433
+#, kde-format
+msgid "Please select an (OpenPGP or S/MIME) key to use."
+msgstr "Palun vali kasutatav (OpenPGP või S/MIME) võti."
+
+#: ui/keyselectioncombo.cpp:195
+#, fuzzy, kde-format
+#| msgctxt "Name <email> (type, created: date)"
+#| msgid "%1 (%2, created: %3)"
+msgctxt "Name <email> (validity, type, created: date)"
+msgid "%1 (%2, %3, created: %4)"
+msgstr "%1 (%2, loodud: %3)"
+
+#: ui/keyselectioncombo.cpp:196
+#, kde-format
+msgctxt "Name <email>"
+msgid "%1 <%2>"
+msgstr "%1 <%2>"
+
+#: ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "OpenPGP"
+msgstr "OpenPGP"
+
+#: ui/keyselectioncombo.cpp:347
+#, kde-format
+msgid "Loading keys ..."
+msgstr "Võtmete laadimine..."
+
+#: ui/keyselectiondialog.cpp:98
+#, kde-format
+msgid "The key is not valid."
+msgstr "Võti ei ole kehtiv."
+
+#: ui/keyselectiondialog.cpp:106
+#, kde-format
+msgid "The key is expired."
+msgstr "Võti on aegunud."
+
+#: ui/keyselectiondialog.cpp:110
+#, kde-format
+msgid "The key is revoked."
+msgstr "Võti on tühistatud."
+
+#: ui/keyselectiondialog.cpp:114
+#, kde-format
+msgid "The key is disabled."
+msgstr "Võti on keelatud."
+
+#: ui/keyselectiondialog.cpp:122
+#, kde-format
+msgid "The key is not designated for encryption."
+msgstr "Võti ei ole mõeldud krüptimiseks."
+
+#: ui/keyselectiondialog.cpp:128
+#, kde-format
+msgid "The key is not designated for signing."
+msgstr "Võti ei ole mõeldud allkirjastamiseks."
+
+#: ui/keyselectiondialog.cpp:134
+#, kde-format
+msgid "The key is not designated for certifying."
+msgstr "Võti ei ole mõeldud sertifitseerimiseks."
+
+#: ui/keyselectiondialog.cpp:140
+#, kde-format
+msgid "The key is not designated for authentication."
+msgstr "Võti ei ole mõeldud autentimiseks."
+
+#: ui/keyselectiondialog.cpp:148
+#, kde-format
+msgid "The key is not secret."
+msgstr "Võti ei ole salajane."
+
+#: ui/keyselectiondialog.cpp:163
+#, kde-format
+msgid "The key is not trusted enough."
+msgstr "Võti ei ole piisavalt usaldatav."
+
+#: ui/keyselectiondialog.cpp:169
+#, kde-format
+msgid "The key can be used."
+msgstr "Võtit ei saa kasutada."
+
+#: ui/keyselectiondialog.cpp:230
+#, kde-format
+msgid "Key ID"
+msgstr "Võtme ID"
+
+#: ui/keyselectiondialog.cpp:231
+#, kde-format
+msgid "User ID"
+msgstr "Kasutaja ID"
+
+#: ui/keyselectiondialog.cpp:279
+#, kde-format
+msgid "never"
+msgstr "mitte kunagi"
+
+#: ui/keyselectiondialog.cpp:289 ui/keyselectiondialog.cpp:291
+#: ui/keyselectiondialog.cpp:300 ui/keyselectiondialog.cpp:302
+#, kde-format
+msgid "unknown"
+msgstr "tundmatu"
+
+#: ui/keyselectiondialog.cpp:289
+#, kde-format
+msgid "OpenPGP key for <b>%1</b>"
+msgstr "<b>%1</b> OpenPGP võti"
+
+#: ui/keyselectiondialog.cpp:291
+#, kde-format
+msgid "S/MIME key for <b>%1</b>"
+msgstr "<b>%1</b> S/MIME võti"
+
+#: ui/keyselectiondialog.cpp:298
+#, kde-format
+msgctxt "Key creation date"
+msgid "Created"
+msgstr "Loomise aeg"
+
+#: ui/keyselectiondialog.cpp:299
+#, kde-format
+msgctxt "Key Expiration date"
+msgid "Expiry"
+msgstr "Aegumisaeg"
+
+#: ui/keyselectiondialog.cpp:300
+#, kde-format
+msgctxt "Key fingerprint"
+msgid "Fingerprint"
+msgstr "Sõrmejälg"
+
+#: ui/keyselectiondialog.cpp:302
+#, kde-format
+msgctxt "Key issuer"
+msgid "Issuer"
+msgstr "Väljaandja"
+
+#: ui/keyselectiondialog.cpp:304
+#, kde-format
+msgctxt "Key status"
+msgid "Status"
+msgstr "Olek"
+
+#: ui/keyselectiondialog.cpp:456
+#, kde-format
+msgid "Search for &External Certificates"
+msgstr "Otsi välis&eid sertifikaate"
+
+#: ui/keyselectiondialog.cpp:470
+#, kde-format
+msgid "&Search for:"
+msgstr "Ot&sitakse:"
+
+#: ui/keyselectiondialog.cpp:494
+#, kde-format
+msgid "&Remember choice"
+msgstr "Vali&k jäetakse meelde"
+
+#: ui/keyselectiondialog.cpp:497
+#, kde-format
+msgid ""
+"<qt><p>If you check this box your choice will be stored and you will not be "
+"asked again.</p></qt>"
+msgstr ""
+"<qt><p>Selle kasti märkimisel salvestatakse sinu valik ja sinu käest enam "
+"seda ei pärita.</p></qt>"
+
+#: ui/keyselectiondialog.cpp:509
+#, kde-format
+msgid "&Reread Keys"
+msgstr "Loe &võtmed uuesti"
+
+#: ui/keyselectiondialog.cpp:510
+#, kde-format
+msgid "&Start Certificate Manager"
+msgstr "&Käivita sertifikaadihaldur"
+
+#: ui/keyselectiondialog.cpp:628
+#, kde-format
+msgid "No backends found for listing keys. Check your installation."
+msgstr "Võtmete hankimiseks ei leitud taustarakendust. Kontrolli paigaldust."
+
+#: ui/keyselectiondialog.cpp:644
+#, kde-format
+msgid "Could not start certificate manager; please check your installation."
+msgstr "Sertifikaadihalduri käivitamine nurjus. Palun kontrolli paigaldust."
+
+#: ui/keyselectiondialog.cpp:646
+#, kde-format
+msgid "Certificate Manager Error"
+msgstr "Sertifikaadihalduri viga"
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Checking selected keys..."
+msgstr "Valitud võtmete kontroll..."
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Fetching keys..."
+msgstr "Võtmete tõmbamine..."
+
+#: ui/keyselectiondialog.cpp:731
+#, kde-format
+msgid ""
+"<qt>One backend returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgid_plural ""
+"<qt>%1 backends returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgstr[0] ""
+"<qt>Üks taustaprogramm tagastas kärbitud väljundi.<p>Kõiki saadaolevaid "
+"võtmeid ei näidata</p></qt>"
+msgstr[1] ""
+"<qt>%1 taustaprogrammi tagastasid kärbitud väljundi.<p>Kõiki saadaolevaid "
+"võtmeid ei näidata</p></qt>"
+
+#: ui/keyselectiondialog.cpp:736
+#, kde-format
+msgid "Key List Result"
+msgstr "Võtmete hankimise tulemus"
+
+#: ui/keyselectiondialog.cpp:856
+#, kde-format
+msgid "Recheck Key"
+msgstr "Võtmete uus kontroll"
+
+#: ui/messagebox.cpp:71
+#, kde-format
+msgid "Your system does not have support for GnuPG Audit Logs"
+msgstr "Sinu süsteem ei toeta GnuPG auditi logi"
+
+#: ui/messagebox.cpp:72
+#, kde-format
+msgid "System Error"
+msgstr "Süsteemi viga"
+
+#: ui/messagebox.cpp:79
+#, kde-format
+msgid ""
+"An error occurred while trying to retrieve the GnuPG Audit Log:\n"
+"%1"
+msgstr ""
+"GnuPG auditi logi hankimisel tekkis viga:\n"
+"%1"
+
+#: ui/messagebox.cpp:81
+#, kde-format
+msgid "GnuPG Audit Log Error"
+msgstr "GnuPG auditi logi viga"
+
+#: ui/messagebox.cpp:88
+#, kde-format
+msgid "No GnuPG Audit Log available for this operation."
+msgstr "Selleks toiminguks pole saadaval GnuPG auditi logi."
+
+#: ui/messagebox.cpp:89
+#, kde-format
+msgid "No GnuPG Audit Log"
+msgstr "GnuPG auditi logi puudub"
+
+#: ui/messagebox.cpp:109 ui/messagebox.cpp:115
+#, kde-format
+msgid "GnuPG Audit Log Viewer"
+msgstr "GnuPG auditi logi näitaja"
+
+#: ui/messagebox.cpp:121
+#, kde-format
+msgid "Signing failed: %1"
+msgstr "Signeerimine nurjus: %1"
+
+#: ui/messagebox.cpp:122
+#, kde-format
+msgid "Signing successful"
+msgstr "Signeerimine oli edukas"
+
+#: ui/messagebox.cpp:133
+#, kde-format
+msgid "Encryption failed: %1"
+msgstr "Krüptimine nurjus: %1"
+
+#: ui/messagebox.cpp:134
+#, kde-format
+msgid "Encryption successful"
+msgstr "Krüptimine oli edukas"
+
+#: ui/messagebox.cpp:155
+#, kde-format
+msgid "Signing Result"
+msgstr "Signeerimise tulemused"
+
+#: ui/messagebox.cpp:167
+#, kde-format
+msgid "Signing Error"
+msgstr "Signeerimise viga"
+
+#: ui/messagebox.cpp:179 ui/messagebox.cpp:203
+#, kde-format
+msgid "Encryption Result"
+msgstr "Krüptimise tulemus"
+
+#: ui/messagebox.cpp:191 ui/messagebox.cpp:215
+#, kde-format
+msgid "Encryption Error"
+msgstr "Krüptimise viga"
+
+#: ui/messagebox.cpp:263
+#, kde-format
+msgid "&Show Audit Log"
+msgstr "&Näita auditi logi"
+
+#: ui/progressdialog.cpp:91
+#, kde-format
+msgid "%1: %2"
+msgstr "%1: %2"
+
+#~ msgctxt "New X.509 Directory Server"
+#~ msgid "X.509"
+#~ msgstr "X.509"
+
+#~ msgctxt "New OpenPGP Directory Server"
+#~ msgid "OpenPGP"
+#~ msgstr "OpenPGP"
+
+#~ msgid "Scheme"
+#~ msgstr "Skeem"
+
+#~ msgid "X.509"
+#~ msgstr "X.509"
+
+#~ msgid ""
+#~ "Select the access scheme (scheme) that the directory service is available "
+#~ "through."
+#~ msgstr "Vali juurdepääsuskeem, mille kaudu on kataloogiteenus kättesaadav."
+
+#~ msgid ""
+#~ "Check this column if this directory service is providing S/MIME (X.509) "
+#~ "certificates."
+#~ msgstr ""
+#~ "Märgista veerg, kui kataloogiteenus pakub S/MIME (X.509) sertifikaate."
+
+#~ msgid ""
+#~ "Check this column if this directory service is providing OpenPGP "
+#~ "certificates."
+#~ msgstr "Märgista veerg, kui kataloogiteenus pakub OpenPGP sertifikaate."
+
+#~ msgid "0 - None (no debugging at all)"
+#~ msgstr "0 - puudub (midagi ei siluta)"
+
+#~ msgid "1 - Basic (some basic debug messages)"
+#~ msgstr "1 - lihtne (teatud põhilised silumisteated)"
+
+#~ msgid "2 - Advanced (more verbose debug messages)"
+#~ msgstr "2 - põhjalikum (teaberohkemad silumisteated)"
+
+#~ msgid "3 - Expert (even more detailed messages)"
+#~ msgstr "3 - ekspert (veel üksikasjalikumad silumisteated)"
+
+#~ msgid "4 - Guru (all of the debug messages you can get)"
+#~ msgstr "4 - guru (kõik vähegi võimalikud silumisteated)"
+
+#~ msgid "General"
+#~ msgstr "Üldine"
+
+#~ msgid "Chiasmus"
+#~ msgstr "Chiasmus"
+
+#~ msgid "Chiasmus command line tool"
+#~ msgstr "Chiasmuse käsureatööriist"
+
+#~ msgid "Unsupported protocol \"%1\""
+#~ msgstr "Toetamata protokoll \"%1\""
+
+#~ msgid "File \"%1\" does not exist or is not executable."
+#~ msgstr "Faili \"%1\" ei ole olemas või pole see käivitatav."
+
+#~ msgid "Output from chiasmus"
+#~ msgstr "Chiasmuse väljund"
+
+#~ msgid "Decryption failed: %1"
+#~ msgstr "Lahtikrüptimine nurjus: %1"
+
+#~ msgid ""
+#~ "The following was received on stderr:\n"
+#~ "%1"
+#~ msgstr ""
+#~ "Standardväljundisse saabus järgmine teade:\n"
+#~ "%1"
+
+#~ msgid "Failed to load %1: %2"
+#~ msgstr "%1 laadimine nurjus: %2"
+
+#~ msgid "Library does not contain the symbol \"Chiasmus\"."
+#~ msgstr "Teek ei sisalda sümbolit \"Chiasmus\"."
+
+#~ msgid "Scanning directory %1..."
+#~ msgstr "Kataloogi %1 uurimine..."
+
+#~ msgid "GpgME"
+#~ msgstr "GpgME"
+
+#~ msgid "GPGME was compiled without support for %1."
+#~ msgstr "GpgME on kompileeritud ilma %1 toetuseta."
+
+#~ msgid "Engine %1 is not installed properly."
+#~ msgstr "Mootor %1 ei ole korrektselt paigaldatud."
+
+#~ msgid "Engine %1 version %2 installed, but at least version %3 is required."
+#~ msgstr ""
+#~ "Paigaldatud on mootori %1 versioon %2, kuid vajalik on vähemalt versioon "
+#~ "%3."
+
+#~ msgid "Unknown problem with engine for protocol %1."
+#~ msgstr "Tundmatu probleem protokolli %1 mootoriga."
+
+#~ msgid "program terminated unexpectedly"
+#~ msgstr "programmi lõpetas ootamatult töö"
+
+#~ msgid "program not found or cannot be started"
+#~ msgstr "programmi ei leitud või selle käivitamine nurjus"
+
+#~ msgid "<qt>Failed to execute gpgconf:<p>%1</p></qt>"
+#~ msgstr "<qt>Programmi gpgconf käivitamine nurjus:<p>%1</p></qt>"
+
+#~ msgid ""
+#~ "Could not start gpgconf.\n"
+#~ "Check that gpgconf is in the PATH and that it can be started."
+#~ msgstr ""
+#~ "Programmi gpgconf käivitamine nurjus.\n"
+#~ "Kontrolli, kas gpgconf asub otsinguteel (PATH) ja on käivitatav."
+
+#~ msgid "Error from gpgconf while saving configuration: %1"
+#~ msgstr "Programmi gpgconf viga konfiguratsiooni salvestamisel: %1"
+
+#~ msgid "Generating DSA key..."
+#~ msgstr "DSA võtme genereerimine..."
+
+#~ msgid "Generating ElGamal key..."
+#~ msgstr "ElGamal võtme genereerimine..."
+
+#~ msgid "Searching for a large prime number..."
+#~ msgstr "Suure algarvu otsimine..."
+
+#~ msgid ""
+#~ "Waiting for new entropy from random number generator (you might want to "
+#~ "exercise the harddisks or move the mouse)..."
+#~ msgstr ""
+#~ "Oodatakse uut entroopiat juhuarvude generaatorilt (võiksid proovida "
+#~ "kõvakettal midagi teha või liigutada hiirt)..."
+
+#~ msgid "Please wait..."
+#~ msgstr "Palun oota..."
+
+#~ msgid ""
+#~ "Starting gpg-agent (you should consider starting a global instance "
+#~ "instead)..."
+#~ msgstr ""
+#~ "Käivitatakse gpg-agent (võiksid parem käivitada selle globaalselt)..."
+
+#~ msgid "While scanning for %1 support in backend %2:"
+#~ msgstr "%1 toetuse otsimisel taustaprogrammis %2:"
+
+#~ msgctxt "progress info: \"%1 of %2\""
+#~ msgid "%1/%2"
+#~ msgstr "%1/%2"
+
+#~ msgid ""
+#~ "OpenPGP key for %1\n"
+#~ "Created: %2\n"
+#~ "Expiry: %3\n"
+#~ "Fingerprint: %4"
+#~ msgstr ""
+#~ "%1 OpenPGP võti\n"
+#~ "Loodud: %2\n"
+#~ "Aegub: %3\n"
+#~ "Sõrmejälg: %4"
+
+#~ msgid ""
+#~ "S/MIME key for %1\n"
+#~ "Created: %2\n"
+#~ "Expiry: %3\n"
+#~ "Fingerprint: %4\n"
+#~ "Issuer: %5"
+#~ msgstr ""
+#~ "%1 S/MIME võti\n"
+#~ "Loodud: %2\n"
+#~ "Aegub: %3\n"
+#~ "Sõrmejälg: %4\n"
+#~ "Väljaandja: %5"
+
+#~ msgid "Copy Audit Log to Clipboard"
+#~ msgstr "Kopeeri auditi logi lõikepuhvrisse"
+
+#~ msgid "Add or Change Directory Service"
+#~ msgstr "Kataloogi teenuse lisamine või muutmine"
+
+#~ msgid "&Server name:"
+#~ msgstr "&Serveri nimi:"
+
+#~ msgid "389"
+#~ msgstr "389"
+
+#~ msgid "&User name (optional):"
+#~ msgstr "Kas&utajanimi (pole kohustuslik):"
+
+#~ msgid "Pass&word (optional):"
+#~ msgstr "Pa&rool (pole kohustuslik):"
+
+#~ msgid "&OK"
+#~ msgstr "&OK"
+
+#~ msgid "&Cancel"
+#~ msgstr "&Loobu"
+
+#~ msgid "&Base DN:"
+#~ msgstr "&Baas DN:"
+
+#~ msgid "&Port:"
+#~ msgstr "&Port:"
+
+#~ msgctxt "NAME OF TRANSLATORS"
+#~ msgid "Your names"
+#~ msgstr "Marek Laane"
+
+#~ msgctxt "EMAIL OF TRANSLATORS"
+#~ msgid "Your emails"
+#~ msgstr "bald@starman.ee"
+
+#~ msgid "failed"
+#~ msgstr "nurjus"
+
+#~ msgctxt ""
+#~ "Items in Kleo::BackendConfigWidget listview (1: protocol; 2: "
+#~ "implementation name)"
+#~ msgid "%1 (%2)"
+#~ msgstr "%1 (%2)"
+
+#~ msgid "Available Backends"
+#~ msgstr "Saadaolevad taustarakendused"
+
+#~ msgid "Confi&gure..."
+#~ msgstr "&Seadista..."
+
+#~ msgid "Rescan"
+#~ msgstr "Uuri uuesti"
+
+#~ msgid "The following problems where encountered during scanning:"
+#~ msgstr "Uurimisel ilmnesid järgmised probleemid:"
+
+#~ msgctxt "@title:window Results of the scanning"
+#~ msgid "Scan Results"
+#~ msgstr "Uurimise tulemused"
+
+#~ msgid "(Unknown Protocol)"
+#~ msgstr "(Tundmatu protokoll)"
+
+#~ msgid "Error while initializing plugin \"%1\""
+#~ msgstr "Viga plugina \"%1\" initsialiseerimisel"
+
+#~ msgid "Can't start decrypt job"
+#~ msgstr "Lahtikrüptimise alustamine nurjus"
+
+#~ msgid "Can't start combined decrypt/verify operation"
+#~ msgstr "Lahtikrüptimise ja verifitseerimise alustamine nurjus"
+
+#~ msgid "Can't start encrypt job"
+#~ msgstr "Krüptimise alustamine nurjus"
+
+#~ msgid "Error adding signer %1."
+#~ msgstr "Viga signeerija %1 lisamisel."
+
+#~ msgid ""
+#~ "You need a passphrase to unlock the secret key for user:<br/> %1 (retry)"
+#~ msgstr ""
+#~ "Vaja läheb paroolifraasi kasutaja salajase võtme avamiseks:<br/> %1 "
+#~ "(uuesti proovimine)"
+
+#~ msgid "You need a passphrase to unlock the secret key for user:<br/> %1"
+#~ msgstr "Vaja läheb paroolifraasi kasutaja salajase võtme avamiseks:<br/> %1"
+
+#~ msgid ""
+#~ "This dialog will reappear every time the passphrase is needed. For a more "
+#~ "secure solution that also allows caching the passphrase, use gpg-agent."
+#~ msgstr ""
+#~ "See dialoog ilmub alati, kui läheb vaja paroolifraasi. Turvalisema "
+#~ "lahenduse kasutamiseks, mis võimaldab ka paroolifraasi puhverdada, "
+#~ "paigalda gpg-agent. "
+
+#~ msgid "gpg-agent was found in %1, but does not appear to be running."
+#~ msgstr "gpg-agent leiti asukohas %1, kuid see ei paista töötavat."
+
+#~ msgid "gpg-agent is part of gnupg-%1, which you can download from %2"
+#~ msgstr ""
+#~ "gpg-agent kuulub gnupg-%1 koosseisu, mille saab alla laadida aadressilt %2"
+
+#~ msgid "For information on how to set up gpg-agent, see %1"
+#~ msgstr "Rohkem infot gpg-agendi töölepanemise kohta annab %1"
+
+#~ msgid "Enter passphrase:"
+#~ msgstr "Paroolifraas:"
+
+#~ msgid "Passphrase Dialog"
+#~ msgstr "Paroolifraasi dialoog"
+
+#~ msgid "Can't start combined sign-encrypt job"
+#~ msgstr "Signeerimise ja krüptimise alustamine nurjus"
+
+#~ msgid "Can't start sign job"
+#~ msgstr "Signeerimise alustamine nurjus"
+
+#~ msgid "Can't start detached signature verification"
+#~ msgstr "Eraldiseisva signatuuri verifitseerimise alustamine nurjus"
+
+#~ msgid "Can't start opaque signature verification"
+#~ msgstr "Läbipaistmatu signatuuri verifitseerimise alustamine nurjus"
--- /dev/null
+# translation of libkleopatra.po to Euskara
+# translation of libkleopatra.po to Basque
+# Marcos <marcos@euskalgnu.org>, 2005.
+# Ion Gaztañaga <ion_g_m@hotmail.com>, 2005.
+# Ion Gaztañaga <igaztanaga@gmail.com>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: libkleopatra\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2017-07-12 06:56+0200\n"
+"PO-Revision-Date: 2005-11-20 14:32-0700\n"
+"Last-Translator: Ion Gaztañaga <igaztanaga@gmail.com>\n"
+"Language-Team: Basque <kdeuskaraz@euskalgnu.org>\n"
+"Language: eu\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.10.2\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: kleo/checksumdefinition.cpp:107
+#, kde-format
+msgid "Error in checksum definition %1: %2"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:157
+#, kde-format
+msgid "Cannot use both %f and | in '%1'"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:167
+#, kde-format
+msgid "Quoting error in '%1' entry"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:170
+#, kde-format
+msgid "'%1' too complex (would need shell)"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:174
+#, kde-format
+msgid "'%1' entry is empty/missing"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:183
+#, kde-format
+msgid "'%1' empty or not found"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:222
+#, kde-format
+msgid "'id' entry is empty/missing"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:225
+#, kde-format
+msgid "'output-file' entry is empty/missing"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:228
+#, kde-format
+msgid "'file-patterns' entry is empty/missing"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:395
+#, kde-format
+msgid "Caught unknown exception in group %1"
+msgstr ""
+
+#: kleo/dn.cpp:507
+#, kde-format
+msgid "Common name"
+msgstr "Izen arrunta"
+
+#: kleo/dn.cpp:508
+#, kde-format
+msgid "Surname"
+msgstr "Abizena"
+
+#: kleo/dn.cpp:509
+#, kde-format
+msgid "Given name"
+msgstr "Izena"
+
+#: kleo/dn.cpp:510
+#, kde-format
+msgid "Location"
+msgstr "Kokalekua"
+
+#: kleo/dn.cpp:511
+#, kde-format
+msgid "Title"
+msgstr "Izenburua"
+
+#: kleo/dn.cpp:512
+#, kde-format
+msgid "Organizational unit"
+msgstr "Erakundeko saila"
+
+#: kleo/dn.cpp:513
+#, kde-format
+msgid "Organization"
+msgstr "Erakundea"
+
+#: kleo/dn.cpp:514
+#, kde-format
+msgid "Postal code"
+msgstr "Posta-kodea"
+
+#: kleo/dn.cpp:515
+#, kde-format
+msgid "Country code"
+msgstr "Estatuaren kodea"
+
+#: kleo/dn.cpp:516
+#, kde-format
+msgid "State or province"
+msgstr "Estatua edo probintzia"
+
+#: kleo/dn.cpp:517
+#, kde-format
+msgid "Domain component"
+msgstr "Domeinu osagaia"
+
+#: kleo/dn.cpp:518
+#, kde-format
+msgid "Business category"
+msgstr "Lan kategoria"
+
+#: kleo/dn.cpp:519
+#, kde-format
+msgid "Email address"
+msgstr "E-posta helbidea"
+
+#: kleo/dn.cpp:520
+#, kde-format
+msgid "Mail address"
+msgstr "Posta helbidea"
+
+#: kleo/dn.cpp:521
+#, kde-format
+msgid "Mobile phone number"
+msgstr "Mugikorraren zenbakia"
+
+#: kleo/dn.cpp:522
+#, kde-format
+msgid "Telephone number"
+msgstr "Telefono zenbakia"
+
+#: kleo/dn.cpp:523
+#, kde-format
+msgid "Fax number"
+msgstr "Fax zenbakia"
+
+#: kleo/dn.cpp:524
+#, kde-format
+msgid "Street address"
+msgstr "Helbidea"
+
+#: kleo/dn.cpp:525
+#, kde-format
+msgid "Unique ID"
+msgstr "ID bakarra"
+
+#: kleo/enum.cpp:57
+#, kde-format
+msgid "Inline OpenPGP (deprecated)"
+msgstr "OpenPGP tartekatua (zaharkitua)"
+
+#: kleo/enum.cpp:62
+#, kde-format
+msgid "OpenPGP/MIME"
+msgstr "OpenPGP/MIME"
+
+#: kleo/enum.cpp:67 ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "S/MIME"
+msgstr "S/MIME"
+
+#: kleo/enum.cpp:72
+#, kde-format
+msgid "S/MIME Opaque"
+msgstr "S/MIME opakoa"
+
+#: kleo/enum.cpp:104
+#, kde-format
+msgid "Any"
+msgstr "Edozein"
+
+#: kleo/enum.cpp:177
+#, kde-format
+msgid "Never Encrypt"
+msgstr "Ez inoiz enkriptatu"
+
+#: kleo/enum.cpp:179
+#, kde-format
+msgid "Always Encrypt"
+msgstr "Beti enkriptatu"
+
+#: kleo/enum.cpp:181
+#, kde-format
+msgid "Always Encrypt If Possible"
+msgstr "Beti enkriptatu posible bada"
+
+#: kleo/enum.cpp:183 kleo/enum.cpp:240
+#, kde-format
+msgid "Ask"
+msgstr "Galdetu"
+
+#: kleo/enum.cpp:185 kleo/enum.cpp:242
+#, kde-format
+msgid "Ask Whenever Possible"
+msgstr "Galdu posible denean"
+
+#: kleo/enum.cpp:187
+#, kde-kuit-format
+msgctxt "no specific preference"
+msgid "<placeholder>none</placeholder>"
+msgstr ""
+
+#: kleo/enum.cpp:234
+#, kde-format
+msgid "Never Sign"
+msgstr "Ez inoiz sinatu"
+
+#: kleo/enum.cpp:236
+#, kde-format
+msgid "Always Sign"
+msgstr "Sinatu beti"
+
+#: kleo/enum.cpp:238
+#, kde-format
+msgid "Always Sign If Possible"
+msgstr "Sinatu beti posible bada"
+
+#: kleo/enum.cpp:244
+#, kde-format
+msgctxt "no specific preference"
+msgid "<none>"
+msgstr "<bat ere ez>"
+
+#: kleo/keyfiltermanager.cpp:85
+#, kde-format
+msgid "All Certificates"
+msgstr ""
+
+#: kleo/keyfiltermanager.cpp:100
+#, kde-format
+msgid "My Certificates"
+msgstr ""
+
+#: kleo/keyfiltermanager.cpp:118
+#, kde-format
+msgid "Trusted Certificates"
+msgstr ""
+
+#: kleo/keyfiltermanager.cpp:135
+#, kde-format
+msgid "Fully Trusted Certificates"
+msgstr ""
+
+#: kleo/keyfiltermanager.cpp:152
+#, kde-format
+msgid "Other Certificates"
+msgstr ""
+
+#: kleo/keyfiltermanager.cpp:166
+#, kde-format
+msgid "VS-compliant Certificates"
+msgstr ""
+
+#: kleo/keyfiltermanager.cpp:184
+#, kde-format
+msgid "Not validated Certificates"
+msgstr ""
+
+#: ui/auditlogviewer.cpp:49
+#, kde-format
+msgid "View GnuPG Audit Log"
+msgstr ""
+
+#: ui/auditlogviewer.cpp:53
+#, kde-format
+msgid "&Copy to Clipboard"
+msgstr ""
+
+#: ui/auditlogviewer.cpp:59
+#, kde-format
+msgid "&Save to Disk..."
+msgstr ""
+
+#: ui/auditlogviewer.cpp:95
+#, kde-format
+msgid "Choose File to Save GnuPG Audit Log to"
+msgstr ""
+
+#: ui/auditlogviewer.cpp:118
+#, kde-format
+msgid "Could not save to file \"%1\": %2"
+msgstr ""
+
+#: ui/auditlogviewer.cpp:120
+#, kde-format
+msgid "File Save Error"
+msgstr ""
+
+#: ui/cryptoconfigdialog.cpp:44
+#, kde-format
+msgid "Configure GnuPG Backend"
+msgstr ""
+
+#: ui/cryptoconfigdialog.cpp:55
+#, kde-format
+msgid "&Reset"
+msgstr "&Berrezarri"
+
+#: ui/cryptoconfigmodule.cpp:160
+#, fuzzy, kde-format
+#| msgid "Encryption keys:"
+msgid "GpgConf Error"
+msgstr "Entriptatzeko gakoak:"
+
+#: ui/cryptoconfigmodule.cpp:216
+#, kde-format
+msgid ""
+"The gpgconf tool used to provide the information for this dialog does not "
+"seem to be installed properly. It did not return any components. Try running "
+"\"%1\" on the command line for more information."
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:496
+#, kde-format
+msgctxt ""
+"Translate this to 'yes' or 'no' (use the English words!) depending on "
+"whether your language uses Sentence style capitalisation in GUI labels (yes) "
+"or not (no). Context: We get some backend strings in that have the wrong "
+"capitalizaion (in English, at least) so we need to force the first character "
+"to upper-case. It is this behaviour you can control for your language with "
+"this translation."
+msgid "yes"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:546
+#, kde-format
+msgid "0 - None"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:547
+#, kde-format
+msgid "1 - Basic"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:548
+#, kde-format
+msgid "2 - Verbose"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:549
+#, kde-format
+msgid "3 - More Verbose"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:550
+#, kde-format
+msgid "4 - All"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:559
+#, kde-format
+msgid "Set the debugging level to"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:787
+#, kde-format
+msgid "Show..."
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:787 ui/cryptoconfigmodule.cpp:876
+#, kde-format
+msgid "Edit..."
+msgstr "Editatu..."
+
+#: ui/cryptoconfigmodule.cpp:841
+#, kde-format
+msgid "Configure LDAP Servers"
+msgstr "Konfiguratu LDAP zerbitzariak"
+
+#: ui/cryptoconfigmodule.cpp:862
+#, fuzzy, kde-format
+#| msgid "No server configured yet"
+msgid "None configured"
+msgstr "Ez da oraindik zerbitzaririk konfiguratu"
+
+#: ui/cryptoconfigmodule.cpp:864
+#, fuzzy, kde-format
+msgid "1 server configured"
+msgid_plural "%1 servers configured"
+msgstr[0] "zerbitzari bat konfiguratua"
+msgstr[1] "%1 zerbitzari konfiguratuta"
+
+#: ui/cryptoconfigmodule.cpp:879
+#, kde-format
+msgid "Use keyserver at"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:968
+#, fuzzy, kde-format
+#| msgid "Configure LDAP Servers"
+msgid "Configure Keyservers"
+msgstr "Konfiguratu LDAP zerbitzariak"
+
+#: ui/directoryserviceswidget.cpp:67
+#, fuzzy, kde-format
+#| msgid "never"
+msgctxt "default server name, keep it a valid domain name, ie. no spaces"
+msgid "server"
+msgstr "inoiz ez"
+
+#: ui/directoryserviceswidget.cpp:95
+#, kde-format
+msgid "hkp"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:96
+#, kde-format
+msgid "http"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:97
+#, kde-format
+msgid "https"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:98
+#, kde-format
+msgid "ftp"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:99
+#, kde-format
+msgid "ftps"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:100
+#, kde-format
+msgid "ldap"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:101
+#, kde-format
+msgid "ldaps"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:588
+#, kde-format
+msgid "Server Name"
+msgstr "Zerbitzariaren izena"
+
+#: ui/directoryserviceswidget.cpp:589
+#, fuzzy, kde-format
+#| msgid "Server Name"
+msgid "Server Port"
+msgstr "Zerbitzariaren izena"
+
+#: ui/directoryserviceswidget.cpp:590
+#, kde-format
+msgid "Base DN"
+msgstr "Baseko DN-a"
+
+#: ui/directoryserviceswidget.cpp:591
+#, kde-format
+msgid "User Name"
+msgstr "Erabiltzaile izena"
+
+#: ui/directoryserviceswidget.cpp:592
+#, kde-format
+msgid "Password"
+msgstr "Pasahitza"
+
+#: ui/directoryserviceswidget.cpp:614
+#, kde-format
+msgid "(read-only)"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:616
+#, kde-format
+msgctxt "amended tooltip; %1: original tooltip"
+msgid "%1 (read-only)"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:739
+#, kde-format
+msgid ""
+"Enter the name or IP address of the server hosting the directory service."
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:741
+#, kde-format
+msgid ""
+"<b>(Optional, the default is fine in most cases)</b> Pick the port number "
+"the directory service is listening on."
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:744
+#, kde-format
+msgid ""
+"<b>(Only for LDAP)</b> Enter the base DN for this LDAP server to limit "
+"searches to only that subtree of the directory."
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:747
+#, kde-format
+msgid "<b>(Optional)</b> Enter your user name here, if needed."
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:749
+#, kde-format
+msgid ""
+"<b>(Optional, not recommended)</b> Enter your password here, if needed. Note "
+"that the password will be saved in the clear in a config file in your home "
+"directory."
+msgstr ""
+
+#. i18n: ectx: property (windowTitle), widget (QWidget, DirectoryServicesWidget)
+#: ui/directoryserviceswidget.ui:14
+#, kde-format
+msgid "Directory Services Configuration"
+msgstr "Direktorio zerbitzuen konfigurazioa"
+
+#. i18n: ectx: property (text), widget (QLabel, pgpKSLabel)
+#: ui/directoryserviceswidget.ui:22
+#, fuzzy, kde-format
+#| msgid "OpenPGP Key Selection"
+msgid "OpenPGP Keyserver:"
+msgstr "OpenPGP gako hautapena"
+
+#. i18n: ectx: property (title), widget (QGroupBox, x500LA)
+#: ui/directoryserviceswidget.ui:35
+#, fuzzy, kde-format
+#| msgid "X.&500 directory services:"
+msgid "X509 Directory services:"
+msgstr "X.&500 direktorio zerbitzuak:"
+
+#. i18n: ectx: property (whatsThis), widget (QTreeView, treeView)
+#: ui/directoryserviceswidget.ui:43
+#, kde-format
+msgid ""
+"This is a list of all directory services that are configured for use with "
+"X.509."
+msgstr ""
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:70
+#, kde-format
+msgid "Click to add a service"
+msgstr "Klikatu zerbitzu bat gehitzeko"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:73
+#, kde-format
+msgid ""
+"Click this button to create a new directory service entry as a clone of the "
+"currently selected one (or with default values, if no other is selected). "
+"You can then configure details in the table on the left hand."
+msgstr ""
+
+#. i18n: ectx: property (text), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:76
+#, kde-format
+msgid "New"
+msgstr ""
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:92
+#, kde-format
+msgid "Click to remove the currently selected service"
+msgstr "Klikatu uneko hautatutako zerbitzua kentzeko"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:95
+#, kde-format
+msgid ""
+"Click this button to remove the currently selected directory service. The "
+"change will only take effect once you acknowledge the main configuration "
+"dialog."
+msgstr ""
+
+#. i18n: ectx: property (text), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:98
+#, kde-format
+msgid "Delete"
+msgstr ""
+
+#. i18n: ectx: property (whatsThis), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:128
+#, kde-format
+msgid ""
+"Use this option to switch display of username and password information on or "
+"off in the above table."
+msgstr ""
+
+#. i18n: ectx: property (text), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:131
+#, kde-format
+msgid "Show user and password information"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:73
+#, kde-format
+msgid "Description"
+msgstr "Deskribapena"
+
+#: ui/dnattributeorderconfigwidget.cpp:91
+#, kde-format
+msgid "Available attributes:"
+msgstr "Atributu eskuragarriak:"
+
+#: ui/dnattributeorderconfigwidget.cpp:92
+#, kde-format
+msgid "Current attribute order:"
+msgstr "Uneko atributuen ordena:"
+
+#: ui/dnattributeorderconfigwidget.cpp:112
+#, kde-format
+msgid "All others"
+msgstr "Beste guztiak"
+
+#: ui/dnattributeorderconfigwidget.cpp:129
+#, kde-format
+msgid "Move to top"
+msgstr "Mugitu gora"
+
+#: ui/dnattributeorderconfigwidget.cpp:130
+#, kde-format
+msgid "Move one up"
+msgstr "Mugitu bat gorantz"
+
+#: ui/dnattributeorderconfigwidget.cpp:131
+#, kde-format
+msgid "Remove from current attribute order"
+msgstr "Kendu uneko atributuen ordenetik"
+
+#: ui/dnattributeorderconfigwidget.cpp:132
+#, kde-format
+msgid "Add to current attribute order"
+msgstr "Gehitu uneko atributuen ordenera"
+
+#: ui/dnattributeorderconfigwidget.cpp:133
+#, kde-format
+msgid "Move one down"
+msgstr "Mugitu bat behera"
+
+#: ui/dnattributeorderconfigwidget.cpp:134
+#, kde-format
+msgid "Move to bottom"
+msgstr "Mugitu behera"
+
+#: ui/keyapprovaldialog.cpp:87
+#, kde-kuit-format
+msgid "<placeholder>none</placeholder>"
+msgstr ""
+
+#: ui/keyapprovaldialog.cpp:88
+#, kde-format
+msgid "Never Encrypt with This Key"
+msgstr "Ez inoiz enkriptatu gako honekin"
+
+#: ui/keyapprovaldialog.cpp:89
+#, kde-format
+msgid "Always Encrypt with This Key"
+msgstr "Beti enkriptatu gako honekin"
+
+#: ui/keyapprovaldialog.cpp:90
+#, kde-format
+msgid "Encrypt Whenever Encryption is Possible"
+msgstr "Enkriptatu enkriptazioa posible denean"
+
+#: ui/keyapprovaldialog.cpp:91
+#, kde-format
+msgid "Always Ask"
+msgstr "Galdetu beti"
+
+#: ui/keyapprovaldialog.cpp:92
+#, kde-format
+msgid "Ask Whenever Encryption is Possible"
+msgstr "Galdetu enkriptatzea posible denean"
+
+#: ui/keyapprovaldialog.cpp:113
+#, kde-format
+msgid "Encryption Key Approval"
+msgstr "Enkriptatze-gakoaren onespena"
+
+#: ui/keyapprovaldialog.cpp:129
+#, kde-format
+msgid "The following keys will be used for encryption:"
+msgstr "Ondorengo gakoak erabiliko diren enkriptatzeko:"
+
+#: ui/keyapprovaldialog.cpp:145
+#, kde-format
+msgid "Your keys:"
+msgstr "Zure gakoak:"
+
+#: ui/keyapprovaldialog.cpp:157
+#, kde-format
+msgid "Recipient:"
+msgstr "Hartzailea:"
+
+#: ui/keyapprovaldialog.cpp:162
+#, kde-format
+msgid "Encryption keys:"
+msgstr "Entriptatzeko gakoak:"
+
+#: ui/keyapprovaldialog.cpp:169
+#, kde-format
+msgid "Encryption preference:"
+msgstr "Enkriptatzeko hobespenak:"
+
+#: ui/keyrequester.cpp:118
+#, kde-format
+msgid "Clear"
+msgstr ""
+
+#: ui/keyrequester.cpp:121
+#, kde-format
+msgid "Change..."
+msgstr "Aldatu..."
+
+#: ui/keyrequester.cpp:232 ui/keyselectiondialog.cpp:256
+#, kde-kuit-format
+msgid "<placeholder>unknown</placeholder>"
+msgstr ""
+
+#: ui/keyrequester.cpp:246 ui/keyselectiondialog.cpp:657
+#, kde-format
+msgid ""
+"<qt><p>An error occurred while fetching the keys from the backend:</p><p><b>"
+"%1</b></p></qt>"
+msgstr ""
+"<qt><p>Errore bat gertatu da gakoak euskarritik eskuratzean::</p><p><b>%1</"
+"b></p></qt>"
+
+#: ui/keyrequester.cpp:251 ui/keyrequester.cpp:283 ui/keyrequester.cpp:306
+#: ui/keyselectiondialog.cpp:630 ui/keyselectiondialog.cpp:662
+#, kde-format
+msgid "Key Listing Failed"
+msgstr "Errorea gakoak zerrendatzean"
+
+#: ui/keyrequester.cpp:281
+#, kde-format
+msgid ""
+"The OpenPGP backend does not support listing keys. Check your installation."
+msgstr "IpenPGP euksarriak ez du gakoen zerrendaketa onartzen."
+
+#: ui/keyrequester.cpp:304
+#, kde-format
+msgid ""
+"The S/MIME backend does not support listing keys. Check your installation."
+msgstr ""
+"S/MIME euskarriak ez du gakoen zerrendaketa onartzen. Egiaztatu zure "
+"instalazioa."
+
+#: ui/keyrequester.cpp:426
+#, kde-format
+msgid "OpenPGP Key Selection"
+msgstr "OpenPGP gako hautapena"
+
+#: ui/keyrequester.cpp:427
+#, kde-format
+msgid "Please select an OpenPGP key to use."
+msgstr "Hautatu erabiltzeko OpenPGP gakoa."
+
+#: ui/keyrequester.cpp:429
+#, kde-format
+msgid "S/MIME Key Selection"
+msgstr "S/MIME gako hautapena"
+
+#: ui/keyrequester.cpp:430
+#, kde-format
+msgid "Please select an S/MIME key to use."
+msgstr "Hautatu erabiltzeko S/MIME gako bat."
+
+#: ui/keyrequester.cpp:432
+#, kde-format
+msgid "Key Selection"
+msgstr "Gako hautapena"
+
+#: ui/keyrequester.cpp:433
+#, kde-format
+msgid "Please select an (OpenPGP or S/MIME) key to use."
+msgstr "Hautatu erabiltzeko (OpenPGP edo S/MIME) gako bat."
+
+#: ui/keyselectioncombo.cpp:195
+#, kde-format
+msgctxt "Name <email> (validity, type, created: date)"
+msgid "%1 (%2, %3, created: %4)"
+msgstr ""
+
+#: ui/keyselectioncombo.cpp:196
+#, kde-format
+msgctxt "Name <email>"
+msgid "%1 <%2>"
+msgstr ""
+
+#: ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "OpenPGP"
+msgstr "OpenPGP"
+
+#: ui/keyselectioncombo.cpp:347
+#, fuzzy, kde-format
+#| msgid "Fetching keys..."
+msgid "Loading keys ..."
+msgstr "Gakoak eskuratzen..."
+
+#: ui/keyselectiondialog.cpp:98
+#, kde-format
+msgid "The key is not valid."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:106
+#, kde-format
+msgid "The key is expired."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:110
+#, kde-format
+msgid "The key is revoked."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:114
+#, kde-format
+msgid "The key is disabled."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:122
+#, fuzzy, kde-format
+#| msgid "The following keys will be used for encryption:"
+msgid "The key is not designated for encryption."
+msgstr "Ondorengo gakoak erabiliko diren enkriptatzeko:"
+
+#: ui/keyselectiondialog.cpp:128
+#, kde-format
+msgid "The key is not designated for signing."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:134
+#, kde-format
+msgid "The key is not designated for certifying."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:140
+#, kde-format
+msgid "The key is not designated for authentication."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:148
+#, kde-format
+msgid "The key is not secret."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:163
+#, kde-format
+msgid "The key is not trusted enough."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:169
+#, kde-format
+msgid "The key can be used."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:230
+#, kde-format
+msgid "Key ID"
+msgstr "Gako ID-a"
+
+#: ui/keyselectiondialog.cpp:231
+#, kde-format
+msgid "User ID"
+msgstr "Erabiltzaile ID-a"
+
+#: ui/keyselectiondialog.cpp:279
+#, kde-format
+msgid "never"
+msgstr "inoiz ez"
+
+#: ui/keyselectiondialog.cpp:289 ui/keyselectiondialog.cpp:291
+#: ui/keyselectiondialog.cpp:300 ui/keyselectiondialog.cpp:302
+#, kde-format
+msgid "unknown"
+msgstr "ezezaguna"
+
+#: ui/keyselectiondialog.cpp:289
+#, kde-format
+msgid "OpenPGP key for <b>%1</b>"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:291
+#, kde-format
+msgid "S/MIME key for <b>%1</b>"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:298
+#, kde-format
+msgctxt "Key creation date"
+msgid "Created"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:299
+#, kde-format
+msgctxt "Key Expiration date"
+msgid "Expiry"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:300
+#, kde-format
+msgctxt "Key fingerprint"
+msgid "Fingerprint"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:302
+#, kde-format
+msgctxt "Key issuer"
+msgid "Issuer"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:304
+#, kde-format
+msgctxt "Key status"
+msgid "Status"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:456
+#, kde-format
+msgid "Search for &External Certificates"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:470
+#, kde-format
+msgid "&Search for:"
+msgstr "&Bilatu hau:"
+
+#: ui/keyselectiondialog.cpp:494
+#, kde-format
+msgid "&Remember choice"
+msgstr "&Gogoratu aukera"
+
+#: ui/keyselectiondialog.cpp:497
+#, kde-format
+msgid ""
+"<qt><p>If you check this box your choice will be stored and you will not be "
+"asked again.</p></qt>"
+msgstr ""
+"<qt><p>Kaxa hau hautatzen baduzu, zure aukera gorde egingo da eta ez zaizu "
+"berriro galdetuko.</p></qt>"
+
+#: ui/keyselectiondialog.cpp:509
+#, kde-format
+msgid "&Reread Keys"
+msgstr "&Berrirakurri gakoak"
+
+#: ui/keyselectiondialog.cpp:510
+#, kde-format
+msgid "&Start Certificate Manager"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:628
+#, kde-format
+msgid "No backends found for listing keys. Check your installation."
+msgstr ""
+"Ez da euskarririk aurkitu gakoak zerrendatzean. Egiaztatu zure instalazioa."
+
+#: ui/keyselectiondialog.cpp:644
+#, kde-format
+msgid "Could not start certificate manager; please check your installation."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:646
+#, kde-format
+msgid "Certificate Manager Error"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Checking selected keys..."
+msgstr "Hautatutako gakoak egiaztatzen..."
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Fetching keys..."
+msgstr "Gakoak eskuratzen..."
+
+#: ui/keyselectiondialog.cpp:731
+#, fuzzy, kde-format
+msgid ""
+"<qt>One backend returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgid_plural ""
+"<qt>%1 backends returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgstr[0] ""
+"<qt>Euskarri batek trunkatutako irteera itzuli du.<br>Ez dira eskuragarri "
+"dauden gako guztiak erakutsiko</qt>"
+msgstr[1] ""
+"<qt>%1 euskarrik trunkatutako irteera itzuli dute.<br>Ez dire eskuragarri "
+"dauden gako guztiak erakutsiko</qt>"
+
+#: ui/keyselectiondialog.cpp:736
+#, kde-format
+msgid "Key List Result"
+msgstr "Gakoen zerrendaketaren emaitza"
+
+#: ui/keyselectiondialog.cpp:856
+#, kde-format
+msgid "Recheck Key"
+msgstr "Berregiaztatu gakoa"
+
+#: ui/messagebox.cpp:71
+#, kde-format
+msgid "Your system does not have support for GnuPG Audit Logs"
+msgstr ""
+
+#: ui/messagebox.cpp:72
+#, kde-format
+msgid "System Error"
+msgstr ""
+
+#: ui/messagebox.cpp:79
+#, kde-format
+msgid ""
+"An error occurred while trying to retrieve the GnuPG Audit Log:\n"
+"%1"
+msgstr ""
+
+#: ui/messagebox.cpp:81
+#, kde-format
+msgid "GnuPG Audit Log Error"
+msgstr ""
+
+#: ui/messagebox.cpp:88
+#, kde-format
+msgid "No GnuPG Audit Log available for this operation."
+msgstr ""
+
+#: ui/messagebox.cpp:89
+#, kde-format
+msgid "No GnuPG Audit Log"
+msgstr ""
+
+#: ui/messagebox.cpp:109 ui/messagebox.cpp:115
+#, kde-format
+msgid "GnuPG Audit Log Viewer"
+msgstr ""
+
+#: ui/messagebox.cpp:121
+#, kde-format
+msgid "Signing failed: %1"
+msgstr "Sinadurak huts egin du: %1"
+
+#: ui/messagebox.cpp:122
+#, kde-format
+msgid "Signing successful"
+msgstr ""
+
+#: ui/messagebox.cpp:133
+#, kde-format
+msgid "Encryption failed: %1"
+msgstr "Errorea enkriptatzean: %1"
+
+#: ui/messagebox.cpp:134
+#, fuzzy, kde-format
+#| msgid "Encryption keys:"
+msgid "Encryption successful"
+msgstr "Entriptatzeko gakoak:"
+
+#: ui/messagebox.cpp:155
+#, fuzzy, kde-format
+#| msgid "Scan Results"
+msgid "Signing Result"
+msgstr "Eskaneatzearen emaitzak"
+
+#: ui/messagebox.cpp:167
+#, kde-format
+msgid "Signing Error"
+msgstr ""
+
+#: ui/messagebox.cpp:179 ui/messagebox.cpp:203
+#, fuzzy, kde-format
+#| msgid "Encryption keys:"
+msgid "Encryption Result"
+msgstr "Entriptatzeko gakoak:"
+
+#: ui/messagebox.cpp:191 ui/messagebox.cpp:215
+#, fuzzy, kde-format
+#| msgid "Encryption keys:"
+msgid "Encryption Error"
+msgstr "Entriptatzeko gakoak:"
+
+#: ui/messagebox.cpp:263
+#, kde-format
+msgid "&Show Audit Log"
+msgstr ""
+
+#: ui/progressdialog.cpp:91
+#, kde-format
+msgid "%1: %2"
+msgstr "%1: %2"
+
+#, fuzzy
+#~| msgid "OpenPGP"
+#~ msgctxt "New OpenPGP Directory Server"
+#~ msgid "OpenPGP"
+#~ msgstr "OpenPGP"
+
+#~ msgid "General"
+#~ msgstr "Orokorra"
+
+#~ msgid "Chiasmus"
+#~ msgstr "Chiasmus"
+
+#~ msgid "Chiasmus command line tool"
+#~ msgstr "Chiasmus komando-lerroko tresna"
+
+#~ msgid "Unsupported protocol \"%1\""
+#~ msgstr "Euskarririk gabeko \"%1\" protokoloa"
+
+#~ msgid "File \"%1\" does not exist or is not executable."
+#~ msgstr "\"%1\" fitxategia ez da existitzen edo ez da exekutagarria."
+
+#~ msgid "Output from chiasmus"
+#~ msgstr "Chiasmus-en irteera"
+
+#~ msgid "Decryption failed: %1"
+#~ msgstr "Errorea desenkriptatzean: %1"
+
+#~ msgid ""
+#~ "The following was received on stderr:\n"
+#~ "%1"
+#~ msgstr ""
+#~ "Ondorengoa jaso da stderr-en:\n"
+#~ "%1"
+
+#~ msgid "Failed to load %1: %2"
+#~ msgstr "Errorea %1 kargatzean: %2"
+
+#~ msgid "Library does not contain the symbol \"Chiasmus\"."
+#~ msgstr "Liburutegiak ez du \"Chiasmus\" sinbolorik."
+
+#~ msgid "Scanning directory %1..."
+#~ msgstr "%1 direktorioa eskaneatzen..."
+
+#~ msgid "GpgME"
+#~ msgstr "GpgME"
+
+#~ msgid "GPGME was compiled without support for %1."
+#~ msgstr "GPGME %1 euskarri gabe konpilatu da."
+
+#~ msgid "Engine %1 is not installed properly."
+#~ msgstr "%1 euskarria ez dago ongi instalatuta."
+
+#~ msgid "Engine %1 version %2 installed, but at least version %3 is required."
+#~ msgstr ""
+#~ "%1 euskarria, %2 bertsioa instalatuta dago, baina gutxienez %3 bertsioa "
+#~ "behar da."
+
+#~ msgid "Unknown problem with engine for protocol %1."
+#~ msgstr "Arazo ezezaguna euskarrian %1 protokoloarekin."
+
+#, fuzzy
+#~| msgid "program cannot be executed"
+#~ msgid "program terminated unexpectedly"
+#~ msgstr "programa ezin da exekutatu"
+
+#, fuzzy
+#~| msgid "program cannot be executed"
+#~ msgid "program not found or cannot be started"
+#~ msgstr "programa ezin da exekutatu"
+
+#, fuzzy
+#~| msgid "<qt>Failed to execute gpgconf:<br>%1</qt>"
+#~ msgid "<qt>Failed to execute gpgconf:<p>%1</p></qt>"
+#~ msgstr "<qt>Errorea gpgconf exekutatzean:<br>%1</qt>"
+
+#, fuzzy
+#~| msgid ""
+#~| "Could not start gpgconf\n"
+#~| "Check that gpgconf is in the PATH and that it can be started"
+#~ msgid ""
+#~ "Could not start gpgconf.\n"
+#~ "Check that gpgconf is in the PATH and that it can be started."
+#~ msgstr ""
+#~ "Ezin da gpgconf abiatu\n"
+#~ "Egiaztatu gpgconf PATH aldagaiaren bidean dagoela eta abiatu daitekeela"
+
+#~ msgid "Error from gpgconf while saving configuration: %1"
+#~ msgstr "Errore gpg conf-en konfigurazioa gordetzean: %1"
+
+#~ msgid "Generating DSA key..."
+#~ msgstr "DSA gakoa sortzen..."
+
+#~ msgid "Generating ElGamal key..."
+#~ msgstr "ElGamal gakoa sortzen..."
+
+#~ msgid "Searching for a large prime number..."
+#~ msgstr "Zenbaki bakun handi bat bilatzen..."
+
+#, fuzzy
+#~| msgid ""
+#~| "Waiting for new entropy from random number generator (you might want to "
+#~| "excercise the harddisks or move the mouse)..."
+#~ msgid ""
+#~ "Waiting for new entropy from random number generator (you might want to "
+#~ "exercise the harddisks or move the mouse)..."
+#~ msgstr ""
+#~ "Ausazko zenbaki sortzaile batetik entropia berri bat itxaroten (diska "
+#~ "gogorra lanean jarri edo arratoia mugi dezakezu)..."
+
+#~ msgid "Please wait..."
+#~ msgstr "Itxaron mesedez..."
+
+#~ msgid ""
+#~ "Starting gpg-agent (you should consider starting a global instance "
+#~ "instead)..."
+#~ msgstr ""
+#~ "\"gpg-agent\" abiatzen (instantzia global bat abiatzea kontsidera "
+#~ "zenezake)..."
+
+#~ msgid "While scanning for %1 support in backend %2:"
+#~ msgstr "%2 euskarrian %1 ahalmenen bila eskaneatzean:"
+
+#~ msgctxt "progress info: \"%1 of %2\""
+#~ msgid "%1/%2"
+#~ msgstr "%1/%2"
+
+#~ msgid ""
+#~ "OpenPGP key for %1\n"
+#~ "Created: %2\n"
+#~ "Expiry: %3\n"
+#~ "Fingerprint: %4"
+#~ msgstr ""
+#~ "%1-(r)en OpenPGP gakoa\n"
+#~ "Sortua: %2\n"
+#~ "Iraungipen-data: %3\n"
+#~ "Hatz-marka: %4"
+
+#~ msgid ""
+#~ "S/MIME key for %1\n"
+#~ "Created: %2\n"
+#~ "Expiry: %3\n"
+#~ "Fingerprint: %4\n"
+#~ "Issuer: %5"
+#~ msgstr ""
+#~ "%1-(r)en S/MIME gakoa\n"
+#~ "Sortua: %2\n"
+#~ "Iraungipen-data: %3\n"
+#~ "Hatz-marka: %4 Jaulkitzailea: %5"
+
+#~ msgid "Add or Change Directory Service"
+#~ msgstr "Gehitu edo aldatu direktorio zerbitzua"
+
+#~ msgid "&Server name:"
+#~ msgstr "&Zerbitzariaren izena:"
+
+#~ msgid "389"
+#~ msgstr "389"
+
+#~ msgid "&User name (optional):"
+#~ msgstr "&Erabiltzaile izena (aukerakoa):"
+
+#~ msgid "Pass&word (optional):"
+#~ msgstr "Pasa&hitza (aukerakoa):"
+
+#~ msgid "&Base DN:"
+#~ msgstr "&Baseko DN-a:"
+
+#~ msgid "&Port:"
+#~ msgstr "&Ataka:"
+
+#~ msgctxt "NAME OF TRANSLATORS"
+#~ msgid "Your names"
+#~ msgstr "Ion Gaztañaga"
+
+#~ msgctxt "EMAIL OF TRANSLATORS"
+#~ msgid "Your emails"
+#~ msgstr "igaztanaga@gmail.com"
+
+#~ msgid "failed"
+#~ msgstr "errorea"
+
+#~ msgctxt ""
+#~ "Items in Kleo::BackendConfigWidget listview (1: protocol; 2: "
+#~ "implementation name)"
+#~ msgid "%1 (%2)"
+#~ msgstr "%1 (%2)"
+
+#~ msgid "Available Backends"
+#~ msgstr "Euskarri eskuragarriak"
+
+#~ msgid "Confi&gure..."
+#~ msgstr "Konfi&guratu..."
+
+#~ msgid "Rescan"
+#~ msgstr "Berreskaneatu"
+
+#~ msgid "The following problems where encountered during scanning:"
+#~ msgstr "Ondorengo arazoak aurkitu dira eskaneatzean:"
+
+#, fuzzy
+#~| msgid "Scan Results"
+#~ msgctxt "@title:window Results of the scanning"
+#~ msgid "Scan Results"
+#~ msgstr "Eskaneatzearen emaitzak"
+
+#~ msgid "(Unknown Protocol)"
+#~ msgstr "(Protokolo ezezaguna)"
+
+#~ msgid "Error while initializing plugin \"%1\""
+#~ msgstr "Errorea \"%1\" plugin-a hasieratzean"
--- /dev/null
+# translation of libkleopatra.po to Persian
+# MaryamSadat Razavi <razavi@itland.ir>, 2006.
+# Nazanin Kazemi <kazemi@itland.ir>, 2006, 2007.
+# Nasim Daniarzadeh <daniarzadeh@itland.ir>, 2006, 2007.
+# Tahereh Dadkhahfar <dadkhahfar@itland.ir>, 2006.
+msgid ""
+msgstr ""
+"Project-Id-Version: libkleopatra\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2017-07-12 06:56+0200\n"
+"PO-Revision-Date: 2007-08-20 16:45+0330\n"
+"Last-Translator: Nazanin Kazemi <kazemi@itland.ir>\n"
+"Language-Team: Persian <kde-i18n-fa@kde.org>\n"
+"Language: fa\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: kleo/checksumdefinition.cpp:107
+#, kde-format
+msgid "Error in checksum definition %1: %2"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:157
+#, kde-format
+msgid "Cannot use both %f and | in '%1'"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:167
+#, kde-format
+msgid "Quoting error in '%1' entry"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:170
+#, kde-format
+msgid "'%1' too complex (would need shell)"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:174
+#, kde-format
+msgid "'%1' entry is empty/missing"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:183
+#, kde-format
+msgid "'%1' empty or not found"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:222
+#, kde-format
+msgid "'id' entry is empty/missing"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:225
+#, kde-format
+msgid "'output-file' entry is empty/missing"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:228
+#, kde-format
+msgid "'file-patterns' entry is empty/missing"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:395
+#, kde-format
+msgid "Caught unknown exception in group %1"
+msgstr ""
+
+#: kleo/dn.cpp:507
+#, kde-format
+msgid "Common name"
+msgstr "نام مشترک"
+
+#: kleo/dn.cpp:508
+#, kde-format
+msgid "Surname"
+msgstr "نام خانوادگی"
+
+#: kleo/dn.cpp:509
+#, kde-format
+msgid "Given name"
+msgstr "نام داده شده"
+
+#: kleo/dn.cpp:510
+#, kde-format
+msgid "Location"
+msgstr "محل"
+
+#: kleo/dn.cpp:511
+#, kde-format
+msgid "Title"
+msgstr "عنوان"
+
+#: kleo/dn.cpp:512
+#, kde-format
+msgid "Organizational unit"
+msgstr "واحد سازمانی"
+
+#: kleo/dn.cpp:513
+#, kde-format
+msgid "Organization"
+msgstr "سازمان"
+
+#: kleo/dn.cpp:514
+#, kde-format
+msgid "Postal code"
+msgstr "کد پستی"
+
+#: kleo/dn.cpp:515
+#, kde-format
+msgid "Country code"
+msgstr "کد کشور"
+
+#: kleo/dn.cpp:516
+#, kde-format
+msgid "State or province"
+msgstr "ایالت یا استان"
+
+#: kleo/dn.cpp:517
+#, kde-format
+msgid "Domain component"
+msgstr "مؤلفه دامنه"
+
+#: kleo/dn.cpp:518
+#, kde-format
+msgid "Business category"
+msgstr "دسته تجارت"
+
+#: kleo/dn.cpp:519
+#, kde-format
+msgid "Email address"
+msgstr "نشانی رایانامهای"
+
+#: kleo/dn.cpp:520
+#, kde-format
+msgid "Mail address"
+msgstr "نشانی نامه"
+
+#: kleo/dn.cpp:521
+#, kde-format
+msgid "Mobile phone number"
+msgstr "شماره تلفن همراه"
+
+#: kleo/dn.cpp:522
+#, kde-format
+msgid "Telephone number"
+msgstr "شماره تلفن"
+
+#: kleo/dn.cpp:523
+#, kde-format
+msgid "Fax number"
+msgstr "شماره دورنگار"
+
+#: kleo/dn.cpp:524
+#, kde-format
+msgid "Street address"
+msgstr "نشانی خیابان"
+
+#: kleo/dn.cpp:525
+#, kde-format
+msgid "Unique ID"
+msgstr "شناسه یکتا"
+
+#: kleo/enum.cpp:57
+#, kde-format
+msgid "Inline OpenPGP (deprecated)"
+msgstr "OpenPGP درونبرنامهای )قبیح("
+
+#: kleo/enum.cpp:62
+#, kde-format
+msgid "OpenPGP/MIME"
+msgstr "OpenPGP/مایم"
+
+#: kleo/enum.cpp:67 ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "S/MIME"
+msgstr "S/مایم"
+
+#: kleo/enum.cpp:72
+#, kde-format
+msgid "S/MIME Opaque"
+msgstr "S/مایم Opaque"
+
+#: kleo/enum.cpp:104
+#, kde-format
+msgid "Any"
+msgstr "هر"
+
+#: kleo/enum.cpp:177
+#, kde-format
+msgid "Never Encrypt"
+msgstr "هرگز رمزبندی نکنید"
+
+#: kleo/enum.cpp:179
+#, kde-format
+msgid "Always Encrypt"
+msgstr "رمزبندی همیشگی"
+
+#: kleo/enum.cpp:181
+#, kde-format
+msgid "Always Encrypt If Possible"
+msgstr "رمزبندی همیشگی در صورت امکان"
+
+#: kleo/enum.cpp:183 kleo/enum.cpp:240
+#, kde-format
+msgid "Ask"
+msgstr "سؤال کردن"
+
+#: kleo/enum.cpp:185 kleo/enum.cpp:242
+#, kde-format
+msgid "Ask Whenever Possible"
+msgstr "سؤال، در صورت امکان"
+
+#: kleo/enum.cpp:187
+#, kde-kuit-format
+msgctxt "no specific preference"
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>هیچکدام</placeholder>"
+
+#: kleo/enum.cpp:234
+#, kde-format
+msgid "Never Sign"
+msgstr "هرگز امضا نکنید"
+
+#: kleo/enum.cpp:236
+#, kde-format
+msgid "Always Sign"
+msgstr "همیشه امضا کنید"
+
+#: kleo/enum.cpp:238
+#, kde-format
+msgid "Always Sign If Possible"
+msgstr "در صورت امکان، همیشه امضا کنید"
+
+#: kleo/enum.cpp:244
+#, kde-format
+msgctxt "no specific preference"
+msgid "<none>"
+msgstr ""
+
+#: kleo/keyfiltermanager.cpp:85
+#, fuzzy, kde-format
+#| msgid "&Start Certificate Manager"
+msgid "All Certificates"
+msgstr "&آغاز مدیر گواهینامه"
+
+#: kleo/keyfiltermanager.cpp:100
+#, kde-format
+msgid "My Certificates"
+msgstr ""
+
+#: kleo/keyfiltermanager.cpp:118
+#, fuzzy, kde-format
+#| msgid "&Start Certificate Manager"
+msgid "Trusted Certificates"
+msgstr "&آغاز مدیر گواهینامه"
+
+#: kleo/keyfiltermanager.cpp:135
+#, fuzzy, kde-format
+#| msgid "&Start Certificate Manager"
+msgid "Fully Trusted Certificates"
+msgstr "&آغاز مدیر گواهینامه"
+
+#: kleo/keyfiltermanager.cpp:152
+#, fuzzy, kde-format
+#| msgid "&Start Certificate Manager"
+msgid "Other Certificates"
+msgstr "&آغاز مدیر گواهینامه"
+
+#: kleo/keyfiltermanager.cpp:166
+#, fuzzy, kde-format
+#| msgid "&Start Certificate Manager"
+msgid "VS-compliant Certificates"
+msgstr "&آغاز مدیر گواهینامه"
+
+#: kleo/keyfiltermanager.cpp:184
+#, fuzzy, kde-format
+#| msgid "&Start Certificate Manager"
+msgid "Not validated Certificates"
+msgstr "&آغاز مدیر گواهینامه"
+
+#: ui/auditlogviewer.cpp:49
+#, kde-format
+msgid "View GnuPG Audit Log"
+msgstr ""
+
+#: ui/auditlogviewer.cpp:53
+#, kde-format
+msgid "&Copy to Clipboard"
+msgstr ""
+
+#: ui/auditlogviewer.cpp:59
+#, kde-format
+msgid "&Save to Disk..."
+msgstr ""
+
+#: ui/auditlogviewer.cpp:95
+#, kde-format
+msgid "Choose File to Save GnuPG Audit Log to"
+msgstr ""
+
+#: ui/auditlogviewer.cpp:118
+#, kde-format
+msgid "Could not save to file \"%1\": %2"
+msgstr ""
+
+#: ui/auditlogviewer.cpp:120
+#, kde-format
+msgid "File Save Error"
+msgstr ""
+
+#: ui/cryptoconfigdialog.cpp:44
+#, kde-format
+msgid "Configure GnuPG Backend"
+msgstr ""
+
+#: ui/cryptoconfigdialog.cpp:55
+#, kde-format
+msgid "&Reset"
+msgstr "&بازنشانی"
+
+#: ui/cryptoconfigmodule.cpp:160
+#, fuzzy, kde-format
+#| msgid "Encryption keys:"
+msgid "GpgConf Error"
+msgstr "کلیدهای رمزبندی:"
+
+#: ui/cryptoconfigmodule.cpp:216
+#, kde-format
+msgid ""
+"The gpgconf tool used to provide the information for this dialog does not "
+"seem to be installed properly. It did not return any components. Try running "
+"\"%1\" on the command line for more information."
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:496
+#, kde-format
+msgctxt ""
+"Translate this to 'yes' or 'no' (use the English words!) depending on "
+"whether your language uses Sentence style capitalisation in GUI labels (yes) "
+"or not (no). Context: We get some backend strings in that have the wrong "
+"capitalizaion (in English, at least) so we need to force the first character "
+"to upper-case. It is this behaviour you can control for your language with "
+"this translation."
+msgid "yes"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:546
+#, kde-format
+msgid "0 - None"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:547
+#, kde-format
+msgid "1 - Basic"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:548
+#, kde-format
+msgid "2 - Verbose"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:549
+#, kde-format
+msgid "3 - More Verbose"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:550
+#, kde-format
+msgid "4 - All"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:559
+#, kde-format
+msgid "Set the debugging level to"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:787
+#, kde-format
+msgid "Show..."
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:787 ui/cryptoconfigmodule.cpp:876
+#, kde-format
+msgid "Edit..."
+msgstr "ویرایش..."
+
+#: ui/cryptoconfigmodule.cpp:841
+#, kde-format
+msgid "Configure LDAP Servers"
+msgstr "پیکربندی کارسازهای LDAP"
+
+#: ui/cryptoconfigmodule.cpp:862
+#, fuzzy, kde-format
+#| msgid "No server configured yet"
+msgid "None configured"
+msgstr "هنوز کارسازی پیکربندی نشده"
+
+#: ui/cryptoconfigmodule.cpp:864
+#, kde-format
+msgid "1 server configured"
+msgid_plural "%1 servers configured"
+msgstr[0] "%1 کارساز پیکربندی شده"
+
+#: ui/cryptoconfigmodule.cpp:879
+#, kde-format
+msgid "Use keyserver at"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:968
+#, fuzzy, kde-format
+#| msgid "Configure LDAP Servers"
+msgid "Configure Keyservers"
+msgstr "پیکربندی کارسازهای LDAP"
+
+#: ui/directoryserviceswidget.cpp:67
+#, fuzzy, kde-format
+#| msgid "never"
+msgctxt "default server name, keep it a valid domain name, ie. no spaces"
+msgid "server"
+msgstr "هرگز"
+
+#: ui/directoryserviceswidget.cpp:95
+#, kde-format
+msgid "hkp"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:96
+#, kde-format
+msgid "http"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:97
+#, kde-format
+msgid "https"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:98
+#, kde-format
+msgid "ftp"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:99
+#, kde-format
+msgid "ftps"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:100
+#, kde-format
+msgid "ldap"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:101
+#, kde-format
+msgid "ldaps"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:588
+#, kde-format
+msgid "Server Name"
+msgstr "نام کارساز"
+
+#: ui/directoryserviceswidget.cpp:589
+#, fuzzy, kde-format
+#| msgid "Server Name"
+msgid "Server Port"
+msgstr "نام کارساز"
+
+#: ui/directoryserviceswidget.cpp:590
+#, kde-format
+msgid "Base DN"
+msgstr "نام دامنه پایه"
+
+#: ui/directoryserviceswidget.cpp:591
+#, kde-format
+msgid "User Name"
+msgstr "نام کاربر"
+
+#: ui/directoryserviceswidget.cpp:592
+#, kde-format
+msgid "Password"
+msgstr "اسم رمز"
+
+#: ui/directoryserviceswidget.cpp:614
+#, kde-format
+msgid "(read-only)"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:616
+#, kde-format
+msgctxt "amended tooltip; %1: original tooltip"
+msgid "%1 (read-only)"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:739
+#, kde-format
+msgid ""
+"Enter the name or IP address of the server hosting the directory service."
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:741
+#, kde-format
+msgid ""
+"<b>(Optional, the default is fine in most cases)</b> Pick the port number "
+"the directory service is listening on."
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:744
+#, kde-format
+msgid ""
+"<b>(Only for LDAP)</b> Enter the base DN for this LDAP server to limit "
+"searches to only that subtree of the directory."
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:747
+#, kde-format
+msgid "<b>(Optional)</b> Enter your user name here, if needed."
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:749
+#, kde-format
+msgid ""
+"<b>(Optional, not recommended)</b> Enter your password here, if needed. Note "
+"that the password will be saved in the clear in a config file in your home "
+"directory."
+msgstr ""
+
+#. i18n: ectx: property (windowTitle), widget (QWidget, DirectoryServicesWidget)
+#: ui/directoryserviceswidget.ui:14
+#, kde-format
+msgid "Directory Services Configuration"
+msgstr "پیکربندی خدمات فهرست راهنما"
+
+#. i18n: ectx: property (text), widget (QLabel, pgpKSLabel)
+#: ui/directoryserviceswidget.ui:22
+#, fuzzy, kde-format
+#| msgid "OpenPGP Key Selection"
+msgid "OpenPGP Keyserver:"
+msgstr "گزینش کلید OpenPGP"
+
+#. i18n: ectx: property (title), widget (QGroupBox, x500LA)
+#: ui/directoryserviceswidget.ui:35
+#, fuzzy, kde-format
+#| msgid "X.&500 directory services:"
+msgid "X509 Directory services:"
+msgstr "خدمات فهرست راهنمای X.&۵۰۰"
+
+#. i18n: ectx: property (whatsThis), widget (QTreeView, treeView)
+#: ui/directoryserviceswidget.ui:43
+#, kde-format
+msgid ""
+"This is a list of all directory services that are configured for use with "
+"X.509."
+msgstr ""
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:70
+#, kde-format
+msgid "Click to add a service"
+msgstr "برای افزودن خدمت، فشار دهید"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:73
+#, kde-format
+msgid ""
+"Click this button to create a new directory service entry as a clone of the "
+"currently selected one (or with default values, if no other is selected). "
+"You can then configure details in the table on the left hand."
+msgstr ""
+
+#. i18n: ectx: property (text), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:76
+#, kde-format
+msgid "New"
+msgstr ""
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:92
+#, kde-format
+msgid "Click to remove the currently selected service"
+msgstr "فشار دهید تا خدمتی که اخیراً برگزیده شده، حذف شود"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:95
+#, kde-format
+msgid ""
+"Click this button to remove the currently selected directory service. The "
+"change will only take effect once you acknowledge the main configuration "
+"dialog."
+msgstr ""
+
+#. i18n: ectx: property (text), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:98
+#, kde-format
+msgid "Delete"
+msgstr ""
+
+#. i18n: ectx: property (whatsThis), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:128
+#, kde-format
+msgid ""
+"Use this option to switch display of username and password information on or "
+"off in the above table."
+msgstr ""
+
+#. i18n: ectx: property (text), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:131
+#, kde-format
+msgid "Show user and password information"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:73
+#, kde-format
+msgid "Description"
+msgstr "توصیف"
+
+#: ui/dnattributeorderconfigwidget.cpp:91
+#, kde-format
+msgid "Available attributes:"
+msgstr "خصیصههای موجود:"
+
+#: ui/dnattributeorderconfigwidget.cpp:92
+#, kde-format
+msgid "Current attribute order:"
+msgstr "ترتیب خصیصه جاری:"
+
+#: ui/dnattributeorderconfigwidget.cpp:112
+#, kde-format
+msgid "All others"
+msgstr "همه موارد دیگر"
+
+#: ui/dnattributeorderconfigwidget.cpp:129
+#, kde-format
+msgid "Move to top"
+msgstr "حرکت به بالا"
+
+#: ui/dnattributeorderconfigwidget.cpp:130
+#, kde-format
+msgid "Move one up"
+msgstr "حرکت یکی به بالا"
+
+#: ui/dnattributeorderconfigwidget.cpp:131
+#, kde-format
+msgid "Remove from current attribute order"
+msgstr "حذف از ترتیب جاری خصیصه"
+
+#: ui/dnattributeorderconfigwidget.cpp:132
+#, kde-format
+msgid "Add to current attribute order"
+msgstr "افزودن به ترتیب جاری خصیصه"
+
+#: ui/dnattributeorderconfigwidget.cpp:133
+#, kde-format
+msgid "Move one down"
+msgstr "حرکت یکی به پایین"
+
+#: ui/dnattributeorderconfigwidget.cpp:134
+#, kde-format
+msgid "Move to bottom"
+msgstr "حرکت به انتها"
+
+#: ui/keyapprovaldialog.cpp:87
+#, kde-kuit-format
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>هیچکدام</placeholder>"
+
+#: ui/keyapprovaldialog.cpp:88
+#, kde-format
+msgid "Never Encrypt with This Key"
+msgstr "هرگز با این کلید رمزبندی نکنید"
+
+#: ui/keyapprovaldialog.cpp:89
+#, kde-format
+msgid "Always Encrypt with This Key"
+msgstr "همیشه با این کلید رمزبندی کنید"
+
+#: ui/keyapprovaldialog.cpp:90
+#, kde-format
+msgid "Encrypt Whenever Encryption is Possible"
+msgstr "رمزبندی، هر گاه که رمزبندی ممکن باشد"
+
+#: ui/keyapprovaldialog.cpp:91
+#, kde-format
+msgid "Always Ask"
+msgstr "همیشه سؤال شود"
+
+#: ui/keyapprovaldialog.cpp:92
+#, kde-format
+msgid "Ask Whenever Encryption is Possible"
+msgstr "سؤال در صورت امکان رمزبندی"
+
+#: ui/keyapprovaldialog.cpp:113
+#, kde-format
+msgid "Encryption Key Approval"
+msgstr "تصویب کلید رمزبندی"
+
+#: ui/keyapprovaldialog.cpp:129
+#, kde-format
+msgid "The following keys will be used for encryption:"
+msgstr "کلیدهای زیر برای رمزبندی استفاده میشوند:"
+
+#: ui/keyapprovaldialog.cpp:145
+#, kde-format
+msgid "Your keys:"
+msgstr "کلیدهای شما:"
+
+#: ui/keyapprovaldialog.cpp:157
+#, kde-format
+msgid "Recipient:"
+msgstr "گیرنده:"
+
+#: ui/keyapprovaldialog.cpp:162
+#, kde-format
+msgid "Encryption keys:"
+msgstr "کلیدهای رمزبندی:"
+
+#: ui/keyapprovaldialog.cpp:169
+#, kde-format
+msgid "Encryption preference:"
+msgstr "تنظیم رمزبندی:"
+
+#: ui/keyrequester.cpp:118
+#, kde-format
+msgid "Clear"
+msgstr "پاک کردن"
+
+#: ui/keyrequester.cpp:121
+#, kde-format
+msgid "Change..."
+msgstr "تغییر..."
+
+#: ui/keyrequester.cpp:232 ui/keyselectiondialog.cpp:256
+#, kde-kuit-format
+msgid "<placeholder>unknown</placeholder>"
+msgstr "<placeholder>ناشناخته</placeholder>"
+
+#: ui/keyrequester.cpp:246 ui/keyselectiondialog.cpp:657
+#, kde-format
+msgid ""
+"<qt><p>An error occurred while fetching the keys from the backend:</p><p><b>"
+"%1</b></p></qt>"
+msgstr ""
+"<qt><p>هنگام واکشی کلیدها از پایانه پشتیبانی، خطایی رخ داد:</p><p><b>%1</b></"
+"p></qt>"
+
+#: ui/keyrequester.cpp:251 ui/keyrequester.cpp:283 ui/keyrequester.cpp:306
+#: ui/keyselectiondialog.cpp:630 ui/keyselectiondialog.cpp:662
+#, kde-format
+msgid "Key Listing Failed"
+msgstr "خرابی در فهرست کردن کلید"
+
+#: ui/keyrequester.cpp:281
+#, kde-format
+msgid ""
+"The OpenPGP backend does not support listing keys. Check your installation."
+msgstr ""
+"پایانه پشتیبانی OpenPGP از فهرست کردن کلیدها پشتیبانی نمیکند. نصب خود را "
+"بررسی کنید."
+
+#: ui/keyrequester.cpp:304
+#, kde-format
+msgid ""
+"The S/MIME backend does not support listing keys. Check your installation."
+msgstr ""
+"پایانه پشتیبانی S/مایم از فهرست کردن کلیدها پشتیبانی نمیکند. نصب خود را "
+"بررسی کنید."
+
+#: ui/keyrequester.cpp:426
+#, kde-format
+msgid "OpenPGP Key Selection"
+msgstr "گزینش کلید OpenPGP"
+
+#: ui/keyrequester.cpp:427
+#, kde-format
+msgid "Please select an OpenPGP key to use."
+msgstr "لطفاً، کلید OpenPGP را برای استفاده برگزینید."
+
+#: ui/keyrequester.cpp:429
+#, kde-format
+msgid "S/MIME Key Selection"
+msgstr "گزینش کلید S/مایم"
+
+#: ui/keyrequester.cpp:430
+#, kde-format
+msgid "Please select an S/MIME key to use."
+msgstr "لطفاً، کلید S/مایم را برای استفاده برگزینید."
+
+#: ui/keyrequester.cpp:432
+#, kde-format
+msgid "Key Selection"
+msgstr "گزینش کلید"
+
+#: ui/keyrequester.cpp:433
+#, kde-format
+msgid "Please select an (OpenPGP or S/MIME) key to use."
+msgstr "لطفاً، کلید )OpenPGP یا S/مایم( برای استفاده برگزینید."
+
+#: ui/keyselectioncombo.cpp:195
+#, kde-format
+msgctxt "Name <email> (validity, type, created: date)"
+msgid "%1 (%2, %3, created: %4)"
+msgstr ""
+
+#: ui/keyselectioncombo.cpp:196
+#, kde-format
+msgctxt "Name <email>"
+msgid "%1 <%2>"
+msgstr ""
+
+#: ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "OpenPGP"
+msgstr ""
+
+#: ui/keyselectioncombo.cpp:347
+#, fuzzy, kde-format
+#| msgid "Fetching keys..."
+msgid "Loading keys ..."
+msgstr "در حال واکشی کلیدها..."
+
+#: ui/keyselectiondialog.cpp:98
+#, kde-format
+msgid "The key is not valid."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:106
+#, kde-format
+msgid "The key is expired."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:110
+#, kde-format
+msgid "The key is revoked."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:114
+#, kde-format
+msgid "The key is disabled."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:122
+#, fuzzy, kde-format
+#| msgid "The following keys will be used for encryption:"
+msgid "The key is not designated for encryption."
+msgstr "کلیدهای زیر برای رمزبندی استفاده میشوند:"
+
+#: ui/keyselectiondialog.cpp:128
+#, kde-format
+msgid "The key is not designated for signing."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:134
+#, kde-format
+msgid "The key is not designated for certifying."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:140
+#, kde-format
+msgid "The key is not designated for authentication."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:148
+#, kde-format
+msgid "The key is not secret."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:163
+#, kde-format
+msgid "The key is not trusted enough."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:169
+#, kde-format
+msgid "The key can be used."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:230
+#, kde-format
+msgid "Key ID"
+msgstr "شناسه کلید"
+
+#: ui/keyselectiondialog.cpp:231
+#, kde-format
+msgid "User ID"
+msgstr "شناسه کاربر"
+
+#: ui/keyselectiondialog.cpp:279
+#, kde-format
+msgid "never"
+msgstr "هرگز"
+
+#: ui/keyselectiondialog.cpp:289 ui/keyselectiondialog.cpp:291
+#: ui/keyselectiondialog.cpp:300 ui/keyselectiondialog.cpp:302
+#, kde-format
+msgid "unknown"
+msgstr "ناشناخته"
+
+#: ui/keyselectiondialog.cpp:289
+#, kde-format
+msgid "OpenPGP key for <b>%1</b>"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:291
+#, kde-format
+msgid "S/MIME key for <b>%1</b>"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:298
+#, kde-format
+msgctxt "Key creation date"
+msgid "Created"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:299
+#, kde-format
+msgctxt "Key Expiration date"
+msgid "Expiry"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:300
+#, kde-format
+msgctxt "Key fingerprint"
+msgid "Fingerprint"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:302
+#, kde-format
+msgctxt "Key issuer"
+msgid "Issuer"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:304
+#, kde-format
+msgctxt "Key status"
+msgid "Status"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:456
+#, fuzzy, kde-format
+#| msgid "&Start Certificate Manager"
+msgid "Search for &External Certificates"
+msgstr "&آغاز مدیر گواهینامه"
+
+#: ui/keyselectiondialog.cpp:470
+#, kde-format
+msgid "&Search for:"
+msgstr "&جستجو برای:"
+
+#: ui/keyselectiondialog.cpp:494
+#, kde-format
+msgid "&Remember choice"
+msgstr "&یادآوری انتخاب"
+
+#: ui/keyselectiondialog.cpp:497
+#, kde-format
+msgid ""
+"<qt><p>If you check this box your choice will be stored and you will not be "
+"asked again.</p></qt>"
+msgstr ""
+"<qt><p>در صورت علامت زدن این جعبه، انتخاب شما ذخیره شده و از شما دوباره سؤال "
+"نمیشود.</p></qt>"
+
+#: ui/keyselectiondialog.cpp:509
+#, kde-format
+msgid "&Reread Keys"
+msgstr "کلیدهای &بازخوانی"
+
+#: ui/keyselectiondialog.cpp:510
+#, kde-format
+msgid "&Start Certificate Manager"
+msgstr "&آغاز مدیر گواهینامه"
+
+#: ui/keyselectiondialog.cpp:628
+#, kde-format
+msgid "No backends found for listing keys. Check your installation."
+msgstr ""
+"برای فهرست کردن کلیدها، پایانه پشتیبانی یافت نشد. نصب خود را بررسی کنید."
+
+#: ui/keyselectiondialog.cpp:644
+#, kde-format
+msgid "Could not start certificate manager; please check your installation."
+msgstr "نتوانست مدیر گواهینامه را آغاز کند؛ لطفاً، نصب خود را بررسی کنید."
+
+#: ui/keyselectiondialog.cpp:646
+#, kde-format
+msgid "Certificate Manager Error"
+msgstr "خطای مدیر گواهینامه"
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Checking selected keys..."
+msgstr "در حال بررسی کلیدهای برگزیده..."
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Fetching keys..."
+msgstr "در حال واکشی کلیدها..."
+
+#: ui/keyselectiondialog.cpp:731
+#, kde-format
+msgid ""
+"<qt>One backend returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgid_plural ""
+"<qt>%1 backends returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgstr[0] ""
+"<qt>%1 پایانه پشتیبانی، خروجی برشدار را بازگرداند.<p>همه کلیدهای موجود نمایش "
+"داده نمیشوند</p></qt>"
+
+#: ui/keyselectiondialog.cpp:736
+#, kde-format
+msgid "Key List Result"
+msgstr "نتایج فهرست کلید"
+
+#: ui/keyselectiondialog.cpp:856
+#, kde-format
+msgid "Recheck Key"
+msgstr "کلید بررسی مجدد"
+
+#: ui/messagebox.cpp:71
+#, kde-format
+msgid "Your system does not have support for GnuPG Audit Logs"
+msgstr ""
+
+#: ui/messagebox.cpp:72
+#, kde-format
+msgid "System Error"
+msgstr ""
+
+#: ui/messagebox.cpp:79
+#, kde-format
+msgid ""
+"An error occurred while trying to retrieve the GnuPG Audit Log:\n"
+"%1"
+msgstr ""
+
+#: ui/messagebox.cpp:81
+#, kde-format
+msgid "GnuPG Audit Log Error"
+msgstr ""
+
+#: ui/messagebox.cpp:88
+#, kde-format
+msgid "No GnuPG Audit Log available for this operation."
+msgstr ""
+
+#: ui/messagebox.cpp:89
+#, kde-format
+msgid "No GnuPG Audit Log"
+msgstr ""
+
+#: ui/messagebox.cpp:109 ui/messagebox.cpp:115
+#, kde-format
+msgid "GnuPG Audit Log Viewer"
+msgstr ""
+
+#: ui/messagebox.cpp:121
+#, kde-format
+msgid "Signing failed: %1"
+msgstr "خرابی در امضا: %1"
+
+#: ui/messagebox.cpp:122
+#, kde-format
+msgid "Signing successful"
+msgstr ""
+
+#: ui/messagebox.cpp:133
+#, kde-format
+msgid "Encryption failed: %1"
+msgstr "خرابی در رمزبندی: %1"
+
+#: ui/messagebox.cpp:134
+#, fuzzy, kde-format
+#| msgid "Encryption keys:"
+msgid "Encryption successful"
+msgstr "کلیدهای رمزبندی:"
+
+#: ui/messagebox.cpp:155
+#, fuzzy, kde-format
+#| msgid "Scan Results"
+msgid "Signing Result"
+msgstr "نتایج پویش"
+
+#: ui/messagebox.cpp:167
+#, kde-format
+msgid "Signing Error"
+msgstr ""
+
+#: ui/messagebox.cpp:179 ui/messagebox.cpp:203
+#, fuzzy, kde-format
+#| msgid "Encryption keys:"
+msgid "Encryption Result"
+msgstr "کلیدهای رمزبندی:"
+
+#: ui/messagebox.cpp:191 ui/messagebox.cpp:215
+#, fuzzy, kde-format
+#| msgid "Encryption keys:"
+msgid "Encryption Error"
+msgstr "کلیدهای رمزبندی:"
+
+#: ui/messagebox.cpp:263
+#, kde-format
+msgid "&Show Audit Log"
+msgstr ""
+
+#: ui/progressdialog.cpp:91
+#, kde-format
+msgid "%1: %2"
+msgstr ""
+
+#, fuzzy
+#~| msgid "OpenPGP/MIME"
+#~ msgctxt "New OpenPGP Directory Server"
+#~ msgid "OpenPGP"
+#~ msgstr "OpenPGP/مایم"
+
+#~ msgid "General"
+#~ msgstr "عمومی"
+
+#~ msgid "Chiasmus command line tool"
+#~ msgstr "ابزار خط فرمان chiasmus"
+
+#~ msgid "Unsupported protocol \"%1\""
+#~ msgstr "قرارداد پشتیبانینشده »%1«"
+
+#~ msgid "File \"%1\" does not exist or is not executable."
+#~ msgstr "پرونده »%1« وجود ندارد، یا قابل اجرا نیست."
+
+#~ msgid "Output from chiasmus"
+#~ msgstr "خروجی از chiasmus"
+
+#~ msgid "Decryption failed: %1"
+#~ msgstr "خرابی در سرگشایی: %1"
+
+#~ msgid ""
+#~ "The following was received on stderr:\n"
+#~ "%1"
+#~ msgstr ""
+#~ "موارد زیر روی stderr دریافت شده بود:\n"
+#~ "%1"
+
+#~ msgid "Failed to load %1: %2"
+#~ msgstr "خرابی در بار کردن %1: %2"
+
+#~ msgid "Library does not contain the symbol \"Chiasmus\"."
+#~ msgstr "کتابخانه، حاوی نماد »Chiasmus« نیست."
+
+#~ msgid "Scanning directory %1..."
+#~ msgstr "پویش فهرست راهنمای %1..."
+
+#~ msgid "GPGME was compiled without support for %1."
+#~ msgstr "GPGME بدون پشتیبانی برای %1 ترجمه شده بود."
+
+#~ msgid "Engine %1 is not installed properly."
+#~ msgstr "موتور %1 درست نصب نمیشود."
+
+#~ msgid "Engine %1 version %2 installed, but at least version %3 is required."
+#~ msgstr "موتور %1 نسخه %2 نصب شد، اما در نهایت نسخه %3 لازم است."
+
+#~ msgid "Unknown problem with engine for protocol %1."
+#~ msgstr "مسئله ناشناخته در مورد موتور برای قرارداد %1."
+
+#~ msgid "program terminated unexpectedly"
+#~ msgstr "برنامه به صورت غیر منتظره پایان یافت"
+
+#~ msgid "program not found or cannot be started"
+#~ msgstr "برنامه یافت نشده یا نمیتواند آغاز شود"
+
+#~ msgid "<qt>Failed to execute gpgconf:<p>%1</p></qt>"
+#~ msgstr "<qt>خرابی در اجرای gpgconf:<p>%1</p></qt>"
+
+#, fuzzy
+#~| msgid ""
+#~| "Could not start gpgconf\n"
+#~| "Check that gpgconf is in the PATH and that it can be started"
+#~ msgid ""
+#~ "Could not start gpgconf.\n"
+#~ "Check that gpgconf is in the PATH and that it can be started."
+#~ msgstr ""
+#~ " gpgconf را نتوانست آغاز کند\n"
+#~ "بررسی کنید که gpgconf در PATH باشد و بتوان آن را آغاز کرد"
+
+#~ msgid "Error from gpgconf while saving configuration: %1"
+#~ msgstr "خطا از gpgconf هنگام ذخیره پیکربندی: %1"
+
+#~ msgid "Generating DSA key..."
+#~ msgstr "در حال تولید کلید DSA..."
+
+#~ msgid "Generating ElGamal key..."
+#~ msgstr "در حال تولید کلید ElGamal..."
+
+#~ msgid "Searching for a large prime number..."
+#~ msgstr "در حال جستجو برای بزرگترین عدد اول..."
+
+#, fuzzy
+#~| msgid ""
+#~| "Waiting for new entropy from random number generator (you might want to "
+#~| "excercise the harddisks or move the mouse)..."
+#~ msgid ""
+#~ "Waiting for new entropy from random number generator (you might want to "
+#~ "exercise the harddisks or move the mouse)..."
+#~ msgstr ""
+#~ "منتظر بودن برای آنتروپی از مولد عدد تصادفی )ممکن است بخواهید که با "
+#~ "دیسکهای سخت تمرین کنید یا موشی را حرکت دهید(..."
+
+#~ msgid "Please wait..."
+#~ msgstr "لطفاً، منتظر بمانید..."
+
+#~ msgid ""
+#~ "Starting gpg-agent (you should consider starting a global instance "
+#~ "instead)..."
+#~ msgstr ""
+#~ "آغاز عامل gpg )باید آغاز یک نمونه سراسری را به جای آن در نظر بگیرید(..."
+
+#~ msgid "While scanning for %1 support in backend %2:"
+#~ msgstr "هنگام پویش برای %1 پشتیبانی در پایانه پشتیبانی %2:"
+
+#~ msgid ""
+#~ "OpenPGP key for %1\n"
+#~ "Created: %2\n"
+#~ "Expiry: %3\n"
+#~ "Fingerprint: %4"
+#~ msgstr ""
+#~ "کلید OpenPGP برای %1\n"
+#~ "ایجاد: %2\n"
+#~ "انقضا: %3\n"
+#~ "اثر انگشت: %4"
+
+#~ msgid ""
+#~ "S/MIME key for %1\n"
+#~ "Created: %2\n"
+#~ "Expiry: %3\n"
+#~ "Fingerprint: %4\n"
+#~ "Issuer: %5"
+#~ msgstr ""
+#~ "کلید S/مایم برای %1\n"
+#~ "ایجاد: %2\n"
+#~ "انقضا: %3\n"
+#~ "اثر انگشت: %4\n"
+#~ "فرستنده: %5"
+
+#~ msgid "Add or Change Directory Service"
+#~ msgstr "افزایش یا تغییر خدمت فهرست راهنما"
+
+#~ msgid "&Server name:"
+#~ msgstr "نام &کارساز:"
+
+#~ msgid "389"
+#~ msgstr "۳۸۹"
+
+#~ msgid "&User name (optional):"
+#~ msgstr "نام &کاربر )اختیاری(:"
+
+#~ msgid "Pass&word (optional):"
+#~ msgstr "&اسم رمز )اختیاری(:"
+
+#~ msgid "&OK"
+#~ msgstr "&تأیید"
+
+#~ msgid "&Cancel"
+#~ msgstr "&لغو"
+
+#~ msgid "&Base DN:"
+#~ msgstr "نام دامنه &پایه:"
+
+#~ msgid "&Port:"
+#~ msgstr "&درگاه:"
+
+#~ msgctxt "NAME OF TRANSLATORS"
+#~ msgid "Your names"
+#~ msgstr "مریم سادات رضوی"
+
+#~ msgctxt "EMAIL OF TRANSLATORS"
+#~ msgid "Your emails"
+#~ msgstr "razavi@itland.ir"
+
+#~ msgid "failed"
+#~ msgstr "خرابشده"
+
+#~ msgid "Available Backends"
+#~ msgstr "پایانههای پشتیبان موجود"
+
+#~ msgid "Confi&gure..."
+#~ msgstr "&پیکربندی..."
+
+#~ msgid "Rescan"
+#~ msgstr "پویش مجدد"
+
+#~ msgid "The following problems where encountered during scanning:"
+#~ msgstr "حین پویش، مسائل زیر رخ داده بودند:"
+
+#, fuzzy
+#~| msgid "Scan Results"
+#~ msgctxt "@title:window Results of the scanning"
+#~ msgid "Scan Results"
+#~ msgstr "نتایج پویش"
+
+#~ msgid "(Unknown Protocol)"
+#~ msgstr ")قرارداد ناشناخته("
+
+#~ msgid "Error while initializing plugin \"%1\""
+#~ msgstr "خطا هنگام مقداردهی اولیه وصله »%1«"
+
+#~ msgid ""
+#~ "You need a passphrase to unlock the secret key for user:<br/> %1 (retry)"
+#~ msgstr ""
+#~ "جهت باز کردن کلید سرَی برای کاربر، به عبارت عبور نیاز دارید:<br/> %1 )سعی "
+#~ "مجدد("
+
+#~ msgid "You need a passphrase to unlock the secret key for user:<br/> %1"
+#~ msgstr "جهت باز کردن کلید سرَی برای کاربر، به عبارت عبور نیاز دارید:<br/> %1"
+
+#~ msgid ""
+#~ "This dialog will reappear every time the passphrase is needed. For a more "
+#~ "secure solution that also allows caching the passphrase, use gpg-agent."
+#~ msgstr ""
+#~ "هر گاه که عبارت عبور لازم است، این محاوره دوباره ظاهر میشود. برای راه حل "
+#~ "ایمن که اجازه پنهان کردن عبارت عبور را هم میدهد، از عامل gpg استفاده کنید."
+
+#~ msgid "gpg-agent was found in %1, but does not appear to be running."
+#~ msgstr "عامل gpg در %1 یافت شده بود، اما برای اجرا ظاهر نمیشود."
+
+#~ msgid "gpg-agent is part of gnupg-%1, which you can download from %2"
+#~ msgstr "عامل gpg بخشی از %1 gnupg است، که میتوانید از %2 بارگیری کنید"
+
+#~ msgid "For information on how to set up gpg-agent, see %1"
+#~ msgstr "جهت اطلاعات پیرامون چگونگی برپایی عامل gpg، به %1 مراجعه کنید"
+
+#~ msgid "Enter passphrase:"
+#~ msgstr "وارد کردن عبارت عبور:"
+
+#~ msgid "Passphrase Dialog"
+#~ msgstr "محاوره عبارت عبور"
+
+#~ msgid "Configure"
+#~ msgstr "پیکربندی"
+
+#~ msgid "Select Directory Services to Use Here"
+#~ msgstr "برگزیدن خدمات فهرست راهنمای مورد استفاده در اینجا"
+
+#~ msgid ""
+#~ "<qt>\n"
+#~ "<h1>X.500 Directory Services</h1>\n"
+#~ "You can use X.500 directory services to retrieve certificates and "
+#~ "certificate revocation lists that are not saved locally. Ask your local "
+#~ "administrator if you want to make use of this feature and are unsure "
+#~ "which directory service you can use.\n"
+#~ "<p>\n"
+#~ "If you do not use a directory service, you can still use local "
+#~ "certificates.\n"
+#~ "</qt>"
+#~ msgstr ""
+#~ "<qt>\n"
+#~ "<h1>خدمات فهرست راهنمای X.500</h1>\n"
+#~ "میتوانید از خدمات فهرست راهنمای X.500 برای بازیابی گواهینامهها و فهرستهای "
+#~ "فسخ گواهینامه که به صورت محلی ذخیره نشدهاند، استفاده کنید. اگر میخواهید "
+#~ "از این ویژگی استفاده کنید و مطمئن نیستید که از کدام خدمت فهرست راهنما "
+#~ "میتوان استفاده کرد، از سرپرست محلی خود سؤال کنید.\n"
+#~ "<p>\n"
+#~ "اگر از یک خدمت فهرست راهنما استفاده نمیکنید، هنوز میتوانید از "
+#~ "گواهینامههای محلی استفاده کنید.\n"
+#~ "</qt>"
+
+#~ msgid "Port"
+#~ msgstr "درگاه"
+
+#~ msgid ""
+#~ "<qt>\n"
+#~ "<h1>Add a Directory Service</h1>\n"
+#~ "By clicking this button, you can select a new directory service to be "
+#~ "used for retrieving certificates and CRLs. You will be asked for the "
+#~ "server name and an optional description.\n"
+#~ "</qt>"
+#~ msgstr ""
+#~ "<qt>\n"
+#~ "<h1>افزودن خدمت فهرست راهنما</h1>\n"
+#~ "با فشار این دکمه، میتوانید خدمت فهرست راهنمای جدید برگزینید تا برای "
+#~ "بازیابی گواهینامهها و CRLها استفاده شود. از شما، نام کارساز و یک توصیف "
+#~ "اختیاری خواسته میشود.\n"
+#~ "</qt>"
+
+#~ msgid "&Add Service..."
+#~ msgstr "&افزودن خدمت..."
+
+#~ msgid ""
+#~ "<qt>\n"
+#~ "<h1>Remove Directory Service</h1>\n"
+#~ "By clicking this button, you can remove the currently selected directory "
+#~ "service in the list above. You will have a chance to rethink your "
+#~ "decision before the entry is deleted from the list.\n"
+#~ "</qt>"
+#~ msgstr ""
+#~ "<qt>\n"
+#~ "<h1>حذف خدمت فهرست راهنما</h1>\n"
+#~ "با فشار این دکمه، میتوانید خدمت فهرست راهنمای برگزیده جاری را از فهرست "
+#~ "بالا حذف کنید. این شانس را دارید که پیش از این که مدخل از فهرست حذف شود، "
+#~ "درباره تصمیم خود فکر کنید.\n"
+#~ "</qt>"
+
+#~ msgid "&Remove Service"
+#~ msgstr "&حذف خدمت"
+
+#~ msgid "<placeholder>unnamed</placeholder>"
+#~ msgstr "<placeholder>بدون نام</placeholder>"
--- /dev/null
+# Translation of libkleopatra.po to Finnish
+#
+# KDE Finnish translation sprint participants:
+# Author: Lliehu
+# Kim Enkovaara <kim.enkovaara@iki.fi>, 2006.
+# Tommi Nieminen <translator@legisign.org>, 2010, 2011, 2013, 2016, 2017.
+# Lasse Liehu <lasse.liehu@gmail.com>, 2010, 2011, 2012, 2013, 2014, 2016.
+msgid ""
+msgstr ""
+"Project-Id-Version: libkleopatra\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2017-07-12 06:56+0200\n"
+"PO-Revision-Date: 2017-09-08 11:24+0200\n"
+"Last-Translator: Tommi Nieminen <translator@legisign.org>\n"
+"Language-Team: Finnish <kde-i18n-doc@kde.org>\n"
+"Language: fi\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-POT-Import-Date: 2012-12-01 22:25:10+0000\n"
+"X-Generator: Lokalize 2.0\n"
+
+#: kleo/checksumdefinition.cpp:107
+#, kde-format
+msgid "Error in checksum definition %1: %2"
+msgstr "Virhe tarkistussumman määritelmässä %1: %2"
+
+# %1 on komennon nimi
+#: kleo/checksumdefinition.cpp:157
+#, kde-format
+msgid "Cannot use both %f and | in '%1'"
+msgstr "Ei voi käyttää sekä %f että | komennossa ”%1”"
+
+#: kleo/checksumdefinition.cpp:167
+#, kde-format
+msgid "Quoting error in '%1' entry"
+msgstr "Lainausvirhe merkinnässä ”%1”"
+
+#: kleo/checksumdefinition.cpp:170
+#, kde-format
+msgid "'%1' too complex (would need shell)"
+msgstr "”%1” on liian monimutkainen (tarvitsisi komentotulkin)"
+
+#: kleo/checksumdefinition.cpp:174
+#, kde-format
+msgid "'%1' entry is empty/missing"
+msgstr "Kohta ”%1” on tyhjä tai puuttuu"
+
+#: kleo/checksumdefinition.cpp:183
+#, kde-format
+msgid "'%1' empty or not found"
+msgstr "”%1” on tyhjä tai sitä ei löydy"
+
+#: kleo/checksumdefinition.cpp:222
+#, kde-format
+msgid "'id' entry is empty/missing"
+msgstr "”id”-kohta on tyhjä tai puuttuu"
+
+#: kleo/checksumdefinition.cpp:225
+#, kde-format
+msgid "'output-file' entry is empty/missing"
+msgstr "”output-file”-kohta on tyhjä tai puuttuu"
+
+#: kleo/checksumdefinition.cpp:228
+#, kde-format
+msgid "'file-patterns' entry is empty/missing"
+msgstr "”file-patterns”-kohta on tyhjä tai puuttuu"
+
+#: kleo/checksumdefinition.cpp:395
+#, kde-format
+msgid "Caught unknown exception in group %1"
+msgstr "Kohdattiin tuntematon keskeytys ryhmässä %1"
+
+#: kleo/dn.cpp:507
+#, kde-format
+msgid "Common name"
+msgstr "Yleinen nimi"
+
+#: kleo/dn.cpp:508
+#, kde-format
+msgid "Surname"
+msgstr "Sukunimi"
+
+#: kleo/dn.cpp:509
+#, kde-format
+msgid "Given name"
+msgstr "Etunimi"
+
+#: kleo/dn.cpp:510
+#, kde-format
+msgid "Location"
+msgstr "Sijainti"
+
+#: kleo/dn.cpp:511
+#, kde-format
+msgid "Title"
+msgstr "Titteli"
+
+#: kleo/dn.cpp:512
+#, kde-format
+msgid "Organizational unit"
+msgstr "Organisaatioyksikkö"
+
+#: kleo/dn.cpp:513
+#, kde-format
+msgid "Organization"
+msgstr "Organisaatio"
+
+#: kleo/dn.cpp:514
+#, kde-format
+msgid "Postal code"
+msgstr "Postinumero"
+
+#: kleo/dn.cpp:515
+#, kde-format
+msgid "Country code"
+msgstr "Maakoodi"
+
+#: kleo/dn.cpp:516
+#, kde-format
+msgid "State or province"
+msgstr "Osavaltio tai provinssi"
+
+#: kleo/dn.cpp:517
+#, kde-format
+msgid "Domain component"
+msgstr "Verkkoalueosa"
+
+#: kleo/dn.cpp:518
+#, kde-format
+msgid "Business category"
+msgstr "Liiketoiminta-alue"
+
+#: kleo/dn.cpp:519
+#, kde-format
+msgid "Email address"
+msgstr "Sähköpostiosoite"
+
+#: kleo/dn.cpp:520
+#, kde-format
+msgid "Mail address"
+msgstr "Postiosoite"
+
+#: kleo/dn.cpp:521
+#, kde-format
+msgid "Mobile phone number"
+msgstr "Matkapuhelinnumero"
+
+#: kleo/dn.cpp:522
+#, kde-format
+msgid "Telephone number"
+msgstr "Puhelinnumero"
+
+#: kleo/dn.cpp:523
+#, kde-format
+msgid "Fax number"
+msgstr "Faksinumero"
+
+#: kleo/dn.cpp:524
+#, kde-format
+msgid "Street address"
+msgstr "Katuosoite"
+
+#: kleo/dn.cpp:525
+#, kde-format
+msgid "Unique ID"
+msgstr "Ainutkertainen tunniste"
+
+#: kleo/enum.cpp:57
+#, kde-format
+msgid "Inline OpenPGP (deprecated)"
+msgstr "Upotettu OpenPGP (vanhentunut)"
+
+#: kleo/enum.cpp:62
+#, kde-format
+msgid "OpenPGP/MIME"
+msgstr "OpenPGP/MIME"
+
+#: kleo/enum.cpp:67 ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "S/MIME"
+msgstr "S/MIME"
+
+#: kleo/enum.cpp:72
+#, kde-format
+msgid "S/MIME Opaque"
+msgstr "S/MIME, läpinäkymätön"
+
+#: kleo/enum.cpp:104
+#, kde-format
+msgid "Any"
+msgstr "Mikä tahansa"
+
+#: kleo/enum.cpp:177
+#, kde-format
+msgid "Never Encrypt"
+msgstr "Älä salaa koskaan"
+
+#: kleo/enum.cpp:179
+#, kde-format
+msgid "Always Encrypt"
+msgstr "Salaa aina"
+
+#: kleo/enum.cpp:181
+#, kde-format
+msgid "Always Encrypt If Possible"
+msgstr "Salaa jos mahdollista"
+
+#: kleo/enum.cpp:183 kleo/enum.cpp:240
+#, kde-format
+msgid "Ask"
+msgstr "Kysy"
+
+#: kleo/enum.cpp:185 kleo/enum.cpp:242
+#, kde-format
+msgid "Ask Whenever Possible"
+msgstr "Kysy kun mahdollista"
+
+#: kleo/enum.cpp:187
+#, kde-kuit-format
+msgctxt "no specific preference"
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>ei asetettu</placeholder>"
+
+#: kleo/enum.cpp:234
+#, kde-format
+msgid "Never Sign"
+msgstr "Älä allekirjoita"
+
+#: kleo/enum.cpp:236
+#, kde-format
+msgid "Always Sign"
+msgstr "Allekirjoita aina"
+
+#: kleo/enum.cpp:238
+#, kde-format
+msgid "Always Sign If Possible"
+msgstr "Allekirjoita jos mahdollista"
+
+#: kleo/enum.cpp:244
+#, kde-format
+msgctxt "no specific preference"
+msgid "<none>"
+msgstr "<ei asetettu>"
+
+#: kleo/keyfiltermanager.cpp:85
+#, kde-format
+msgid "All Certificates"
+msgstr "Kaikki varmenteet"
+
+#: kleo/keyfiltermanager.cpp:100
+#, kde-format
+msgid "My Certificates"
+msgstr "Omat varmenteet"
+
+#: kleo/keyfiltermanager.cpp:118
+#, kde-format
+msgid "Trusted Certificates"
+msgstr "Luotetut varmenteet"
+
+#: kleo/keyfiltermanager.cpp:135
+#, kde-format
+msgid "Fully Trusted Certificates"
+msgstr "Täysit luotetut varmenteet"
+
+#: kleo/keyfiltermanager.cpp:152
+#, kde-format
+msgid "Other Certificates"
+msgstr "Muut varmenteet"
+
+#: kleo/keyfiltermanager.cpp:166
+#, kde-format
+msgid "VS-compliant Certificates"
+msgstr "VS-yhteensopivat varmenteet"
+
+#: kleo/keyfiltermanager.cpp:184
+#, kde-format
+msgid "Not validated Certificates"
+msgstr "Varmistamattomat varmenteet"
+
+#: ui/auditlogviewer.cpp:49
+#, kde-format
+msgid "View GnuPG Audit Log"
+msgstr "Katsele GnuPG-lokia"
+
+#: ui/auditlogviewer.cpp:53
+#, kde-format
+msgid "&Copy to Clipboard"
+msgstr "&Kopioi leikepöydälle"
+
+#: ui/auditlogviewer.cpp:59
+#, kde-format
+msgid "&Save to Disk..."
+msgstr "&Tallenna levylle…"
+
+#: ui/auditlogviewer.cpp:95
+#, kde-format
+msgid "Choose File to Save GnuPG Audit Log to"
+msgstr "Valitse tiedosto, johon GnuPG-loki tallennetaan"
+
+#: ui/auditlogviewer.cpp:118
+#, kde-format
+msgid "Could not save to file \"%1\": %2"
+msgstr "Tiedostoa ”%1” ei voitu tallentaa: %2"
+
+#: ui/auditlogviewer.cpp:120
+#, kde-format
+msgid "File Save Error"
+msgstr "Tiedoston tallennusvirhe"
+
+#: ui/cryptoconfigdialog.cpp:44
+#, kde-format
+msgid "Configure GnuPG Backend"
+msgstr "Määritä GnuPG-taustaosa"
+
+#: ui/cryptoconfigdialog.cpp:55
+#, kde-format
+msgid "&Reset"
+msgstr "&Nollaa"
+
+#: ui/cryptoconfigmodule.cpp:160
+#, kde-format
+msgid "GpgConf Error"
+msgstr "GpgConf-virhe"
+
+#: ui/cryptoconfigmodule.cpp:216
+#, kde-format
+msgid ""
+"The gpgconf tool used to provide the information for this dialog does not "
+"seem to be installed properly. It did not return any components. Try running "
+"\"%1\" on the command line for more information."
+msgstr ""
+"Tämän ikkunan tiedot tarjoavaa gpgconf-työkalua ei näy asennetun oikein: se "
+"ei palauta mitään komponentteja. Saadaksesi lisätietoja yritä ajaa ”%1” "
+"komentoriviltä."
+
+#: ui/cryptoconfigmodule.cpp:496
+#, kde-format
+msgctxt ""
+"Translate this to 'yes' or 'no' (use the English words!) depending on "
+"whether your language uses Sentence style capitalisation in GUI labels (yes) "
+"or not (no). Context: We get some backend strings in that have the wrong "
+"capitalizaion (in English, at least) so we need to force the first character "
+"to upper-case. It is this behaviour you can control for your language with "
+"this translation."
+msgid "yes"
+msgstr "yes"
+
+#: ui/cryptoconfigmodule.cpp:546
+#, kde-format
+msgid "0 - None"
+msgstr "0 – Ei mitään"
+
+#: ui/cryptoconfigmodule.cpp:547
+#, kde-format
+msgid "1 - Basic"
+msgstr "1 – Perustaso"
+
+#: ui/cryptoconfigmodule.cpp:548
+#, kde-format
+msgid "2 - Verbose"
+msgstr "2 – Yksityiskohtainen"
+
+#: ui/cryptoconfigmodule.cpp:549
+#, kde-format
+msgid "3 - More Verbose"
+msgstr "3 – Yksityiskohtaisempi"
+
+#: ui/cryptoconfigmodule.cpp:550
+#, kde-format
+msgid "4 - All"
+msgstr "4 – Tarkka"
+
+#: ui/cryptoconfigmodule.cpp:559
+#, kde-format
+msgid "Set the debugging level to"
+msgstr "Aseta virheenpaikannustasoksi"
+
+#: ui/cryptoconfigmodule.cpp:787
+#, kde-format
+msgid "Show..."
+msgstr "Näytä…"
+
+#: ui/cryptoconfigmodule.cpp:787 ui/cryptoconfigmodule.cpp:876
+#, kde-format
+msgid "Edit..."
+msgstr "Muokkaa…"
+
+#: ui/cryptoconfigmodule.cpp:841
+#, kde-format
+msgid "Configure LDAP Servers"
+msgstr "Määritä LDAP-palvelimet"
+
+#: ui/cryptoconfigmodule.cpp:862
+#, kde-format
+msgid "None configured"
+msgstr "Ei määritetty"
+
+#: ui/cryptoconfigmodule.cpp:864
+#, kde-format
+msgid "1 server configured"
+msgid_plural "%1 servers configured"
+msgstr[0] "1 palvelin asetettu"
+msgstr[1] "%1 palvelinta asetettu"
+
+#: ui/cryptoconfigmodule.cpp:879
+#, kde-format
+msgid "Use keyserver at"
+msgstr "Käytä avainpalvelinta"
+
+#: ui/cryptoconfigmodule.cpp:968
+#, kde-format
+msgid "Configure Keyservers"
+msgstr "Määritä avainpalvelimet"
+
+#: ui/directoryserviceswidget.cpp:67
+#, kde-format
+msgctxt "default server name, keep it a valid domain name, ie. no spaces"
+msgid "server"
+msgstr "palvelin"
+
+#: ui/directoryserviceswidget.cpp:95
+#, kde-format
+msgid "hkp"
+msgstr "hkp"
+
+#: ui/directoryserviceswidget.cpp:96
+#, kde-format
+msgid "http"
+msgstr "http"
+
+#: ui/directoryserviceswidget.cpp:97
+#, kde-format
+msgid "https"
+msgstr "https"
+
+#: ui/directoryserviceswidget.cpp:98
+#, kde-format
+msgid "ftp"
+msgstr "ftp"
+
+#: ui/directoryserviceswidget.cpp:99
+#, kde-format
+msgid "ftps"
+msgstr "ftps"
+
+#: ui/directoryserviceswidget.cpp:100
+#, kde-format
+msgid "ldap"
+msgstr "ldap"
+
+#: ui/directoryserviceswidget.cpp:101
+#, kde-format
+msgid "ldaps"
+msgstr "ldaps"
+
+#: ui/directoryserviceswidget.cpp:588
+#, kde-format
+msgid "Server Name"
+msgstr "Palvelimen nimi"
+
+#: ui/directoryserviceswidget.cpp:589
+#, kde-format
+msgid "Server Port"
+msgstr "Palvelimen portti"
+
+#: ui/directoryserviceswidget.cpp:590
+#, kde-format
+msgid "Base DN"
+msgstr "Perus DN"
+
+#: ui/directoryserviceswidget.cpp:591
+#, kde-format
+msgid "User Name"
+msgstr "Käyttäjätunnus"
+
+#: ui/directoryserviceswidget.cpp:592
+#, kde-format
+msgid "Password"
+msgstr "Salasana"
+
+#: ui/directoryserviceswidget.cpp:614
+#, kde-format
+msgid "(read-only)"
+msgstr "(vain luku)"
+
+#: ui/directoryserviceswidget.cpp:616
+#, kde-format
+msgctxt "amended tooltip; %1: original tooltip"
+msgid "%1 (read-only)"
+msgstr "%1 (vain luku)"
+
+#: ui/directoryserviceswidget.cpp:739
+#, kde-format
+msgid ""
+"Enter the name or IP address of the server hosting the directory service."
+msgstr "Anna hakemistopalvelua ylläpitävän palvelimen nimi tai IP-osoite."
+
+#: ui/directoryserviceswidget.cpp:741
+#, kde-format
+msgid ""
+"<b>(Optional, the default is fine in most cases)</b> Pick the port number "
+"the directory service is listening on."
+msgstr ""
+"<b>(Valinnainen, oletus käy useimpiin tilanteisiin)</b> Valitse "
+"hakemistopalvelun kuunteleman portin numero."
+
+#: ui/directoryserviceswidget.cpp:744
+#, kde-format
+msgid ""
+"<b>(Only for LDAP)</b> Enter the base DN for this LDAP server to limit "
+"searches to only that subtree of the directory."
+msgstr ""
+"<b>(Vain LDAPille)</b> Syötä tämän LDAP-palvelimen perus-DN rajoittaaksesi "
+"haut vain tiettyyn hakemiston alipuuhun."
+
+#: ui/directoryserviceswidget.cpp:747
+#, kde-format
+msgid "<b>(Optional)</b> Enter your user name here, if needed."
+msgstr "<b>(Valinnainen)</b> Syötä käyttäjätunnuksesi tähän, jos tarpeen."
+
+#: ui/directoryserviceswidget.cpp:749
+#, kde-format
+msgid ""
+"<b>(Optional, not recommended)</b> Enter your password here, if needed. Note "
+"that the password will be saved in the clear in a config file in your home "
+"directory."
+msgstr ""
+"<b>(Valinnainen, ei suositella)</b> Syötä salasanasi tähän, jos tarpeen. "
+"Huomaa, että salasana tallennetaan sellaisenaan asetustiedostoon "
+"kotikansioosi."
+
+#. i18n: ectx: property (windowTitle), widget (QWidget, DirectoryServicesWidget)
+#: ui/directoryserviceswidget.ui:14
+#, kde-format
+msgid "Directory Services Configuration"
+msgstr "Hakemistopalvelujen asetukset"
+
+#. i18n: ectx: property (text), widget (QLabel, pgpKSLabel)
+#: ui/directoryserviceswidget.ui:22
+#, kde-format
+msgid "OpenPGP Keyserver:"
+msgstr "OpenPGP-avainpalvelin:"
+
+#. i18n: ectx: property (title), widget (QGroupBox, x500LA)
+#: ui/directoryserviceswidget.ui:35
+#, kde-format
+msgid "X509 Directory services:"
+msgstr "X.509-hakemistopalvelut:"
+
+#. i18n: ectx: property (whatsThis), widget (QTreeView, treeView)
+#: ui/directoryserviceswidget.ui:43
+#, kde-format
+msgid ""
+"This is a list of all directory services that are configured for use with "
+"X.509."
+msgstr ""
+"Tämä on luettelo kaikista X.509:n kanssa käytettäviksi määritetyistä "
+"hakemistopalveluista."
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:70
+#, kde-format
+msgid "Click to add a service"
+msgstr "Lisää palvelu napsauttamalla"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:73
+#, kde-format
+msgid ""
+"Click this button to create a new directory service entry as a clone of the "
+"currently selected one (or with default values, if no other is selected). "
+"You can then configure details in the table on the left hand."
+msgstr ""
+"Luo uusi hakemistopalvelumerkintä napsauttamalla tätä painiketta. Määritys "
+"alustetaan valitun kopioksi tai oletusarvoin, ellei yhtään määritystä ole "
+"valittu. Tämän jälkeen voi määrittää arvot vasemman puolen taulukossa."
+
+#. i18n: ectx: property (text), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:76
+#, kde-format
+msgid "New"
+msgstr "Uusi"
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:92
+#, kde-format
+msgid "Click to remove the currently selected service"
+msgstr "Poista valittu palvelu napsauttamalla"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:95
+#, kde-format
+msgid ""
+"Click this button to remove the currently selected directory service. The "
+"change will only take effect once you acknowledge the main configuration "
+"dialog."
+msgstr ""
+"Poista valittu hakemistopalvelu napsauttamalla tätä painiketta. Muutos tulee "
+"voimaan vasta, kun hyväksyt pääasetusikkunan."
+
+#. i18n: ectx: property (text), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:98
+#, kde-format
+msgid "Delete"
+msgstr "Poista"
+
+#. i18n: ectx: property (whatsThis), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:128
+#, kde-format
+msgid ""
+"Use this option to switch display of username and password information on or "
+"off in the above table."
+msgstr ""
+"Tämän valinnan avulla voit asettaa käyttäjätunnus- ja salasanatiedot yllä "
+"olevassa taulukossa näkyville tai piiloon."
+
+#. i18n: ectx: property (text), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:131
+#, kde-format
+msgid "Show user and password information"
+msgstr "Näytä käyttäjä- ja salasanatieto"
+
+#: ui/dnattributeorderconfigwidget.cpp:73
+#, kde-format
+msgid "Description"
+msgstr "Kuvaus"
+
+#: ui/dnattributeorderconfigwidget.cpp:91
+#, kde-format
+msgid "Available attributes:"
+msgstr "Saatavilla olevat määritteet:"
+
+#: ui/dnattributeorderconfigwidget.cpp:92
+#, kde-format
+msgid "Current attribute order:"
+msgstr "Määritteiden nykyinen järjestys:"
+
+#: ui/dnattributeorderconfigwidget.cpp:112
+#, kde-format
+msgid "All others"
+msgstr "Kaikki muut"
+
+#: ui/dnattributeorderconfigwidget.cpp:129
+#, kde-format
+msgid "Move to top"
+msgstr "Siirrä ylimmäksi"
+
+#: ui/dnattributeorderconfigwidget.cpp:130
+#, kde-format
+msgid "Move one up"
+msgstr "Siirrä yksi ylös"
+
+#: ui/dnattributeorderconfigwidget.cpp:131
+#, kde-format
+msgid "Remove from current attribute order"
+msgstr "Poista nykyisestä attribuuttijärjestyksestä"
+
+#: ui/dnattributeorderconfigwidget.cpp:132
+#, kde-format
+msgid "Add to current attribute order"
+msgstr "Lisää attribuuttijärjestykseen"
+
+#: ui/dnattributeorderconfigwidget.cpp:133
+#, kde-format
+msgid "Move one down"
+msgstr "Siirrä yksi alas"
+
+#: ui/dnattributeorderconfigwidget.cpp:134
+#, kde-format
+msgid "Move to bottom"
+msgstr "Siirrä alimmaiseksi"
+
+#: ui/keyapprovaldialog.cpp:87
+#, kde-kuit-format
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>ei mitään</placeholder>"
+
+#: ui/keyapprovaldialog.cpp:88
+#, kde-format
+msgid "Never Encrypt with This Key"
+msgstr "Älä koskaan salaa tällä avaimella"
+
+#: ui/keyapprovaldialog.cpp:89
+#, kde-format
+msgid "Always Encrypt with This Key"
+msgstr "Salaa aina tällä avaimella"
+
+#: ui/keyapprovaldialog.cpp:90
+#, kde-format
+msgid "Encrypt Whenever Encryption is Possible"
+msgstr "Salaa jos mahdollista"
+
+#: ui/keyapprovaldialog.cpp:91
+#, kde-format
+msgid "Always Ask"
+msgstr "Kysy aina"
+
+#: ui/keyapprovaldialog.cpp:92
+#, kde-format
+msgid "Ask Whenever Encryption is Possible"
+msgstr "Kysy, kun salaus on mahdollinen"
+
+#: ui/keyapprovaldialog.cpp:113
+#, kde-format
+msgid "Encryption Key Approval"
+msgstr "Salausavaimen vahvistus"
+
+#: ui/keyapprovaldialog.cpp:129
+#, kde-format
+msgid "The following keys will be used for encryption:"
+msgstr "Seuraavia avaimia käytetään salauksessa:"
+
+#: ui/keyapprovaldialog.cpp:145
+#, kde-format
+msgid "Your keys:"
+msgstr "Avaimesi:"
+
+#: ui/keyapprovaldialog.cpp:157
+#, kde-format
+msgid "Recipient:"
+msgstr "Vastaanottaja:"
+
+#: ui/keyapprovaldialog.cpp:162
+#, kde-format
+msgid "Encryption keys:"
+msgstr "Salausavaimet:"
+
+#: ui/keyapprovaldialog.cpp:169
+#, kde-format
+msgid "Encryption preference:"
+msgstr "Suosittu salaus:"
+
+#: ui/keyrequester.cpp:118
+#, kde-format
+msgid "Clear"
+msgstr "Tyhjennä"
+
+#: ui/keyrequester.cpp:121
+#, kde-format
+msgid "Change..."
+msgstr "Muuta…"
+
+#: ui/keyrequester.cpp:232 ui/keyselectiondialog.cpp:256
+#, kde-kuit-format
+msgid "<placeholder>unknown</placeholder>"
+msgstr "<placeholder>tuntematon</placeholder>"
+
+#: ui/keyrequester.cpp:246 ui/keyselectiondialog.cpp:657
+#, kde-format
+msgid ""
+"<qt><p>An error occurred while fetching the keys from the backend:</p><p><b>"
+"%1</b></p></qt>"
+msgstr ""
+"<qt><p>Tapahtui virhe haettaessa avaimia ajurilta: </p><p><b>%1</b></p></qt>"
+
+#: ui/keyrequester.cpp:251 ui/keyrequester.cpp:283 ui/keyrequester.cpp:306
+#: ui/keyselectiondialog.cpp:630 ui/keyselectiondialog.cpp:662
+#, kde-format
+msgid "Key Listing Failed"
+msgstr "Avainten luettelointi epäonnistui"
+
+#: ui/keyrequester.cpp:281
+#, kde-format
+msgid ""
+"The OpenPGP backend does not support listing keys. Check your installation."
+msgstr "OpenPGP-ajuri ei tue avainten luettelemista: tarkista asennus."
+
+#: ui/keyrequester.cpp:304
+#, kde-format
+msgid ""
+"The S/MIME backend does not support listing keys. Check your installation."
+msgstr "S/MIME-ajuri ei tue avainten luettelemista: tarkista asennus."
+
+#: ui/keyrequester.cpp:426
+#, kde-format
+msgid "OpenPGP Key Selection"
+msgstr "OpenPGP-avainvalinta"
+
+#: ui/keyrequester.cpp:427
+#, kde-format
+msgid "Please select an OpenPGP key to use."
+msgstr "Valitse käytettävä OpenPGP-avain."
+
+#: ui/keyrequester.cpp:429
+#, kde-format
+msgid "S/MIME Key Selection"
+msgstr "S/MIME-avainvalinta"
+
+#: ui/keyrequester.cpp:430
+#, kde-format
+msgid "Please select an S/MIME key to use."
+msgstr "Valitse käytettävä S/MIME-avain"
+
+#: ui/keyrequester.cpp:432
+#, kde-format
+msgid "Key Selection"
+msgstr "Avaimen valinta"
+
+#: ui/keyrequester.cpp:433
+#, kde-format
+msgid "Please select an (OpenPGP or S/MIME) key to use."
+msgstr "Valitse käytettävä avain (OpenPGP tai S/MIME)."
+
+#: ui/keyselectioncombo.cpp:195
+#, kde-format
+msgctxt "Name <email> (validity, type, created: date)"
+msgid "%1 (%2, %3, created: %4)"
+msgstr "%1 (%2, %3, luotu: %4)"
+
+#: ui/keyselectioncombo.cpp:196
+#, kde-format
+msgctxt "Name <email>"
+msgid "%1 <%2>"
+msgstr "%1 <%2>"
+
+#: ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "OpenPGP"
+msgstr "OpenPGP"
+
+#: ui/keyselectioncombo.cpp:347
+#, kde-format
+msgid "Loading keys ..."
+msgstr "Ladataan avaimia…"
+
+#: ui/keyselectiondialog.cpp:98
+#, kde-format
+msgid "The key is not valid."
+msgstr "Avain ei ole kelvollinen."
+
+#: ui/keyselectiondialog.cpp:106
+#, kde-format
+msgid "The key is expired."
+msgstr "Avain on vanhentunut."
+
+#: ui/keyselectiondialog.cpp:110
+#, kde-format
+msgid "The key is revoked."
+msgstr "Avain on peruttu."
+
+#: ui/keyselectiondialog.cpp:114
+#, kde-format
+msgid "The key is disabled."
+msgstr "Avain on poissa käytöstä."
+
+#: ui/keyselectiondialog.cpp:122
+#, kde-format
+msgid "The key is not designated for encryption."
+msgstr "Avainta ei ole tarkoitettu salaukseen."
+
+#: ui/keyselectiondialog.cpp:128
+#, kde-format
+msgid "The key is not designated for signing."
+msgstr "Avainta ei ole tarkoitettu allekirjoittamiseen."
+
+#: ui/keyselectiondialog.cpp:134
+#, kde-format
+msgid "The key is not designated for certifying."
+msgstr "Avainta ei ole tarkoitettu varmentamiseen."
+
+#: ui/keyselectiondialog.cpp:140
+#, kde-format
+msgid "The key is not designated for authentication."
+msgstr "Avainta ei ole tarkoitettu todentamiseen."
+
+#: ui/keyselectiondialog.cpp:148
+#, kde-format
+msgid "The key is not secret."
+msgstr "Avain ei ole salainen."
+
+#: ui/keyselectiondialog.cpp:163
+#, kde-format
+msgid "The key is not trusted enough."
+msgstr "Avain ei ole tarpeeksi luotettava."
+
+#: ui/keyselectiondialog.cpp:169
+#, kde-format
+msgid "The key can be used."
+msgstr "Avainta voi käyttää."
+
+#: ui/keyselectiondialog.cpp:230
+#, kde-format
+msgid "Key ID"
+msgstr "Avaintunniste"
+
+#: ui/keyselectiondialog.cpp:231
+#, kde-format
+msgid "User ID"
+msgstr "Käyttäjätunnus"
+
+#: ui/keyselectiondialog.cpp:279
+#, kde-format
+msgid "never"
+msgstr "ei koskaan"
+
+#: ui/keyselectiondialog.cpp:289 ui/keyselectiondialog.cpp:291
+#: ui/keyselectiondialog.cpp:300 ui/keyselectiondialog.cpp:302
+#, kde-format
+msgid "unknown"
+msgstr "tuntematon"
+
+#: ui/keyselectiondialog.cpp:289
+#, kde-format
+msgid "OpenPGP key for <b>%1</b>"
+msgstr "Henkilön <b>%1</b> OpenPGP-avain"
+
+#: ui/keyselectiondialog.cpp:291
+#, kde-format
+msgid "S/MIME key for <b>%1</b>"
+msgstr "Henkilön <b>%1</b> S/MIME-avain"
+
+#: ui/keyselectiondialog.cpp:298
+#, kde-format
+msgctxt "Key creation date"
+msgid "Created"
+msgstr "Luotu"
+
+#: ui/keyselectiondialog.cpp:299
+#, kde-format
+msgctxt "Key Expiration date"
+msgid "Expiry"
+msgstr "Vanheneminen"
+
+#: ui/keyselectiondialog.cpp:300
+#, kde-format
+msgctxt "Key fingerprint"
+msgid "Fingerprint"
+msgstr "Sormenjälki"
+
+#: ui/keyselectiondialog.cpp:302
+#, kde-format
+msgctxt "Key issuer"
+msgid "Issuer"
+msgstr "Myöntäjä"
+
+#: ui/keyselectiondialog.cpp:304
+#, kde-format
+msgctxt "Key status"
+msgid "Status"
+msgstr "Tila"
+
+#: ui/keyselectiondialog.cpp:456
+#, kde-format
+msgid "Search for &External Certificates"
+msgstr "Etsi &ulkoisia varmenteita"
+
+#: ui/keyselectiondialog.cpp:470
+#, kde-format
+msgid "&Search for:"
+msgstr "&Etsi:"
+
+#: ui/keyselectiondialog.cpp:494
+#, kde-format
+msgid "&Remember choice"
+msgstr "&Muista valinta"
+
+#: ui/keyselectiondialog.cpp:497
+#, kde-format
+msgid ""
+"<qt><p>If you check this box your choice will be stored and you will not be "
+"asked again.</p></qt>"
+msgstr ""
+"<qt><p>Jos tämä on valittuna, valintasi talletetaan ja sitä ei kysytä "
+"uudelleen.</p></qt>"
+
+#: ui/keyselectiondialog.cpp:509
+#, kde-format
+msgid "&Reread Keys"
+msgstr "&Lue avaimet uudelleen"
+
+#: ui/keyselectiondialog.cpp:510
+#, kde-format
+msgid "&Start Certificate Manager"
+msgstr "&Käynnistä varmenteenhallinta"
+
+#: ui/keyselectiondialog.cpp:628
+#, kde-format
+msgid "No backends found for listing keys. Check your installation."
+msgstr ""
+"Ei ajureita, joilla voitaisiin listata avaimia. Tarkista ohjelman asennus."
+
+#: ui/keyselectiondialog.cpp:644
+#, kde-format
+msgid "Could not start certificate manager; please check your installation."
+msgstr "Varmenteenhallintaa ei voitu käynnistää: tarkista asennus."
+
+#: ui/keyselectiondialog.cpp:646
+#, kde-format
+msgid "Certificate Manager Error"
+msgstr "Varmenteenhallinnan virhe"
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Checking selected keys..."
+msgstr "Tarkistan valittuja avaimia…"
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Fetching keys..."
+msgstr "Haetaan avaimia…"
+
+#: ui/keyselectiondialog.cpp:731
+#, kde-format
+msgid ""
+"<qt>One backend returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgid_plural ""
+"<qt>%1 backends returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgstr[0] ""
+"<qt>Yksi taustaosa palautti katkenneen tulosteen.<p>Kaikkia avaimia ei "
+"näytetty</p></qt>"
+msgstr[1] ""
+"<qt>%1 taustaosaa palautti katkenneen tulosteen.<p>Kaikkia avaimia ei "
+"näytetty</p></qt>"
+
+#: ui/keyselectiondialog.cpp:736
+#, kde-format
+msgid "Key List Result"
+msgstr "Avainlistaus"
+
+#: ui/keyselectiondialog.cpp:856
+#, kde-format
+msgid "Recheck Key"
+msgstr "Tarkista avain uudelleen"
+
+#: ui/messagebox.cpp:71
+#, kde-format
+msgid "Your system does not have support for GnuPG Audit Logs"
+msgstr "Järjestelmäsi ei tue GnuPG-lokeja"
+
+#: ui/messagebox.cpp:72
+#, kde-format
+msgid "System Error"
+msgstr "Järjestelmävirhe"
+
+#: ui/messagebox.cpp:79
+#, kde-format
+msgid ""
+"An error occurred while trying to retrieve the GnuPG Audit Log:\n"
+"%1"
+msgstr ""
+"GnuPG-lokia noudettaessa sattui virhe:\n"
+"%1"
+
+#: ui/messagebox.cpp:81
+#, kde-format
+msgid "GnuPG Audit Log Error"
+msgstr "GnuPG-lokivirhe"
+
+#: ui/messagebox.cpp:88
+#, kde-format
+msgid "No GnuPG Audit Log available for this operation."
+msgstr "Tälle toiminnolle ei löydy GnuPG-lokia."
+
+#: ui/messagebox.cpp:89
+#, kde-format
+msgid "No GnuPG Audit Log"
+msgstr "Ei GnuPG-lokia"
+
+#: ui/messagebox.cpp:109 ui/messagebox.cpp:115
+#, kde-format
+msgid "GnuPG Audit Log Viewer"
+msgstr "GnuPG-lokikatselin"
+
+#: ui/messagebox.cpp:121
+#, kde-format
+msgid "Signing failed: %1"
+msgstr "Allekirjoittaminen epäonnistui: %1"
+
+#: ui/messagebox.cpp:122
+#, kde-format
+msgid "Signing successful"
+msgstr "Allekirjoittaminen onnistui"
+
+#: ui/messagebox.cpp:133
+#, kde-format
+msgid "Encryption failed: %1"
+msgstr "Salaus epäonnistui: %1"
+
+#: ui/messagebox.cpp:134
+#, kde-format
+msgid "Encryption successful"
+msgstr "Salaus onnistui"
+
+#: ui/messagebox.cpp:155
+#, kde-format
+msgid "Signing Result"
+msgstr "Allekirjoittamisen tulos"
+
+#: ui/messagebox.cpp:167
+#, kde-format
+msgid "Signing Error"
+msgstr "Allekirjoittamisvirhe"
+
+#: ui/messagebox.cpp:179 ui/messagebox.cpp:203
+#, kde-format
+msgid "Encryption Result"
+msgstr "Salauksen tulos"
+
+#: ui/messagebox.cpp:191 ui/messagebox.cpp:215
+#, kde-format
+msgid "Encryption Error"
+msgstr "Salausvirhe"
+
+#: ui/messagebox.cpp:263
+#, kde-format
+msgid "&Show Audit Log"
+msgstr "&Näytä loki"
+
+#: ui/progressdialog.cpp:91
+#, kde-format
+msgid "%1: %2"
+msgstr "%1: %2"
+
+#~ msgctxt "New X.509 Directory Server"
+#~ msgid "X.509"
+#~ msgstr "X.509"
+
+#~ msgctxt "New OpenPGP Directory Server"
+#~ msgid "OpenPGP"
+#~ msgstr "OpenPGP"
+
+#~ msgid "Scheme"
+#~ msgstr "Malli"
+
+#~ msgid "X.509"
+#~ msgstr "X.509"
+
+#~ msgid ""
+#~ "Select the access scheme (scheme) that the directory service is available "
+#~ "through."
+#~ msgstr ""
+#~ "Valitse yhteyskäytäntö (malli), jonka kautta hakemistopalvelu on käytössä."
+
+#~ msgid ""
+#~ "Check this column if this directory service is providing S/MIME (X.509) "
+#~ "certificates."
+#~ msgstr ""
+#~ "Tarkista tästä sarakkeesta, tarjoaako hakemistopalvelusi S/MIME- eli "
+#~ "X.509-varmenteita."
+
+#~ msgid ""
+#~ "Check this column if this directory service is providing OpenPGP "
+#~ "certificates."
+#~ msgstr ""
+#~ "Tarkista tästä sarakkeesta, tarjoaako hakemistopalvelusi OpenPGP-"
+#~ "varmenteita."
+
+#~ msgid "0 - None (no debugging at all)"
+#~ msgstr "0 – Ei mitään (ei virheenpaikannusta)"
+
+#~ msgid "1 - Basic (some basic debug messages)"
+#~ msgstr "1 – Perustaso (perustavat virheenpaikannusviestit)"
+
+#~ msgid "2 - Advanced (more verbose debug messages)"
+#~ msgstr "2 – Edistynyt taso (täydemmät virheenpaikannusviestit)"
+
+#~ msgid "3 - Expert (even more detailed messages)"
+#~ msgstr "3 – Asiantuntijataso (vielä yksityiskohtaisemmat viestit)"
+
+#~ msgid "4 - Guru (all of the debug messages you can get)"
+#~ msgstr "4 – Gurutaso (kaikki saatavilla olevat virheenpaikannusviestit)"
+
+#~ msgid "General"
+#~ msgstr "Yleiset"
+
+#~ msgid "Chiasmus"
+#~ msgstr "Chiasmus"
+
+#~ msgid "Chiasmus command line tool"
+#~ msgstr "Chiasmus-komentorivityökalu"
+
+#~ msgid "Unsupported protocol \"%1\""
+#~ msgstr "Tuntematon yhteyskäytäntö ”%1”"
+
+#~ msgid "File \"%1\" does not exist or is not executable."
+#~ msgstr "Tiedostoa ”%1” ei ole olemassa tai sitä ei voida suorittaa."
+
+#~ msgid "Output from chiasmus"
+#~ msgstr "Chiasmuksen tuloste"
+
+#~ msgid "Decryption failed: %1"
+#~ msgstr "Salauksen purku epäonnistui: %1"
+
+#~ msgid ""
+#~ "The following was received on stderr:\n"
+#~ "%1"
+#~ msgstr ""
+#~ "Vakiosyötevirrasta löytyi seuraava:\n"
+#~ "%1"
+
+#~ msgid "Failed to load %1: %2"
+#~ msgstr "Ei voitu ladata %1: %2"
+
+#~ msgid "Library does not contain the symbol \"Chiasmus\"."
+#~ msgstr "Kirjasto ei sisällä symbolia ”Chiasmus”."
+
+#~ msgid "Scanning directory %1..."
+#~ msgstr "Tutkitaan kansiota %1…"
+
+#~ msgid "GpgME"
+#~ msgstr "GpgME"
+
+#~ msgid "GPGME was compiled without support for %1."
+#~ msgstr "GPGME on käännetty ilman %1-tukea."
+
+#~ msgid "Engine %1 is not installed properly."
+#~ msgstr "Ajuria %1 ei ole asetettu oikein."
+
+#~ msgid "Engine %1 version %2 installed, but at least version %3 is required."
+#~ msgstr "Ajurin %1 versio %2 asetettu, mutta versio %3 tarvitaan."
+
+#~ msgid "Unknown problem with engine for protocol %1."
+#~ msgstr "Tuntematon ongelma yhteyskäytännön %1 ajurin kanssa."
+
+#~ msgid "program terminated unexpectedly"
+#~ msgstr "ohjelmaa päättyi odottamattomasti"
+
+#~ msgid "program not found or cannot be started"
+#~ msgstr "ohjelmaa ei löytynyt tai ei voitu suorittaa"
+
+#~ msgid "<qt>Failed to execute gpgconf:<p>%1</p></qt>"
+#~ msgstr "<qt>gpgconfin suorittaminen epäonnistui:<p>%1</p></qt>"
+
+#~ msgid ""
+#~ "Could not start gpgconf.\n"
+#~ "Check that gpgconf is in the PATH and that it can be started."
+#~ msgstr ""
+#~ "Ei voitu käynnistää gpgconfia.\n"
+#~ "Varmista, että se on hakupolussa ja että se voidaan käynnistää."
+
+#~ msgid "Error from gpgconf while saving configuration: %1"
+#~ msgstr "Virhe tallennettaessa gpgconf-asetuksia: %1"
+
+#~ msgid "Generating DSA key..."
+#~ msgstr "Luon DSA-avainta…"
+
+#~ msgid "Generating ElGamal key..."
+#~ msgstr "Luon ElGamal-avainta…"
+
+#~ msgid "Searching for a large prime number..."
+#~ msgstr "Etsitään suurta alkulukua…"
+
+#~ msgid ""
+#~ "Waiting for new entropy from random number generator (you might want to "
+#~ "exercise the harddisks or move the mouse)..."
+#~ msgstr ""
+#~ "Odotetaan lisää entropiaa satunnaislukugeneraattorilta (voit nopeuttaa "
+#~ "toimenpidettä käyttämällä kiintolevyjä tai liikuttamalla hiirtä)…"
+
+#~ msgid "Please wait..."
+#~ msgstr "Odota hetki…"
+
+#~ msgid ""
+#~ "Starting gpg-agent (you should consider starting a global instance "
+#~ "instead)..."
+#~ msgstr ""
+#~ "Käynnistetään GPG-agenttia (mutta sinun kannattaisi käynnistää "
+#~ "järjestelmänlaajuinen instanssi tämän sijaan)…"
+
+#~ msgid "While scanning for %1 support in backend %2:"
+#~ msgstr "Virhe etsittäessä %1-tukea taustaosasta %2:"
+
+#~ msgctxt "progress info: \"%1 of %2\""
+#~ msgid "%1/%2"
+#~ msgstr "%1/%2"
+
+#~ msgid ""
+#~ "OpenPGP key for %1\n"
+#~ "Created: %2\n"
+#~ "Expiry: %3\n"
+#~ "Fingerprint: %4"
+#~ msgstr ""
+#~ "%1 OpenPGP-avain\n"
+#~ "Luotu: %2\n"
+#~ "Vanhenee: %3\n"
+#~ "Sormenjälki: %4"
+
+#~ msgid ""
+#~ "S/MIME key for %1\n"
+#~ "Created: %2\n"
+#~ "Expiry: %3\n"
+#~ "Fingerprint: %4\n"
+#~ "Issuer: %5"
+#~ msgstr ""
+#~ "S/MIME-avain kohteelle %1\n"
+#~ "Luotu: %2\n"
+#~ "Vanhenee: %3\n"
+#~ "Sormenjälki: %4\n"
+#~ "Myöntäjä: %5"
+
+#~ msgid "Copy Audit Log to Clipboard"
+#~ msgstr "Kopioi loki leikepöydälle"
+
+#~ msgid "Add or Change Directory Service"
+#~ msgstr "Lisää tai muokkaa hakemistopalvelua"
+
+#~ msgid "&Server name:"
+#~ msgstr "&Palvelimen nimi:"
+
+#~ msgid "389"
+#~ msgstr "389"
+
+#~ msgid "&User name (optional):"
+#~ msgstr "&Käyttäjän nimi (valinnainen)"
+
+#~ msgid "Pass&word (optional):"
+#~ msgstr "&Salasana (valinnainen)"
+
+#~ msgid "&OK"
+#~ msgstr "&OK"
+
+#~ msgid "&Cancel"
+#~ msgstr "&Peru"
+
+#~ msgid "&Base DN:"
+#~ msgstr "Perus &DN:"
+
+#~ msgid "&Port:"
+#~ msgstr "&Portti:"
+
+#~ msgctxt "NAME OF TRANSLATORS"
+#~ msgid "Your names"
+#~ msgstr "Kim Enkovaara"
+
+#~ msgctxt "EMAIL OF TRANSLATORS"
+#~ msgid "Your emails"
+#~ msgstr "kim.enkovaara@iki.fi"
+
+#~ msgid "(Unknown Protocol)"
+#~ msgstr "(Tuntematon yhteyskäytäntö)"
+
+#~ msgid "Error while initializing plugin \"%1\""
+#~ msgstr "Virhe alustettaessa liitännäistä ”%1”"
+
+#~ msgid "failed"
+#~ msgstr "epäonnistui"
+
+#~ msgctxt ""
+#~ "Items in Kleo::BackendConfigWidget listview (1: protocol; 2: "
+#~ "implementation name)"
+#~ msgid "%1 (%2)"
+#~ msgstr "%1 (%2)"
+
+#~ msgid "Available Backends"
+#~ msgstr "Ajurit"
+
+#~ msgid "Confi&gure..."
+#~ msgstr "&Muokkaa..."
+
+#~ msgid "Rescan"
+#~ msgstr "Etsi uudelleen"
+
+#~ msgid "The following problems where encountered during scanning:"
+#~ msgstr "Etsinnän aikana havaittiin seuraavat ongelmat:"
+
+#~| msgid "Scan Results"
+#~ msgctxt "@title:window Results of the scanning"
+#~ msgid "Scan Results"
+#~ msgstr "Etsinnän tulokset"
+
+#~ msgid ""
+#~ "You need a passphrase to unlock the secret key for user:<br/> %1 (retry)"
+#~ msgstr ""
+#~ "Tarvitset salasanan avataksesi salaisen avaimen käyttäjälle:<br/>%1 "
+#~ "(yritä uudelleen)"
+
+#~ msgid "You need a passphrase to unlock the secret key for user:<br/> %1"
+#~ msgstr "Tarvitset salasanan avataksesi salaisen avaimen käyttäjälle:<br/>%1"
+
+#~ msgid ""
+#~ "This dialog will reappear every time the passphrase is needed. For a more "
+#~ "secure solution that also allows caching the passphrase, use gpg-agent."
+#~ msgstr ""
+#~ "Ikkuna tulee aina esille, kun salasanaa tarvitaan. Turvallisempi ratkaisu "
+#~ "on gpg-agent-ohjelma, joka mahdollistaa myös salasanojen laittamisen "
+#~ "välimuistiin."
+
+#~ msgid "gpg-agent was found in %1, but does not appear to be running."
+#~ msgstr "gpg-agent löytyi polusta %1, mutta ei näytä olevan käynnissä."
+
+#~ msgid "gpg-agent is part of gnupg-%1, which you can download from %2"
+#~ msgstr "gpg-agent on osa gnupg-%1 ohjelmaa, jonka voit hakea osoitteesta %2"
+
+#~ msgid "For information on how to set up gpg-agent, see %1"
+#~ msgstr "Anna tiedot miten gpg-agent asetetaan, katso %1"
+
+#~ msgid "Enter passphrase:"
+#~ msgstr "Anna salasana:"
+
+#~ msgid "Passphrase Dialog"
+#~ msgstr "Salasanaikkuna"
+
+#, fuzzy
+#~ msgid "Configure"
+#~ msgstr "&Muokkaa..."
+
+#~ msgid "Select Directory Services to Use Here"
+#~ msgstr "Valitse käyttämäsi hakemistopalvelut tässä kohdassa"
+
+#~ msgid ""
+#~ "<qt>\n"
+#~ "<h1>X.500 Directory Services</h1>\n"
+#~ "You can use X.500 directory services to retrieve certificates and "
+#~ "certificate revocation lists that are not saved locally. Ask your local "
+#~ "administrator if you want to make use of this feature and are unsure "
+#~ "which directory service you can use.\n"
+#~ "<p>\n"
+#~ "If you do not use a directory service, you can still use local "
+#~ "certificates.\n"
+#~ "</qt>"
+#~ msgstr ""
+#~ "<qt>\n"
+#~ "<h1>X.500 -hakemistopalvelut</h1>\n"
+#~ "Voit käyttää X.500 -hakemistopalveluja noutaaksesi varmenteita ja "
+#~ "varmenteiden sulkulistoja, joita ei ole tallennettu paikallisesti. Kysy "
+#~ "paikalliselta järjestelmän ylläpitäjältä, jos haluat käyttää tätä "
+#~ "ominaisuutta ja epävarma, mitä hakemistopalvelua voit käyttää.\n"
+#~ "<p>\n"
+#~ "Jos et käytä hakemistopalvelua, voit silti käyttää paikallisia "
+#~ "varmenteita.\n"
+#~ "</qt>"
+
+#~ msgid "Port"
+#~ msgstr "Portti"
+
+#~ msgid ""
+#~ "<qt>\n"
+#~ "<h1>Add a Directory Service</h1>\n"
+#~ "By clicking this button, you can select a new directory service to be "
+#~ "used for retrieving certificates and CRLs. You will be asked for the "
+#~ "server name and an optional description.\n"
+#~ "</qt>"
+#~ msgstr ""
+#~ "<qt>\n"
+#~ "<h1>Lisää hakemistopalvelu</h1>\n"
+#~ "Painamalla tätä painiketta voit valita uuden hakemistopalvelun, jota "
+#~ "käytetään varmenteiden ja CRL:ien noutamiseen. Sinulta kysytään "
+#~ "palvelimen nimeä ja valinnaista kuvausta.\n"
+#~ "</qt>"
+
+#~ msgid "&Add Service..."
+#~ msgstr "Lisää p&alvelu..."
+
+#~ msgid ""
+#~ "<qt>\n"
+#~ "<h1>Remove Directory Service</h1>\n"
+#~ "By clicking this button, you can remove the currently selected directory "
+#~ "service in the list above. You will have a chance to rethink your "
+#~ "decision before the entry is deleted from the list.\n"
+#~ "</qt>"
+#~ msgstr ""
+#~ "<qt>\n"
+#~ "<h1>Poista hakemistopalvelu</h1>\n"
+#~ "Painamalla tätä painiketta voi poistaa valitun hakemistopalvelun alla "
+#~ "olevasta listasta. Sinulla on mahdollisuus harkita päätöstäsi uudelleen "
+#~ "ennen kuin hakemistopalvelu poistetaan listalta.\n"
+#~ "</qt>"
+
+#~ msgid "&Remove Service"
+#~ msgstr "&Poista palvelu"
+
+#~ msgid "<unnamed>"
+#~ msgstr "<nimetön>"
+
+#~ msgid "<none>"
+#~ msgstr "<ei hupsuta>"
+
+#~ msgid "<unknown>"
+#~ msgstr "<tuntematon>"
+
+#~ msgid "Kpgp/gpg"
+#~ msgstr "Kpgp/gpg"
+
+#~ msgid "Kpgp/pgp v2"
+#~ msgstr "Kpgp/pgp v2"
+
+#~ msgid "Kpgp/pgp v5"
+#~ msgstr "Kpgp/pgp v5"
+
+#~ msgid "Kpgp/pgp v6"
+#~ msgstr "Kpgp/pgp v6"
+
+#~ msgid "This backend does not support S/MIME"
+#~ msgstr "Tämä ajuri ei tue S/MIMEyhteyskäytäntöä"
+
+#~ msgid "Please enter your passphrase:"
+#~ msgstr "Anna salasanasi:"
--- /dev/null
+# traduction de libkleopatra.po en français
+# translation of libkleopatra.po to Français
+# traduction de libkleopatra.po en Français
+# Matthieu Robin <kde@macolu.org>, 2004.
+# Joëlle Cornavin <jcornavi@kde-france.org>, 2004.
+# Delafond <gerard@delafond.org>, 2004.
+# Yann Verley <yann.verley@free.fr>, 2005.
+# Matthieu Robin <matthieu@macolu.org>, 2005.
+# Sébastien Renard <Sebastien.Renard@digitalfox.org>, 2007, 2008.
+# Sébastien Renard <renard@kde.org>, 2011, 2015.
+# xavier <xavier.besnard@neuf.fr>, 2013.
+# Vincent Pinon <vpinon@kde.org>, 2017.
+msgid ""
+msgstr ""
+"Project-Id-Version: libkleopatra\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2017-07-12 06:56+0200\n"
+"PO-Revision-Date: 2017-07-16 13:41+0100\n"
+"Last-Translator: Vincent Pinon <vpinon@kde.org>\n"
+"Language-Team: French <kde-francophone@kde.org>\n"
+"Language: fr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"X-Environment: kde\n"
+"X-Accelerator-Marker: &\n"
+"X-Text-Markup: kde4\n"
+"X-Generator: Lokalize 2.0\n"
+
+#: kleo/checksumdefinition.cpp:107
+#, kde-format
+msgid "Error in checksum definition %1: %2"
+msgstr "Erreur dans la définition des sommes de contrôle %1 : %2"
+
+#: kleo/checksumdefinition.cpp:157
+#, kde-format
+msgid "Cannot use both %f and | in '%1'"
+msgstr "Impossible d'utiliser à la fois « %f » et « | » dans « %1 »"
+
+#: kleo/checksumdefinition.cpp:167
+#, kde-format
+msgid "Quoting error in '%1' entry"
+msgstr "Erreur de guillemets dans l'entrée « %1 »"
+
+#: kleo/checksumdefinition.cpp:170
+#, kde-format
+msgid "'%1' too complex (would need shell)"
+msgstr "« %1 » trop complexe (nécessiterait un interpréteur de commandes)"
+
+#: kleo/checksumdefinition.cpp:174
+#, kde-format
+msgid "'%1' entry is empty/missing"
+msgstr "L'entrée « %1 » est vide ou manquante"
+
+#: kleo/checksumdefinition.cpp:183
+#, kde-format
+msgid "'%1' empty or not found"
+msgstr "L'entrée « %1 » vide ou manquante"
+
+#: kleo/checksumdefinition.cpp:222
+#, kde-format
+msgid "'id' entry is empty/missing"
+msgstr "L'entrée « id » est vide ou manquante"
+
+#: kleo/checksumdefinition.cpp:225
+#, kde-format
+msgid "'output-file' entry is empty/missing"
+msgstr "L'entrée « output-file » est vide ou manquante"
+
+#: kleo/checksumdefinition.cpp:228
+#, kde-format
+msgid "'file-patterns' entry is empty/missing"
+msgstr "L'entrée « file-patterns » est vide ou manquante"
+
+#: kleo/checksumdefinition.cpp:395
+#, kde-format
+msgid "Caught unknown exception in group %1"
+msgstr "Réception d'une exception inconnue dans le groupe %1"
+
+#: kleo/dn.cpp:507
+#, kde-format
+msgid "Common name"
+msgstr "Nom complet"
+
+#: kleo/dn.cpp:508
+#, kde-format
+msgid "Surname"
+msgstr "Nom de famille"
+
+#: kleo/dn.cpp:509
+#, kde-format
+msgid "Given name"
+msgstr "Prénom"
+
+#: kleo/dn.cpp:510
+#, kde-format
+msgid "Location"
+msgstr "Emplacement"
+
+#: kleo/dn.cpp:511
+#, kde-format
+msgid "Title"
+msgstr "Titre"
+
+#: kleo/dn.cpp:512
+#, kde-format
+msgid "Organizational unit"
+msgstr "Unité d'organisation"
+
+#: kleo/dn.cpp:513
+#, kde-format
+msgid "Organization"
+msgstr "Organisation"
+
+#: kleo/dn.cpp:514
+#, kde-format
+msgid "Postal code"
+msgstr "Code postal"
+
+#: kleo/dn.cpp:515
+#, kde-format
+msgid "Country code"
+msgstr "Indicatif du pays"
+
+#: kleo/dn.cpp:516
+#, kde-format
+msgid "State or province"
+msgstr "État ou province"
+
+#: kleo/dn.cpp:517
+#, kde-format
+msgid "Domain component"
+msgstr "Composant du domaine"
+
+#: kleo/dn.cpp:518
+#, kde-format
+msgid "Business category"
+msgstr "Catégorie professionnelle"
+
+#: kleo/dn.cpp:519
+#, kde-format
+msgid "Email address"
+msgstr "Adresse de courrier électronique"
+
+#: kleo/dn.cpp:520
+#, kde-format
+msgid "Mail address"
+msgstr "Adresse postale"
+
+#: kleo/dn.cpp:521
+#, kde-format
+msgid "Mobile phone number"
+msgstr "Numéro de téléphone portable"
+
+#: kleo/dn.cpp:522
+#, kde-format
+msgid "Telephone number"
+msgstr "Numéro de téléphone"
+
+#: kleo/dn.cpp:523
+#, kde-format
+msgid "Fax number"
+msgstr "Numéro de télécopie"
+
+#: kleo/dn.cpp:524
+#, kde-format
+msgid "Street address"
+msgstr "Adresse"
+
+#: kleo/dn.cpp:525
+#, kde-format
+msgid "Unique ID"
+msgstr "ID unique"
+
+#: kleo/enum.cpp:57
+#, kde-format
+msgid "Inline OpenPGP (deprecated)"
+msgstr "OpenPGP intégré (déconseillé)"
+
+#: kleo/enum.cpp:62
+#, kde-format
+msgid "OpenPGP/MIME"
+msgstr "OpenPGP / MIME"
+
+#: kleo/enum.cpp:67 ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "S/MIME"
+msgstr "S / MIME"
+
+#: kleo/enum.cpp:72
+#, kde-format
+msgid "S/MIME Opaque"
+msgstr "S / MIME opaque"
+
+#: kleo/enum.cpp:104
+#, kde-format
+msgid "Any"
+msgstr "N'importe lequel"
+
+#: kleo/enum.cpp:177
+#, kde-format
+msgid "Never Encrypt"
+msgstr "Ne jamais chiffrer"
+
+#: kleo/enum.cpp:179
+#, kde-format
+msgid "Always Encrypt"
+msgstr "Toujours chiffrer"
+
+#: kleo/enum.cpp:181
+#, kde-format
+msgid "Always Encrypt If Possible"
+msgstr "Toujours chiffrer si possible"
+
+#: kleo/enum.cpp:183 kleo/enum.cpp:240
+#, kde-format
+msgid "Ask"
+msgstr "Demander"
+
+#: kleo/enum.cpp:185 kleo/enum.cpp:242
+#, kde-format
+msgid "Ask Whenever Possible"
+msgstr "Demander chaque fois que cela est possible"
+
+#: kleo/enum.cpp:187
+#, kde-kuit-format
+msgctxt "no specific preference"
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>aucun</placeholder>"
+
+#: kleo/enum.cpp:234
+#, kde-format
+msgid "Never Sign"
+msgstr "Ne jamais signer"
+
+#: kleo/enum.cpp:236
+#, kde-format
+msgid "Always Sign"
+msgstr "Toujours signer"
+
+#: kleo/enum.cpp:238
+#, kde-format
+msgid "Always Sign If Possible"
+msgstr "Toujours signer si possible"
+
+#: kleo/enum.cpp:244
+#, kde-format
+msgctxt "no specific preference"
+msgid "<none>"
+msgstr "<aucune>"
+
+#: kleo/keyfiltermanager.cpp:85
+#, kde-format
+msgid "All Certificates"
+msgstr "Tous les certificats"
+
+#: kleo/keyfiltermanager.cpp:100
+#, kde-format
+msgid "My Certificates"
+msgstr "Mes certificats"
+
+#: kleo/keyfiltermanager.cpp:118
+#, kde-format
+msgid "Trusted Certificates"
+msgstr "Certificats de confiance"
+
+#: kleo/keyfiltermanager.cpp:135
+#, kde-format
+msgid "Fully Trusted Certificates"
+msgstr "Certificats avec une confiance totale"
+
+#: kleo/keyfiltermanager.cpp:152
+#, kde-format
+msgid "Other Certificates"
+msgstr "Autres certificats"
+
+#: kleo/keyfiltermanager.cpp:166
+#, kde-format
+msgid "VS-compliant Certificates"
+msgstr "Certificats compatibles VS"
+
+#: kleo/keyfiltermanager.cpp:184
+#, kde-format
+msgid "Not validated Certificates"
+msgstr "Certificats non validés"
+
+#: ui/auditlogviewer.cpp:49
+#, kde-format
+msgid "View GnuPG Audit Log"
+msgstr "Affiche le journal d'audit de GnuPG"
+
+#: ui/auditlogviewer.cpp:53
+#, kde-format
+msgid "&Copy to Clipboard"
+msgstr "&Copier dans le presse-papier"
+
+#: ui/auditlogviewer.cpp:59
+#, kde-format
+msgid "&Save to Disk..."
+msgstr "Enregi&strer sur disque..."
+
+#: ui/auditlogviewer.cpp:95
+#, kde-format
+msgid "Choose File to Save GnuPG Audit Log to"
+msgstr "Sélectionnez un fichier pour enregistrer le journal d'audit de GnuPG"
+
+#: ui/auditlogviewer.cpp:118
+#, kde-format
+msgid "Could not save to file \"%1\": %2"
+msgstr "Impossible d'enregistrer le fichier « %1 » : %2"
+
+#: ui/auditlogviewer.cpp:120
+#, kde-format
+msgid "File Save Error"
+msgstr "Erreur d'enregistrement du fichier"
+
+#: ui/cryptoconfigdialog.cpp:44
+#, kde-format
+msgid "Configure GnuPG Backend"
+msgstr "Configurer le moteur GnuPG"
+
+#: ui/cryptoconfigdialog.cpp:55
+#, kde-format
+msgid "&Reset"
+msgstr "&Ré-initialiser"
+
+#: ui/cryptoconfigmodule.cpp:160
+#, kde-format
+msgid "GpgConf Error"
+msgstr "Erreur de GpgConf"
+
+#: ui/cryptoconfigmodule.cpp:216
+#, kde-format
+msgid ""
+"The gpgconf tool used to provide the information for this dialog does not "
+"seem to be installed properly. It did not return any components. Try running "
+"\"%1\" on the command line for more information."
+msgstr ""
+"L'outil GpgConf utilisé pour fournir les informations à cette boîte de "
+"dialogue ne semble pas installé correctement. Il n'a trouvé aucun composant. "
+"Essayez d'exécuter la commande « %1 » dans un terminal pour obtenir plus "
+"d'informations."
+
+#: ui/cryptoconfigmodule.cpp:496
+#, kde-format
+msgctxt ""
+"Translate this to 'yes' or 'no' (use the English words!) depending on "
+"whether your language uses Sentence style capitalisation in GUI labels (yes) "
+"or not (no). Context: We get some backend strings in that have the wrong "
+"capitalizaion (in English, at least) so we need to force the first character "
+"to upper-case. It is this behaviour you can control for your language with "
+"this translation."
+msgid "yes"
+msgstr "no"
+
+#: ui/cryptoconfigmodule.cpp:546
+#, kde-format
+msgid "0 - None"
+msgstr "0 - Aucun"
+
+#: ui/cryptoconfigmodule.cpp:547
+#, kde-format
+msgid "1 - Basic"
+msgstr "1 - Basique"
+
+#: ui/cryptoconfigmodule.cpp:548
+#, kde-format
+msgid "2 - Verbose"
+msgstr "2 - Détaillé"
+
+#: ui/cryptoconfigmodule.cpp:549
+#, kde-format
+msgid "3 - More Verbose"
+msgstr "3 - Plus détaillé"
+
+#: ui/cryptoconfigmodule.cpp:550
+#, kde-format
+msgid "4 - All"
+msgstr "4 - Tous"
+
+#: ui/cryptoconfigmodule.cpp:559
+#, kde-format
+msgid "Set the debugging level to"
+msgstr "Définir le niveau de débogage à"
+
+#: ui/cryptoconfigmodule.cpp:787
+#, kde-format
+msgid "Show..."
+msgstr "Afficher..."
+
+#: ui/cryptoconfigmodule.cpp:787 ui/cryptoconfigmodule.cpp:876
+#, kde-format
+msgid "Edit..."
+msgstr "Modifier..."
+
+#: ui/cryptoconfigmodule.cpp:841
+#, kde-format
+msgid "Configure LDAP Servers"
+msgstr "Configurer les serveurs LDAP"
+
+#: ui/cryptoconfigmodule.cpp:862
+#, kde-format
+msgid "None configured"
+msgstr "Aucun configuré"
+
+#: ui/cryptoconfigmodule.cpp:864
+#, kde-format
+msgid "1 server configured"
+msgid_plural "%1 servers configured"
+msgstr[0] "1 serveur configuré"
+msgstr[1] "%1 serveurs configurés"
+
+#: ui/cryptoconfigmodule.cpp:879
+#, kde-format
+msgid "Use keyserver at"
+msgstr "Utiliser le serveur de clés à"
+
+#: ui/cryptoconfigmodule.cpp:968
+#, kde-format
+msgid "Configure Keyservers"
+msgstr "Configurer les serveurs de clés"
+
+#: ui/directoryserviceswidget.cpp:67
+#, kde-format
+msgctxt "default server name, keep it a valid domain name, ie. no spaces"
+msgid "server"
+msgstr "serveur"
+
+#: ui/directoryserviceswidget.cpp:95
+#, kde-format
+msgid "hkp"
+msgstr "hkp"
+
+#: ui/directoryserviceswidget.cpp:96
+#, kde-format
+msgid "http"
+msgstr "http"
+
+#: ui/directoryserviceswidget.cpp:97
+#, kde-format
+msgid "https"
+msgstr "https"
+
+#: ui/directoryserviceswidget.cpp:98
+#, kde-format
+msgid "ftp"
+msgstr "ftp"
+
+#: ui/directoryserviceswidget.cpp:99
+#, kde-format
+msgid "ftps"
+msgstr "ftps"
+
+#: ui/directoryserviceswidget.cpp:100
+#, kde-format
+msgid "ldap"
+msgstr "ldap"
+
+#: ui/directoryserviceswidget.cpp:101
+#, kde-format
+msgid "ldaps"
+msgstr "ldaps"
+
+#: ui/directoryserviceswidget.cpp:588
+#, kde-format
+msgid "Server Name"
+msgstr "Nom du serveur"
+
+#: ui/directoryserviceswidget.cpp:589
+#, kde-format
+msgid "Server Port"
+msgstr "Port du serveur"
+
+#: ui/directoryserviceswidget.cpp:590
+#, kde-format
+msgid "Base DN"
+msgstr "DN de base"
+
+#: ui/directoryserviceswidget.cpp:591
+#, kde-format
+msgid "User Name"
+msgstr "Nom d'utilisateur"
+
+#: ui/directoryserviceswidget.cpp:592
+#, kde-format
+msgid "Password"
+msgstr "Mot de passe"
+
+#: ui/directoryserviceswidget.cpp:614
+#, kde-format
+msgid "(read-only)"
+msgstr "(lecture seule)"
+
+#: ui/directoryserviceswidget.cpp:616
+#, kde-format
+msgctxt "amended tooltip; %1: original tooltip"
+msgid "%1 (read-only)"
+msgstr "%1 (lecture seule)"
+
+#: ui/directoryserviceswidget.cpp:739
+#, kde-format
+msgid ""
+"Enter the name or IP address of the server hosting the directory service."
+msgstr ""
+"Saisissez le nom ou l'adresse IP du serveur hébergeant le service d'annuaire."
+
+#: ui/directoryserviceswidget.cpp:741
+#, kde-format
+msgid ""
+"<b>(Optional, the default is fine in most cases)</b> Pick the port number "
+"the directory service is listening on."
+msgstr ""
+"<b>(Optionnel, la valeur par défaut est correcte dans la plupart des cas)</"
+"b> Sélectionnez le numéro du port sur lequel le service d'annuaire écoute."
+
+#: ui/directoryserviceswidget.cpp:744
+#, kde-format
+msgid ""
+"<b>(Only for LDAP)</b> Enter the base DN for this LDAP server to limit "
+"searches to only that subtree of the directory."
+msgstr ""
+"<b>(Uniquement pour LDAP)</b>. Saisissez le DN de base pour ce serveur LDAP "
+"afin de ne limiter les recherches qu'à ce sous-arbre du dossier."
+
+#: ui/directoryserviceswidget.cpp:747
+#, kde-format
+msgid "<b>(Optional)</b> Enter your user name here, if needed."
+msgstr ""
+"<b>(Optionnel)</b> Saisissez ici votre nom d'utilisateur, si cela est "
+"nécessaire."
+
+#: ui/directoryserviceswidget.cpp:749
+#, kde-format
+msgid ""
+"<b>(Optional, not recommended)</b> Enter your password here, if needed. Note "
+"that the password will be saved in the clear in a config file in your home "
+"directory."
+msgstr ""
+"<b>(Optionnel, non recommandé)</b> Saisissez ici votre mot de passe, si "
+"nécessaire. Veuillez noter que le mot de passe sera alors enregistré en "
+"clair dans le fichier de configuration de votre dossier personnel."
+
+#. i18n: ectx: property (windowTitle), widget (QWidget, DirectoryServicesWidget)
+#: ui/directoryserviceswidget.ui:14
+#, kde-format
+msgid "Directory Services Configuration"
+msgstr "Configuration des services d'annuaire"
+
+#. i18n: ectx: property (text), widget (QLabel, pgpKSLabel)
+#: ui/directoryserviceswidget.ui:22
+#, kde-format
+msgid "OpenPGP Keyserver:"
+msgstr "Serveur de clés OpenPGP"
+
+#. i18n: ectx: property (title), widget (QGroupBox, x500LA)
+#: ui/directoryserviceswidget.ui:35
+#, kde-format
+msgid "X509 Directory services:"
+msgstr "Services d'annuaire X509 :"
+
+#. i18n: ectx: property (whatsThis), widget (QTreeView, treeView)
+#: ui/directoryserviceswidget.ui:43
+#, kde-format
+msgid ""
+"This is a list of all directory services that are configured for use with "
+"X.509."
+msgstr ""
+"Il s'agit de la liste de tous les services d'annuaire étant configurés pour "
+"être utilisés avec X.509."
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:70
+#, kde-format
+msgid "Click to add a service"
+msgstr "Cliquez pour ajouter un service"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:73
+#, kde-format
+msgid ""
+"Click this button to create a new directory service entry as a clone of the "
+"currently selected one (or with default values, if no other is selected). "
+"You can then configure details in the table on the left hand."
+msgstr ""
+"Cliquez sur ce bouton pour créer un nouveau service d'annuaire, clone de "
+"celui actuellement sélectionné ou avec des valeurs par défaut si aucun n'est "
+"sélectionné. Vous pouvez alors configurer les détails dans le tableau de la "
+"partie gauche."
+
+#. i18n: ectx: property (text), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:76
+#, kde-format
+msgid "New"
+msgstr "Nouveau"
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:92
+#, kde-format
+msgid "Click to remove the currently selected service"
+msgstr "Cliquez pour supprimer le service actuellement sélectionné"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:95
+#, kde-format
+msgid ""
+"Click this button to remove the currently selected directory service. The "
+"change will only take effect once you acknowledge the main configuration "
+"dialog."
+msgstr ""
+"Cliquez sur ce bouton pour supprimer le service d'annuaire actuellement "
+"sélectionné. La modification ne sera effective que lorsque vous aurez validé "
+"la boîte de dialogue principale de configuration."
+
+#. i18n: ectx: property (text), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:98
+#, kde-format
+msgid "Delete"
+msgstr "Supprimer"
+
+#. i18n: ectx: property (whatsThis), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:128
+#, kde-format
+msgid ""
+"Use this option to switch display of username and password information on or "
+"off in the above table."
+msgstr ""
+"Utilisez cette option pour afficher ou non les informations de nom "
+"d'utilisateur et de mot de passe dans le tableau ci-dessous."
+
+#. i18n: ectx: property (text), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:131
+#, kde-format
+msgid "Show user and password information"
+msgstr "Afficher les informations de nom d'utilisateur et de mot de passe"
+
+#: ui/dnattributeorderconfigwidget.cpp:73
+#, kde-format
+msgid "Description"
+msgstr "Description"
+
+#: ui/dnattributeorderconfigwidget.cpp:91
+#, kde-format
+msgid "Available attributes:"
+msgstr "Attributs disponibles :"
+
+#: ui/dnattributeorderconfigwidget.cpp:92
+#, kde-format
+msgid "Current attribute order:"
+msgstr "Ordre actuel des attributs :"
+
+#: ui/dnattributeorderconfigwidget.cpp:112
+#, kde-format
+msgid "All others"
+msgstr "Tous les autres"
+
+#: ui/dnattributeorderconfigwidget.cpp:129
+#, kde-format
+msgid "Move to top"
+msgstr "Déplacer vers le haut"
+
+#: ui/dnattributeorderconfigwidget.cpp:130
+#, kde-format
+msgid "Move one up"
+msgstr "Déplacer vers le haut d'une position"
+
+#: ui/dnattributeorderconfigwidget.cpp:131
+#, kde-format
+msgid "Remove from current attribute order"
+msgstr "Supprimer de l'ordre actuel des attributs"
+
+#: ui/dnattributeorderconfigwidget.cpp:132
+#, kde-format
+msgid "Add to current attribute order"
+msgstr "Ajouter à l'ordre actuel des attributs"
+
+#: ui/dnattributeorderconfigwidget.cpp:133
+#, kde-format
+msgid "Move one down"
+msgstr "Déplacer vers le bas d'une position"
+
+#: ui/dnattributeorderconfigwidget.cpp:134
+#, kde-format
+msgid "Move to bottom"
+msgstr "Déplacer tout en bas"
+
+#: ui/keyapprovaldialog.cpp:87
+#, kde-kuit-format
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>aucun</placeholder>"
+
+#: ui/keyapprovaldialog.cpp:88
+#, kde-format
+msgid "Never Encrypt with This Key"
+msgstr "Ne jamais chiffrer avec cette clé"
+
+#: ui/keyapprovaldialog.cpp:89
+#, kde-format
+msgid "Always Encrypt with This Key"
+msgstr "Toujours chiffrer avec cette clé"
+
+#: ui/keyapprovaldialog.cpp:90
+#, kde-format
+msgid "Encrypt Whenever Encryption is Possible"
+msgstr "Chiffrer chaque fois que le chiffrement est possible"
+
+#: ui/keyapprovaldialog.cpp:91
+#, kde-format
+msgid "Always Ask"
+msgstr "Toujours demander"
+
+#: ui/keyapprovaldialog.cpp:92
+#, kde-format
+msgid "Ask Whenever Encryption is Possible"
+msgstr "Demander chaque fois que le chiffrement est possible"
+
+#: ui/keyapprovaldialog.cpp:113
+#, kde-format
+msgid "Encryption Key Approval"
+msgstr "Approbation de la clé de chiffrement"
+
+#: ui/keyapprovaldialog.cpp:129
+#, kde-format
+msgid "The following keys will be used for encryption:"
+msgstr "Les clés suivantes seront utilisées pour le chiffrement :"
+
+#: ui/keyapprovaldialog.cpp:145
+#, kde-format
+msgid "Your keys:"
+msgstr "Vos clés :"
+
+#: ui/keyapprovaldialog.cpp:157
+#, kde-format
+msgid "Recipient:"
+msgstr "Destinataire :"
+
+#: ui/keyapprovaldialog.cpp:162
+#, kde-format
+msgid "Encryption keys:"
+msgstr "Clés de chiffrement :"
+
+#: ui/keyapprovaldialog.cpp:169
+#, kde-format
+msgid "Encryption preference:"
+msgstr "Préférence de chiffrement :"
+
+#: ui/keyrequester.cpp:118
+#, kde-format
+msgid "Clear"
+msgstr "Effacer"
+
+#: ui/keyrequester.cpp:121
+#, kde-format
+msgid "Change..."
+msgstr "Modifier..."
+
+#: ui/keyrequester.cpp:232 ui/keyselectiondialog.cpp:256
+#, kde-kuit-format
+msgid "<placeholder>unknown</placeholder>"
+msgstr "<placeholder>inconnu</placeholder>"
+
+#: ui/keyrequester.cpp:246 ui/keyselectiondialog.cpp:657
+#, kde-format
+msgid ""
+"<qt><p>An error occurred while fetching the keys from the backend:</p><p><b>"
+"%1</b></p></qt>"
+msgstr ""
+"<qt><p>Une erreur s'est produite lors de la réception des clés depuis le "
+"moteur :</p><p><b>%1</b></p></qt>"
+
+#: ui/keyrequester.cpp:251 ui/keyrequester.cpp:283 ui/keyrequester.cpp:306
+#: ui/keyselectiondialog.cpp:630 ui/keyselectiondialog.cpp:662
+#, kde-format
+msgid "Key Listing Failed"
+msgstr "Échec du listage des clés"
+
+#: ui/keyrequester.cpp:281
+#, kde-format
+msgid ""
+"The OpenPGP backend does not support listing keys. Check your installation."
+msgstr ""
+"Le moteur OpenPGP ne prend pas en charge le listage des clés. Veuillez "
+"vérifier votre installation."
+
+#: ui/keyrequester.cpp:304
+#, kde-format
+msgid ""
+"The S/MIME backend does not support listing keys. Check your installation."
+msgstr ""
+"Le moteur S / MIME ne prend pas en charge le listage des clés. Veuillez "
+"vérifier votre installation."
+
+#: ui/keyrequester.cpp:426
+#, kde-format
+msgid "OpenPGP Key Selection"
+msgstr "Sélection d'une clé OpenPGP"
+
+#: ui/keyrequester.cpp:427
+#, kde-format
+msgid "Please select an OpenPGP key to use."
+msgstr "Veuillez sélectionner une clé OpenPGP à utiliser."
+
+#: ui/keyrequester.cpp:429
+#, kde-format
+msgid "S/MIME Key Selection"
+msgstr "Sélection d'une clé S / MIME"
+
+#: ui/keyrequester.cpp:430
+#, kde-format
+msgid "Please select an S/MIME key to use."
+msgstr "Veuillez sélectionner une clé S / MIME à utiliser."
+
+#: ui/keyrequester.cpp:432
+#, kde-format
+msgid "Key Selection"
+msgstr "Sélection d'une clé"
+
+#: ui/keyrequester.cpp:433
+#, kde-format
+msgid "Please select an (OpenPGP or S/MIME) key to use."
+msgstr "Veuillez sélectionner une clé (OpenPGP ou S / MIME) à utiliser."
+
+#: ui/keyselectioncombo.cpp:195
+#, kde-format
+msgctxt "Name <email> (validity, type, created: date)"
+msgid "%1 (%2, %3, created: %4)"
+msgstr "%1 (%2, %3, créé : %4)"
+
+#: ui/keyselectioncombo.cpp:196
+#, kde-format
+msgctxt "Name <email>"
+msgid "%1 <%2>"
+msgstr "%1 <%2>"
+
+#: ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "OpenPGP"
+msgstr "OpenPGP"
+
+#: ui/keyselectioncombo.cpp:347
+#, kde-format
+msgid "Loading keys ..."
+msgstr "Téléchargement des clés…"
+
+#: ui/keyselectiondialog.cpp:98
+#, kde-format
+msgid "The key is not valid."
+msgstr "La clé n'est pas valable."
+
+#: ui/keyselectiondialog.cpp:106
+#, kde-format
+msgid "The key is expired."
+msgstr "La clé a expiré."
+
+#: ui/keyselectiondialog.cpp:110
+#, kde-format
+msgid "The key is revoked."
+msgstr "La clé a été révoquée."
+
+#: ui/keyselectiondialog.cpp:114
+#, kde-format
+msgid "The key is disabled."
+msgstr "La clé est désactivé."
+
+#: ui/keyselectiondialog.cpp:122
+#, kde-format
+msgid "The key is not designated for encryption."
+msgstr "La clé n'est pas destinée au chiffrement."
+
+#: ui/keyselectiondialog.cpp:128
+#, kde-format
+msgid "The key is not designated for signing."
+msgstr "La clé n'est pas destinée à la signature."
+
+#: ui/keyselectiondialog.cpp:134
+#, kde-format
+msgid "The key is not designated for certifying."
+msgstr "La clé n'est pas destinée à la certification."
+
+#: ui/keyselectiondialog.cpp:140
+#, kde-format
+msgid "The key is not designated for authentication."
+msgstr "La clé n'est pas destinée à l'authentification."
+
+#: ui/keyselectiondialog.cpp:148
+#, kde-format
+msgid "The key is not secret."
+msgstr "La clé n'est pas secrète."
+
+#: ui/keyselectiondialog.cpp:163
+#, kde-format
+msgid "The key is not trusted enough."
+msgstr "La clé n'a pas un niveau de confiance suffisant."
+
+#: ui/keyselectiondialog.cpp:169
+#, kde-format
+msgid "The key can be used."
+msgstr "La clé peut être utilisée."
+
+#: ui/keyselectiondialog.cpp:230
+#, kde-format
+msgid "Key ID"
+msgstr "Identifiant de clé"
+
+#: ui/keyselectiondialog.cpp:231
+#, kde-format
+msgid "User ID"
+msgstr "Identifiant d'utilisateur"
+
+#: ui/keyselectiondialog.cpp:279
+#, kde-format
+msgid "never"
+msgstr "jamais"
+
+#: ui/keyselectiondialog.cpp:289 ui/keyselectiondialog.cpp:291
+#: ui/keyselectiondialog.cpp:300 ui/keyselectiondialog.cpp:302
+#, kde-format
+msgid "unknown"
+msgstr "inconnu"
+
+#: ui/keyselectiondialog.cpp:289
+#, kde-format
+msgid "OpenPGP key for <b>%1</b>"
+msgstr "Clé OpenPGP pour <b>%1</b>"
+
+#: ui/keyselectiondialog.cpp:291
+#, kde-format
+msgid "S/MIME key for <b>%1</b>"
+msgstr "Clé S/MIME pour <b>%1</b>"
+
+#: ui/keyselectiondialog.cpp:298
+#, kde-format
+msgctxt "Key creation date"
+msgid "Created"
+msgstr "Créée"
+
+#: ui/keyselectiondialog.cpp:299
+#, kde-format
+msgctxt "Key Expiration date"
+msgid "Expiry"
+msgstr "Expiration"
+
+#: ui/keyselectiondialog.cpp:300
+#, kde-format
+msgctxt "Key fingerprint"
+msgid "Fingerprint"
+msgstr "Empreinte"
+
+#: ui/keyselectiondialog.cpp:302
+#, kde-format
+msgctxt "Key issuer"
+msgid "Issuer"
+msgstr "Émetteur"
+
+#: ui/keyselectiondialog.cpp:304
+#, kde-format
+msgctxt "Key status"
+msgid "Status"
+msgstr "État"
+
+#: ui/keyselectiondialog.cpp:456
+#, kde-format
+msgid "Search for &External Certificates"
+msgstr "Chercher des certificats &externes"
+
+#: ui/keyselectiondialog.cpp:470
+#, kde-format
+msgid "&Search for:"
+msgstr "&Rechercher :"
+
+#: ui/keyselectiondialog.cpp:494
+#, kde-format
+msgid "&Remember choice"
+msgstr "Mémo&riser le choix"
+
+#: ui/keyselectiondialog.cpp:497
+#, kde-format
+msgid ""
+"<qt><p>If you check this box your choice will be stored and you will not be "
+"asked again.</p></qt>"
+msgstr ""
+"<qt><p>Si vous sélectionnez cette option, votre choix sera enregistré et "
+"vous ne serez plus sollicité à nouveau.</p></qt>"
+
+#: ui/keyselectiondialog.cpp:509
+#, kde-format
+msgid "&Reread Keys"
+msgstr "&Relire les clés"
+
+#: ui/keyselectiondialog.cpp:510
+#, kde-format
+msgid "&Start Certificate Manager"
+msgstr "Démarrer le ge&stionnaire de certificats"
+
+#: ui/keyselectiondialog.cpp:628
+#, kde-format
+msgid "No backends found for listing keys. Check your installation."
+msgstr ""
+"Aucun moteur trouvé pour lister les clés. Veuillez vérifier votre "
+"installation."
+
+#: ui/keyselectiondialog.cpp:644
+#, kde-format
+msgid "Could not start certificate manager; please check your installation."
+msgstr ""
+"Impossible de démarrer le gestionnaire de certificats. Veuillez vérifier "
+"votre installation."
+
+#: ui/keyselectiondialog.cpp:646
+#, kde-format
+msgid "Certificate Manager Error"
+msgstr "Erreur du gestionnaire de certificats"
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Checking selected keys..."
+msgstr "Vérification des clés sélectionnées..."
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Fetching keys..."
+msgstr "Téléchargement des clés..."
+
+#: ui/keyselectiondialog.cpp:731
+#, kde-format
+msgid ""
+"<qt>One backend returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgid_plural ""
+"<qt>%1 backends returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgstr[0] ""
+"<qt>Un moteur a retourné une sortie tronquée.<p>Certaines clés disponibles "
+"ne sont pas affichées.</p></qt>"
+msgstr[1] ""
+"<qt>%1 moteurs ont retourné une sortie tronquée.<p>Certaines clés "
+"disponibles ne sont pas affichées.</p></qt>"
+
+#: ui/keyselectiondialog.cpp:736
+#, kde-format
+msgid "Key List Result"
+msgstr "Résultat du listage des clés"
+
+#: ui/keyselectiondialog.cpp:856
+#, kde-format
+msgid "Recheck Key"
+msgstr "Vérifier la clé à nouveau"
+
+#: ui/messagebox.cpp:71
+#, kde-format
+msgid "Your system does not have support for GnuPG Audit Logs"
+msgstr "Votre système ne prend pas en charge les journaux d'audit pour GnuPG"
+
+#: ui/messagebox.cpp:72
+#, kde-format
+msgid "System Error"
+msgstr "Erreur système"
+
+#: ui/messagebox.cpp:79
+#, kde-format
+msgid ""
+"An error occurred while trying to retrieve the GnuPG Audit Log:\n"
+"%1"
+msgstr ""
+"Une erreur est survenue en tentant de lire le fichier d'audit de GnuPG :\n"
+"%1"
+
+#: ui/messagebox.cpp:81
+#, kde-format
+msgid "GnuPG Audit Log Error"
+msgstr "Erreur du journal d'audit de GnuPG"
+
+#: ui/messagebox.cpp:88
+#, kde-format
+msgid "No GnuPG Audit Log available for this operation."
+msgstr "Aucun journal d'audit GnuPG disponible pour cette opération."
+
+#: ui/messagebox.cpp:89
+#, kde-format
+msgid "No GnuPG Audit Log"
+msgstr "Aucun journal d'audit GnuPG"
+
+#: ui/messagebox.cpp:109 ui/messagebox.cpp:115
+#, kde-format
+msgid "GnuPG Audit Log Viewer"
+msgstr "Afficheur de journal d'audit GnuPG"
+
+#: ui/messagebox.cpp:121
+#, kde-format
+msgid "Signing failed: %1"
+msgstr "Échec de la signature : %1"
+
+#: ui/messagebox.cpp:122
+#, kde-format
+msgid "Signing successful"
+msgstr "Signature réussie"
+
+#: ui/messagebox.cpp:133
+#, kde-format
+msgid "Encryption failed: %1"
+msgstr "Échec du chiffrement : %1"
+
+#: ui/messagebox.cpp:134
+#, kde-format
+msgid "Encryption successful"
+msgstr "Chiffrement réussi"
+
+#: ui/messagebox.cpp:155
+#, kde-format
+msgid "Signing Result"
+msgstr "Résultat de la signature"
+
+#: ui/messagebox.cpp:167
+#, kde-format
+msgid "Signing Error"
+msgstr "Erreur de signature"
+
+#: ui/messagebox.cpp:179 ui/messagebox.cpp:203
+#, kde-format
+msgid "Encryption Result"
+msgstr "Résultat du chiffrement"
+
+#: ui/messagebox.cpp:191 ui/messagebox.cpp:215
+#, kde-format
+msgid "Encryption Error"
+msgstr "Erreur du chiffrement"
+
+#: ui/messagebox.cpp:263
+#, kde-format
+msgid "&Show Audit Log"
+msgstr "&Afficher le journal d'audit"
+
+#: ui/progressdialog.cpp:91
+#, kde-format
+msgid "%1: %2"
+msgstr "%1 : %2"
+
+#~ msgctxt "New X.509 Directory Server"
+#~ msgid "X.509"
+#~ msgstr "X.509"
+
+#~ msgctxt "New OpenPGP Directory Server"
+#~ msgid "OpenPGP"
+#~ msgstr "OpenPGP"
+
+#~ msgid "Scheme"
+#~ msgstr "Schéma"
+
+#~ msgid "X.509"
+#~ msgstr "X.509"
+
+#~ msgid ""
+#~ "Select the access scheme (scheme) that the directory service is available "
+#~ "through."
+#~ msgstr ""
+#~ "Sélectionnez le schéma d'accès (schéma) pour lequel votre service "
+#~ "d'annuaire est disponible."
+
+#~ msgid ""
+#~ "Check this column if this directory service is providing S/MIME (X.509) "
+#~ "certificates."
+#~ msgstr ""
+#~ "Vérifier cette colonne si ce service d'annuaire fournit des certificats "
+#~ "S / MIME (X 509)."
+
+#~ msgid ""
+#~ "Check this column if this directory service is providing OpenPGP "
+#~ "certificates."
+#~ msgstr ""
+#~ "Vérifier cette colonne si ce service d'annuaire fournit des certificats "
+#~ "OpenPGP."
+
+#~ msgid "0 - None (no debugging at all)"
+#~ msgstr "0 - Aucun (Aucune information de débogage)"
+
+#~ msgid "1 - Basic (some basic debug messages)"
+#~ msgstr "1 - Basique (Quelques messages de débogage de base)"
+
+#~ msgid "2 - Advanced (more verbose debug messages)"
+#~ msgstr "2 - Avancé (Messages de débogage plus détaillés)"
+
+#~ msgid "3 - Expert (even more detailed messages)"
+#~ msgstr "3 - Expert (Messages encore plus détaillés)"
+
+#~ msgid "4 - Guru (all of the debug messages you can get)"
+#~ msgstr "4 - Gourou (Toutes les informations de débogage)"
+
+#~ msgid "General"
+#~ msgstr "Général"
+
+#~ msgid "Chiasmus"
+#~ msgstr "Chiasmus"
+
+#~ msgid "Chiasmus command line tool"
+#~ msgstr "Outil « chiasmus » en ligne de commandes"
+
+#~ msgid "Unsupported protocol \"%1\""
+#~ msgstr "Protocole « %1 » non pris en charge."
+
+#~ msgid "File \"%1\" does not exist or is not executable."
+#~ msgstr "Le fichier « %1 » n'existe pas ou est non exécutable."
+
+#~ msgid "Output from chiasmus"
+#~ msgstr "Sortie de chiasmus"
+
+#~ msgid "Decryption failed: %1"
+#~ msgstr "Échec du déchiffrement : %1"
+
+#~ msgid ""
+#~ "The following was received on stderr:\n"
+#~ "%1"
+#~ msgstr ""
+#~ "Le message suivant a été reçu sur « stderr » :\n"
+#~ "%1"
+
+#~ msgid "Failed to load %1: %2"
+#~ msgstr "Impossible de charger %1 : %2"
+
+#~ msgid "Library does not contain the symbol \"Chiasmus\"."
+#~ msgstr "La bibliothèque ne contient pas le symbole « Chiasmus »."
+
+#~ msgid "Scanning directory %1..."
+#~ msgstr "Analyse du dossier %1..."
+
+#~ msgid "GpgME"
+#~ msgstr "GpgME"
+
+#~ msgid "GPGME was compiled without support for %1."
+#~ msgstr "GPGME a été compilé sans prise en charge pour %1."
+
+#~ msgid "Engine %1 is not installed properly."
+#~ msgstr "Le moteur %1 n'est pas installé correctement."
+
+#~ msgid "Engine %1 version %2 installed, but at least version %3 is required."
+#~ msgstr ""
+#~ "Moteur %1 version %2 installé mais la version %3 au moins est requise."
+
+#~ msgid "Unknown problem with engine for protocol %1."
+#~ msgstr "Problème inconnu avec le moteur pour le protocole %1."
+
+#~ msgid "program terminated unexpectedly"
+#~ msgstr "Le programme s'est terminé de façon inattendue"
+
+#~ msgid "program not found or cannot be started"
+#~ msgstr "Impossible de trouver ou d'exécuter le programme"
+
+#~ msgid "<qt>Failed to execute gpgconf:<p>%1</p></qt>"
+#~ msgstr "<qt>Échec de l'exécution de « gpgconf » :<p>%1</p></qt>"
+
+#~ msgid ""
+#~ "Could not start gpgconf.\n"
+#~ "Check that gpgconf is in the PATH and that it can be started."
+#~ msgstr ""
+#~ "Impossible de démarrer « gpgconf »\n"
+#~ "Vérifiez que « gpgconf » est dans la variable d'environnement « PATH » et "
+#~ "qu'il peut être démarré."
+
+#~ msgid "Error from gpgconf while saving configuration: %1"
+#~ msgstr ""
+#~ "Erreur provenant de « gpgconf » lors de l'enregistrement de la "
+#~ "configuration : %1"
+
+#~ msgid "Generating DSA key..."
+#~ msgstr "Génération d'une clé « DSA »..."
+
+#~ msgid "Generating ElGamal key..."
+#~ msgstr "Génération d'une clé « ElGamal »..."
+
+#~ msgid "Searching for a large prime number..."
+#~ msgstr "Rechercher un grand nombre premier..."
+
+#~ msgid ""
+#~ "Waiting for new entropy from random number generator (you might want to "
+#~ "exercise the harddisks or move the mouse)..."
+#~ msgstr ""
+#~ "Attente d'une nouvelle valeur d'entropie provenant du générateur de "
+#~ "nombres aléatoires (vous pouvez faire travailler vos disques durs ou "
+#~ "déplacer la souris pour faciliter les choses)..."
+
+#~ msgid "Please wait..."
+#~ msgstr "Veuillez patienter..."
+
+#~ msgid ""
+#~ "Starting gpg-agent (you should consider starting a global instance "
+#~ "instead)..."
+#~ msgstr ""
+#~ "Démarrer « gpg-agent » (vous devriez envisager de démarrer une instance "
+#~ "globale à la place)..."
+
+#~ msgid "While scanning for %1 support in backend %2:"
+#~ msgstr "Lors de l'analyse pour la prise en charge de %1 dans le moteur %2 :"
+
+#~ msgctxt "progress info: \"%1 of %2\""
+#~ msgid "%1/%2"
+#~ msgstr "%1 / %2"
+
+#~ msgid ""
+#~ "OpenPGP key for %1\n"
+#~ "Created: %2\n"
+#~ "Expiry: %3\n"
+#~ "Fingerprint: %4"
+#~ msgstr ""
+#~ "Clé OpenPGP pour %1\n"
+#~ "Créée : %2\n"
+#~ "Date d'expiration : %3\n"
+#~ "Empreinte digitale : %4"
+
+#~ msgid ""
+#~ "S/MIME key for %1\n"
+#~ "Created: %2\n"
+#~ "Expiry: %3\n"
+#~ "Fingerprint: %4\n"
+#~ "Issuer: %5"
+#~ msgstr ""
+#~ "Clé S / MIME pour %1\n"
+#~ "Créée : %2\n"
+#~ "Date d'expiration : %3\n"
+#~ "Empreinte digitale : %4\n"
+#~ "Émetteur : %5"
+
+#~ msgid "Copy Audit Log to Clipboard"
+#~ msgstr "Copier le journal d'audit dans le presse-papier"
+
+#~ msgid "Add or Change Directory Service"
+#~ msgstr "Ajouter ou modifier un service d'annuaire"
+
+#~ msgid "&Server name:"
+#~ msgstr "Nom du &serveur :"
+
+#~ msgid "389"
+#~ msgstr "389"
+
+#~ msgid "&User name (optional):"
+#~ msgstr "Nom d'&utilisateur (optionnel) :"
+
+#~ msgid "Pass&word (optional):"
+#~ msgstr "&Mot de passe (optionnel) :"
+
+#~ msgid "&OK"
+#~ msgstr "&Ok"
+
+#~ msgid "&Cancel"
+#~ msgstr "&Annuler"
+
+#~ msgid "&Base DN:"
+#~ msgstr "DN de &base :"
+
+#~ msgid "&Port:"
+#~ msgstr "&Port :"
+
+#~ msgctxt "NAME OF TRANSLATORS"
+#~ msgid "Your names"
+#~ msgstr "Matthieu Robin, Sébastien Renard"
+
+#~ msgctxt "EMAIL OF TRANSLATORS"
+#~ msgid "Your emails"
+#~ msgstr "kde@macolu.org, Sebastien.Renard@digitalfox.org"
+
+#~ msgid "failed"
+#~ msgstr "échoué"
+
+#~ msgctxt ""
+#~ "Items in Kleo::BackendConfigWidget listview (1: protocol; 2: "
+#~ "implementation name)"
+#~ msgid "%1 (%2)"
+#~ msgstr "%1 (%2)"
+
+#~ msgid "Available Backends"
+#~ msgstr "Interfaces disponibles"
+
+#~ msgid "Confi&gure..."
+#~ msgstr "Confi&gurer..."
+
+#~ msgid "Rescan"
+#~ msgstr "Analyser à nouveau"
+
+#~ msgid "The following problems where encountered during scanning:"
+#~ msgstr "Les problèmes suivants ont été rencontrés durant l'analyse :"
+
+#~ msgctxt "@title:window Results of the scanning"
+#~ msgid "Scan Results"
+#~ msgstr "Résultats de l'analyse"
+
+#~ msgid "(Unknown Protocol)"
+#~ msgstr "(protocole inconnu)"
+
+#~ msgid "Error while initializing plugin \"%1\""
+#~ msgstr "Erreur lors de l'initialisation du module externe « %1 »"
--- /dev/null
+# Irish translation of libkleopatra
+# Copyright (C) 2009 This_file_is_part_of_KDE
+# This file is distributed under the same license as the libkleopatra package.
+# Kevin Scannell <kscanne@gmail.com>, 2009.
+msgid ""
+msgstr ""
+"Project-Id-Version: kdepim/libkleopatra.po\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2017-07-12 06:56+0200\n"
+"PO-Revision-Date: 2007-07-23 06:59-0500\n"
+"Last-Translator: Kevin Scannell <kscanne@gmail.com>\n"
+"Language-Team: Irish <gaeilge-gnulinux@lists.sourceforge.net>\n"
+"Language: ga\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=5; plural=n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n < 11 ? "
+"3 : 4\n"
+
+#: kleo/checksumdefinition.cpp:107
+#, kde-format
+msgid "Error in checksum definition %1: %2"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:157
+#, kde-format
+msgid "Cannot use both %f and | in '%1'"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:167
+#, kde-format
+msgid "Quoting error in '%1' entry"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:170
+#, kde-format
+msgid "'%1' too complex (would need shell)"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:174
+#, kde-format
+msgid "'%1' entry is empty/missing"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:183
+#, kde-format
+msgid "'%1' empty or not found"
+msgstr "Bhí '%1' folamh nó gan aimsiú"
+
+#: kleo/checksumdefinition.cpp:222
+#, kde-format
+msgid "'id' entry is empty/missing"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:225
+#, kde-format
+msgid "'output-file' entry is empty/missing"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:228
+#, kde-format
+msgid "'file-patterns' entry is empty/missing"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:395
+#, kde-format
+msgid "Caught unknown exception in group %1"
+msgstr ""
+
+#: kleo/dn.cpp:507
+#, kde-format
+msgid "Common name"
+msgstr "Gnáthainm"
+
+#: kleo/dn.cpp:508
+#, kde-format
+msgid "Surname"
+msgstr "Sloinne"
+
+#: kleo/dn.cpp:509
+#, kde-format
+msgid "Given name"
+msgstr "Ainm"
+
+#: kleo/dn.cpp:510
+#, kde-format
+msgid "Location"
+msgstr "Suíomh"
+
+#: kleo/dn.cpp:511
+#, kde-format
+msgid "Title"
+msgstr "Teideal"
+
+#: kleo/dn.cpp:512
+#, kde-format
+msgid "Organizational unit"
+msgstr "Rannóg"
+
+#: kleo/dn.cpp:513
+#, kde-format
+msgid "Organization"
+msgstr "Eagras"
+
+#: kleo/dn.cpp:514
+#, kde-format
+msgid "Postal code"
+msgstr "Cód poist"
+
+#: kleo/dn.cpp:515
+#, kde-format
+msgid "Country code"
+msgstr "Cód tíre"
+
+#: kleo/dn.cpp:516
+#, kde-format
+msgid "State or province"
+msgstr "Stát nó cúige"
+
+#: kleo/dn.cpp:517
+#, kde-format
+msgid "Domain component"
+msgstr ""
+
+#: kleo/dn.cpp:518
+#, kde-format
+msgid "Business category"
+msgstr ""
+
+#: kleo/dn.cpp:519
+#, kde-format
+msgid "Email address"
+msgstr "Seoladh Ríomhphoist"
+
+#: kleo/dn.cpp:520
+#, kde-format
+msgid "Mail address"
+msgstr "Seoladh poist"
+
+#: kleo/dn.cpp:521
+#, kde-format
+msgid "Mobile phone number"
+msgstr "Fón póca"
+
+#: kleo/dn.cpp:522
+#, kde-format
+msgid "Telephone number"
+msgstr "Uimhir theileafóin"
+
+#: kleo/dn.cpp:523
+#, kde-format
+msgid "Fax number"
+msgstr "Uimhir fhacs"
+
+#: kleo/dn.cpp:524
+#, kde-format
+msgid "Street address"
+msgstr ""
+
+#: kleo/dn.cpp:525
+#, kde-format
+msgid "Unique ID"
+msgstr "Aitheantas Uathúil"
+
+#: kleo/enum.cpp:57
+#, kde-format
+msgid "Inline OpenPGP (deprecated)"
+msgstr "OpenPGP Inlíne (lochtach)"
+
+#: kleo/enum.cpp:62
+#, kde-format
+msgid "OpenPGP/MIME"
+msgstr "OpenPGP/MIME"
+
+#: kleo/enum.cpp:67 ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "S/MIME"
+msgstr "S/MIME"
+
+#: kleo/enum.cpp:72
+#, kde-format
+msgid "S/MIME Opaque"
+msgstr "S/MIME Teimhneach"
+
+#: kleo/enum.cpp:104
+#, kde-format
+msgid "Any"
+msgstr "Ar Bith"
+
+#: kleo/enum.cpp:177
+#, kde-format
+msgid "Never Encrypt"
+msgstr "Ná Criptigh Riamh"
+
+#: kleo/enum.cpp:179
+#, kde-format
+msgid "Always Encrypt"
+msgstr "Criptigh i gCónaí"
+
+#: kleo/enum.cpp:181
+#, kde-format
+msgid "Always Encrypt If Possible"
+msgstr "Criptigh i gCónaí (Más Féidir)"
+
+#: kleo/enum.cpp:183 kleo/enum.cpp:240
+#, kde-format
+msgid "Ask"
+msgstr "Fiafraigh díom"
+
+#: kleo/enum.cpp:185 kleo/enum.cpp:242
+#, kde-format
+msgid "Ask Whenever Possible"
+msgstr "Fiafraigh, Más Féidir"
+
+#: kleo/enum.cpp:187
+#, kde-kuit-format
+msgctxt "no specific preference"
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>gan rogha</placeholder>"
+
+#: kleo/enum.cpp:234
+#, kde-format
+msgid "Never Sign"
+msgstr "Ná Sínigh Riamh"
+
+#: kleo/enum.cpp:236
+#, kde-format
+msgid "Always Sign"
+msgstr "Sínigh i gCónaí"
+
+#: kleo/enum.cpp:238
+#, kde-format
+msgid "Always Sign If Possible"
+msgstr "Sínigh i gCónaí (Más Féidir)"
+
+#: kleo/enum.cpp:244
+#, kde-format
+msgctxt "no specific preference"
+msgid "<none>"
+msgstr "<gan rogha>"
+
+#: kleo/keyfiltermanager.cpp:85
+#, kde-format
+msgid "All Certificates"
+msgstr "Gach Teastas"
+
+#: kleo/keyfiltermanager.cpp:100
+#, kde-format
+msgid "My Certificates"
+msgstr "Mo Chuid Teastas"
+
+#: kleo/keyfiltermanager.cpp:118
+#, kde-format
+msgid "Trusted Certificates"
+msgstr ""
+
+#: kleo/keyfiltermanager.cpp:135
+#, fuzzy, kde-format
+#| msgid "All Certificates"
+msgid "Fully Trusted Certificates"
+msgstr "Gach Teastas"
+
+#: kleo/keyfiltermanager.cpp:152
+#, kde-format
+msgid "Other Certificates"
+msgstr "Teastais Eile"
+
+#: kleo/keyfiltermanager.cpp:166
+#, fuzzy, kde-format
+#| msgid "All Certificates"
+msgid "VS-compliant Certificates"
+msgstr "Gach Teastas"
+
+#: kleo/keyfiltermanager.cpp:184
+#, fuzzy, kde-format
+#| msgid "Other Certificates"
+msgid "Not validated Certificates"
+msgstr "Teastais Eile"
+
+#: ui/auditlogviewer.cpp:49
+#, kde-format
+msgid "View GnuPG Audit Log"
+msgstr ""
+
+#: ui/auditlogviewer.cpp:53
+#, kde-format
+msgid "&Copy to Clipboard"
+msgstr "&Cóipeáil go dtí an Ghearrthaisce"
+
+#: ui/auditlogviewer.cpp:59
+#, kde-format
+msgid "&Save to Disk..."
+msgstr ""
+
+#: ui/auditlogviewer.cpp:95
+#, kde-format
+msgid "Choose File to Save GnuPG Audit Log to"
+msgstr ""
+
+#: ui/auditlogviewer.cpp:118
+#, kde-format
+msgid "Could not save to file \"%1\": %2"
+msgstr ""
+
+#: ui/auditlogviewer.cpp:120
+#, kde-format
+msgid "File Save Error"
+msgstr ""
+
+#: ui/cryptoconfigdialog.cpp:44
+#, kde-format
+msgid "Configure GnuPG Backend"
+msgstr ""
+
+#: ui/cryptoconfigdialog.cpp:55
+#, kde-format
+msgid "&Reset"
+msgstr "Athshoc&raigh"
+
+#: ui/cryptoconfigmodule.cpp:160
+#, kde-format
+msgid "GpgConf Error"
+msgstr "Earráid GpgConf"
+
+#: ui/cryptoconfigmodule.cpp:216
+#, kde-format
+msgid ""
+"The gpgconf tool used to provide the information for this dialog does not "
+"seem to be installed properly. It did not return any components. Try running "
+"\"%1\" on the command line for more information."
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:496
+#, kde-format
+msgctxt ""
+"Translate this to 'yes' or 'no' (use the English words!) depending on "
+"whether your language uses Sentence style capitalisation in GUI labels (yes) "
+"or not (no). Context: We get some backend strings in that have the wrong "
+"capitalizaion (in English, at least) so we need to force the first character "
+"to upper-case. It is this behaviour you can control for your language with "
+"this translation."
+msgid "yes"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:546
+#, kde-format
+msgid "0 - None"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:547
+#, kde-format
+msgid "1 - Basic"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:548
+#, kde-format
+msgid "2 - Verbose"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:549
+#, kde-format
+msgid "3 - More Verbose"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:550
+#, kde-format
+msgid "4 - All"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:559
+#, kde-format
+msgid "Set the debugging level to"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:787
+#, kde-format
+msgid "Show..."
+msgstr "Taispeáin..."
+
+#: ui/cryptoconfigmodule.cpp:787 ui/cryptoconfigmodule.cpp:876
+#, kde-format
+msgid "Edit..."
+msgstr "Eagar..."
+
+#: ui/cryptoconfigmodule.cpp:841
+#, kde-format
+msgid "Configure LDAP Servers"
+msgstr "Cumraigh Freastalaithe LDAP"
+
+#: ui/cryptoconfigmodule.cpp:862
+#, fuzzy, kde-format
+#| msgid "No server configured yet"
+msgid "None configured"
+msgstr "Níl aon fhreastalaí cumraithe fós"
+
+#: ui/cryptoconfigmodule.cpp:864
+#, kde-format
+msgid "1 server configured"
+msgid_plural "%1 servers configured"
+msgstr[0] "Cumraíodh freastalaí amháin"
+msgstr[1] "Cumraíodh dhá fhreastalaí"
+msgstr[2] "Cumraíodh %1 fhreastalaí"
+msgstr[3] "Cumraíodh %1 bhfreastalaí"
+msgstr[4] "Cumraíodh %1 freastalaí"
+
+#: ui/cryptoconfigmodule.cpp:879
+#, kde-format
+msgid "Use keyserver at"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:968
+#, kde-format
+msgid "Configure Keyservers"
+msgstr "Cumraigh Freastalaithe Eochrach"
+
+#: ui/directoryserviceswidget.cpp:67
+#, kde-format
+msgctxt "default server name, keep it a valid domain name, ie. no spaces"
+msgid "server"
+msgstr "freastalaí"
+
+#: ui/directoryserviceswidget.cpp:95
+#, kde-format
+msgid "hkp"
+msgstr "hkp"
+
+#: ui/directoryserviceswidget.cpp:96
+#, kde-format
+msgid "http"
+msgstr "http"
+
+#: ui/directoryserviceswidget.cpp:97
+#, kde-format
+msgid "https"
+msgstr "https"
+
+#: ui/directoryserviceswidget.cpp:98
+#, kde-format
+msgid "ftp"
+msgstr "ftp"
+
+#: ui/directoryserviceswidget.cpp:99
+#, kde-format
+msgid "ftps"
+msgstr "ftps"
+
+#: ui/directoryserviceswidget.cpp:100
+#, kde-format
+msgid "ldap"
+msgstr "ldap"
+
+#: ui/directoryserviceswidget.cpp:101
+#, kde-format
+msgid "ldaps"
+msgstr "ldaps"
+
+#: ui/directoryserviceswidget.cpp:588
+#, kde-format
+msgid "Server Name"
+msgstr "Ainm an Fhreastalaí"
+
+#: ui/directoryserviceswidget.cpp:589
+#, kde-format
+msgid "Server Port"
+msgstr "Port an Fhreastalaí"
+
+#: ui/directoryserviceswidget.cpp:590
+#, kde-format
+msgid "Base DN"
+msgstr "DN Bunaidh"
+
+#: ui/directoryserviceswidget.cpp:591
+#, kde-format
+msgid "User Name"
+msgstr "Ainm Úsáideora"
+
+#: ui/directoryserviceswidget.cpp:592
+#, kde-format
+msgid "Password"
+msgstr "Focal Faire"
+
+#: ui/directoryserviceswidget.cpp:614
+#, kde-format
+msgid "(read-only)"
+msgstr "(inléite amháin)"
+
+#: ui/directoryserviceswidget.cpp:616
+#, kde-format
+msgctxt "amended tooltip; %1: original tooltip"
+msgid "%1 (read-only)"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:739
+#, kde-format
+msgid ""
+"Enter the name or IP address of the server hosting the directory service."
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:741
+#, kde-format
+msgid ""
+"<b>(Optional, the default is fine in most cases)</b> Pick the port number "
+"the directory service is listening on."
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:744
+#, kde-format
+msgid ""
+"<b>(Only for LDAP)</b> Enter the base DN for this LDAP server to limit "
+"searches to only that subtree of the directory."
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:747
+#, kde-format
+msgid "<b>(Optional)</b> Enter your user name here, if needed."
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:749
+#, kde-format
+msgid ""
+"<b>(Optional, not recommended)</b> Enter your password here, if needed. Note "
+"that the password will be saved in the clear in a config file in your home "
+"directory."
+msgstr ""
+
+#. i18n: ectx: property (windowTitle), widget (QWidget, DirectoryServicesWidget)
+#: ui/directoryserviceswidget.ui:14
+#, kde-format
+msgid "Directory Services Configuration"
+msgstr "Cumraíocht na Seirbhísí Eolaire"
+
+#. i18n: ectx: property (text), widget (QLabel, pgpKSLabel)
+#: ui/directoryserviceswidget.ui:22
+#, fuzzy, kde-format
+#| msgid "OpenPGP Key Selection"
+msgid "OpenPGP Keyserver:"
+msgstr "Roghnú Eochrach OpenPGP"
+
+#. i18n: ectx: property (title), widget (QGroupBox, x500LA)
+#: ui/directoryserviceswidget.ui:35
+#, fuzzy, kde-format
+#| msgid "Directory services:"
+msgid "X509 Directory services:"
+msgstr "Seirbhísí eolaire:"
+
+#. i18n: ectx: property (whatsThis), widget (QTreeView, treeView)
+#: ui/directoryserviceswidget.ui:43
+#, kde-format
+msgid ""
+"This is a list of all directory services that are configured for use with "
+"X.509."
+msgstr ""
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:70
+#, kde-format
+msgid "Click to add a service"
+msgstr "Cliceáil chun seirbhís a chur leis"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:73
+#, kde-format
+msgid ""
+"Click this button to create a new directory service entry as a clone of the "
+"currently selected one (or with default values, if no other is selected). "
+"You can then configure details in the table on the left hand."
+msgstr ""
+
+#. i18n: ectx: property (text), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:76
+#, kde-format
+msgid "New"
+msgstr "Nua"
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:92
+#, kde-format
+msgid "Click to remove the currently selected service"
+msgstr "Cliceáil chun an tseirbhís atá roghnaithe faoi láthair a bhaint"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:95
+#, kde-format
+msgid ""
+"Click this button to remove the currently selected directory service. The "
+"change will only take effect once you acknowledge the main configuration "
+"dialog."
+msgstr ""
+
+#. i18n: ectx: property (text), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:98
+#, kde-format
+msgid "Delete"
+msgstr "Scrios"
+
+#. i18n: ectx: property (whatsThis), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:128
+#, kde-format
+msgid ""
+"Use this option to switch display of username and password information on or "
+"off in the above table."
+msgstr ""
+
+#. i18n: ectx: property (text), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:131
+#, kde-format
+msgid "Show user and password information"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:73
+#, kde-format
+msgid "Description"
+msgstr "Cur Síos"
+
+#: ui/dnattributeorderconfigwidget.cpp:91
+#, kde-format
+msgid "Available attributes:"
+msgstr "Tréithe le fáil:"
+
+#: ui/dnattributeorderconfigwidget.cpp:92
+#, kde-format
+msgid "Current attribute order:"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:112
+#, kde-format
+msgid "All others"
+msgstr "Gach ceann eile"
+
+#: ui/dnattributeorderconfigwidget.cpp:129
+#, kde-format
+msgid "Move to top"
+msgstr "Bog go dtí an barr"
+
+#: ui/dnattributeorderconfigwidget.cpp:130
+#, kde-format
+msgid "Move one up"
+msgstr "Bog céim amháin suas"
+
+#: ui/dnattributeorderconfigwidget.cpp:131
+#, kde-format
+msgid "Remove from current attribute order"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:132
+#, kde-format
+msgid "Add to current attribute order"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:133
+#, kde-format
+msgid "Move one down"
+msgstr "Bog céim amháin síos"
+
+#: ui/dnattributeorderconfigwidget.cpp:134
+#, kde-format
+msgid "Move to bottom"
+msgstr "Bog go dtí an bun"
+
+#: ui/keyapprovaldialog.cpp:87
+#, kde-kuit-format
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>neamhní</placeholder>"
+
+#: ui/keyapprovaldialog.cpp:88
+#, kde-format
+msgid "Never Encrypt with This Key"
+msgstr "Ná Criptigh Leis an Eochair Seo Riamh"
+
+#: ui/keyapprovaldialog.cpp:89
+#, kde-format
+msgid "Always Encrypt with This Key"
+msgstr "Criptigh leis an Eochair seo i gcónaí"
+
+#: ui/keyapprovaldialog.cpp:90
+#, kde-format
+msgid "Encrypt Whenever Encryption is Possible"
+msgstr "Criptigh Uair Ar Bith Is Féidir"
+
+#: ui/keyapprovaldialog.cpp:91
+#, kde-format
+msgid "Always Ask"
+msgstr "Fiafraigh Dom i gCónaí"
+
+#: ui/keyapprovaldialog.cpp:92
+#, kde-format
+msgid "Ask Whenever Encryption is Possible"
+msgstr "Fiafraigh Dom Nuair Is Féidir Criptiú"
+
+#: ui/keyapprovaldialog.cpp:113
+#, kde-format
+msgid "Encryption Key Approval"
+msgstr "Ceadú na hEochrach Criptithe"
+
+#: ui/keyapprovaldialog.cpp:129
+#, kde-format
+msgid "The following keys will be used for encryption:"
+msgstr "Úsáidfear na heochracha seo a leanas le haghaidh criptithe:"
+
+#: ui/keyapprovaldialog.cpp:145
+#, kde-format
+msgid "Your keys:"
+msgstr "Do chuid eochracha:"
+
+#: ui/keyapprovaldialog.cpp:157
+#, kde-format
+msgid "Recipient:"
+msgstr "Faighteoir:"
+
+#: ui/keyapprovaldialog.cpp:162
+#, kde-format
+msgid "Encryption keys:"
+msgstr "Eochracha criptithe:"
+
+#: ui/keyapprovaldialog.cpp:169
+#, kde-format
+msgid "Encryption preference:"
+msgstr "Sainrogha chriptithe:"
+
+#: ui/keyrequester.cpp:118
+#, kde-format
+msgid "Clear"
+msgstr "Glan"
+
+#: ui/keyrequester.cpp:121
+#, kde-format
+msgid "Change..."
+msgstr "Athraigh..."
+
+#: ui/keyrequester.cpp:232 ui/keyselectiondialog.cpp:256
+#, kde-kuit-format
+msgid "<placeholder>unknown</placeholder>"
+msgstr "<placeholder>anaithnid</placeholder>"
+
+#: ui/keyrequester.cpp:246 ui/keyselectiondialog.cpp:657
+#, kde-format
+msgid ""
+"<qt><p>An error occurred while fetching the keys from the backend:</p><p><b>"
+"%1</b></p></qt>"
+msgstr ""
+
+#: ui/keyrequester.cpp:251 ui/keyrequester.cpp:283 ui/keyrequester.cpp:306
+#: ui/keyselectiondialog.cpp:630 ui/keyselectiondialog.cpp:662
+#, kde-format
+msgid "Key Listing Failed"
+msgstr ""
+
+#: ui/keyrequester.cpp:281
+#, kde-format
+msgid ""
+"The OpenPGP backend does not support listing keys. Check your installation."
+msgstr ""
+
+#: ui/keyrequester.cpp:304
+#, kde-format
+msgid ""
+"The S/MIME backend does not support listing keys. Check your installation."
+msgstr ""
+
+#: ui/keyrequester.cpp:426
+#, kde-format
+msgid "OpenPGP Key Selection"
+msgstr "Roghnú Eochrach OpenPGP"
+
+#: ui/keyrequester.cpp:427
+#, kde-format
+msgid "Please select an OpenPGP key to use."
+msgstr "Roghnaigh eochair OpenPGP le do thoil."
+
+#: ui/keyrequester.cpp:429
+#, kde-format
+msgid "S/MIME Key Selection"
+msgstr "Roghnú Eochrach S/MIME"
+
+#: ui/keyrequester.cpp:430
+#, kde-format
+msgid "Please select an S/MIME key to use."
+msgstr "Roghnaigh eochair S/MIME le do thoil."
+
+#: ui/keyrequester.cpp:432
+#, kde-format
+msgid "Key Selection"
+msgstr "Roghnú Eochrach"
+
+#: ui/keyrequester.cpp:433
+#, kde-format
+msgid "Please select an (OpenPGP or S/MIME) key to use."
+msgstr "Roghnaigh eochair (OpenPGP nó S/MIME) le do thoil."
+
+#: ui/keyselectioncombo.cpp:195
+#, kde-format
+msgctxt "Name <email> (validity, type, created: date)"
+msgid "%1 (%2, %3, created: %4)"
+msgstr ""
+
+#: ui/keyselectioncombo.cpp:196
+#, kde-format
+msgctxt "Name <email>"
+msgid "%1 <%2>"
+msgstr ""
+
+#: ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "OpenPGP"
+msgstr "OpenPGP"
+
+#: ui/keyselectioncombo.cpp:347
+#, fuzzy, kde-format
+#| msgid "Fetching keys..."
+msgid "Loading keys ..."
+msgstr "Eochracha á bhfáil..."
+
+#: ui/keyselectiondialog.cpp:98
+#, kde-format
+msgid "The key is not valid."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:106
+#, kde-format
+msgid "The key is expired."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:110
+#, kde-format
+msgid "The key is revoked."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:114
+#, kde-format
+msgid "The key is disabled."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:122
+#, fuzzy, kde-format
+#| msgid "The following keys will be used for encryption:"
+msgid "The key is not designated for encryption."
+msgstr "Úsáidfear na heochracha seo a leanas le haghaidh criptithe:"
+
+#: ui/keyselectiondialog.cpp:128
+#, kde-format
+msgid "The key is not designated for signing."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:134
+#, kde-format
+msgid "The key is not designated for certifying."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:140
+#, kde-format
+msgid "The key is not designated for authentication."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:148
+#, kde-format
+msgid "The key is not secret."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:163
+#, kde-format
+msgid "The key is not trusted enough."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:169
+#, kde-format
+msgid "The key can be used."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:230
+#, kde-format
+msgid "Key ID"
+msgstr "Aitheantas na hEochrach"
+
+#: ui/keyselectiondialog.cpp:231
+#, kde-format
+msgid "User ID"
+msgstr "Aitheantas an Úsáideora"
+
+#: ui/keyselectiondialog.cpp:279
+#, kde-format
+msgid "never"
+msgstr "riamh"
+
+#: ui/keyselectiondialog.cpp:289 ui/keyselectiondialog.cpp:291
+#: ui/keyselectiondialog.cpp:300 ui/keyselectiondialog.cpp:302
+#, kde-format
+msgid "unknown"
+msgstr "anaithnid"
+
+#: ui/keyselectiondialog.cpp:289
+#, kde-format
+msgid "OpenPGP key for <b>%1</b>"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:291
+#, kde-format
+msgid "S/MIME key for <b>%1</b>"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:298
+#, kde-format
+msgctxt "Key creation date"
+msgid "Created"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:299
+#, kde-format
+msgctxt "Key Expiration date"
+msgid "Expiry"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:300
+#, kde-format
+msgctxt "Key fingerprint"
+msgid "Fingerprint"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:302
+#, kde-format
+msgctxt "Key issuer"
+msgid "Issuer"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:304
+#, kde-format
+msgctxt "Key status"
+msgid "Status"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:456
+#, kde-format
+msgid "Search for &External Certificates"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:470
+#, kde-format
+msgid "&Search for:"
+msgstr "&Déan cuardach ar:"
+
+#: ui/keyselectiondialog.cpp:494
+#, kde-format
+msgid "&Remember choice"
+msgstr "&Meabhraigh mo rogha"
+
+#: ui/keyselectiondialog.cpp:497
+#, kde-format
+msgid ""
+"<qt><p>If you check this box your choice will be stored and you will not be "
+"asked again.</p></qt>"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:509
+#, kde-format
+msgid "&Reread Keys"
+msgstr "Léigh Eochracha A&rís"
+
+#: ui/keyselectiondialog.cpp:510
+#, kde-format
+msgid "&Start Certificate Manager"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:628
+#, kde-format
+msgid "No backends found for listing keys. Check your installation."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:644
+#, kde-format
+msgid "Could not start certificate manager; please check your installation."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:646
+#, kde-format
+msgid "Certificate Manager Error"
+msgstr "Earráid le Bainisteoir na dTeastas"
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Checking selected keys..."
+msgstr "Eochracha roghnaithe á seiceáil..."
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Fetching keys..."
+msgstr "Eochracha á bhfáil..."
+
+#: ui/keyselectiondialog.cpp:731
+#, kde-format
+msgid ""
+"<qt>One backend returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgid_plural ""
+"<qt>%1 backends returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+msgstr[3] ""
+msgstr[4] ""
+
+#: ui/keyselectiondialog.cpp:736
+#, kde-format
+msgid "Key List Result"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:856
+#, kde-format
+msgid "Recheck Key"
+msgstr "Seiceáil an eochair arís"
+
+#: ui/messagebox.cpp:71
+#, kde-format
+msgid "Your system does not have support for GnuPG Audit Logs"
+msgstr ""
+
+#: ui/messagebox.cpp:72
+#, kde-format
+msgid "System Error"
+msgstr ""
+
+#: ui/messagebox.cpp:79
+#, kde-format
+msgid ""
+"An error occurred while trying to retrieve the GnuPG Audit Log:\n"
+"%1"
+msgstr ""
+
+#: ui/messagebox.cpp:81
+#, kde-format
+msgid "GnuPG Audit Log Error"
+msgstr ""
+
+#: ui/messagebox.cpp:88
+#, kde-format
+msgid "No GnuPG Audit Log available for this operation."
+msgstr ""
+
+#: ui/messagebox.cpp:89
+#, kde-format
+msgid "No GnuPG Audit Log"
+msgstr ""
+
+#: ui/messagebox.cpp:109 ui/messagebox.cpp:115
+#, kde-format
+msgid "GnuPG Audit Log Viewer"
+msgstr ""
+
+#: ui/messagebox.cpp:121
+#, kde-format
+msgid "Signing failed: %1"
+msgstr "Theip ar shíniú: %1"
+
+#: ui/messagebox.cpp:122
+#, kde-format
+msgid "Signing successful"
+msgstr ""
+
+#: ui/messagebox.cpp:133
+#, kde-format
+msgid "Encryption failed: %1"
+msgstr "Theip ar chriptiú: %1"
+
+#: ui/messagebox.cpp:134
+#, kde-format
+msgid "Encryption successful"
+msgstr "D'éirigh leis an gcriptiú"
+
+#: ui/messagebox.cpp:155
+#, kde-format
+msgid "Signing Result"
+msgstr ""
+
+#: ui/messagebox.cpp:167
+#, kde-format
+msgid "Signing Error"
+msgstr ""
+
+#: ui/messagebox.cpp:179 ui/messagebox.cpp:203
+#, kde-format
+msgid "Encryption Result"
+msgstr "Toradh Criptithe"
+
+#: ui/messagebox.cpp:191 ui/messagebox.cpp:215
+#, kde-format
+msgid "Encryption Error"
+msgstr "Earráid Chriptithe"
+
+#: ui/messagebox.cpp:263
+#, kde-format
+msgid "&Show Audit Log"
+msgstr ""
+
+#: ui/progressdialog.cpp:91
+#, kde-format
+msgid "%1: %2"
+msgstr "%1: %2"
+
+#~ msgctxt "New X.509 Directory Server"
+#~ msgid "X.509"
+#~ msgstr "X.509"
+
+#~ msgctxt "New OpenPGP Directory Server"
+#~ msgid "OpenPGP"
+#~ msgstr "OpenPGP"
+
+#~ msgid "Scheme"
+#~ msgstr "Scéim"
+
+#~ msgid "X.509"
+#~ msgstr "X.509"
+
+#~ msgid "General"
+#~ msgstr "Ginearálta"
+
+#~ msgid "Chiasmus"
+#~ msgstr "Chiasmus"
+
+#~ msgid "Unsupported protocol \"%1\""
+#~ msgstr "Prótacal \"%1\" gan tacaíocht"
+
+#~ msgid "Output from chiasmus"
+#~ msgstr "Aschur ó chiasmus"
+
+#~ msgid "Decryption failed: %1"
+#~ msgstr "Theip ar dhíchriptiú: %1"
+
+#~ msgid ""
+#~ "The following was received on stderr:\n"
+#~ "%1"
+#~ msgstr ""
+#~ "Fuarthas é seo ar an ngnáth-aschur earráide:\n"
+#~ "%1"
+
+#~ msgid "Failed to load %1: %2"
+#~ msgstr "Theip ar luchtú %1: %2"
+
+#~ msgid "Scanning directory %1..."
+#~ msgstr "Comhadlann %1 á scanadh..."
+
+#~ msgid "GpgME"
+#~ msgstr "GpgME"
+
+#~ msgid "Engine %1 is not installed properly."
+#~ msgstr "Níor suiteáladh inneall %1 i gceart."
+
+#~ msgid "<qt>Failed to execute gpgconf:<p>%1</p></qt>"
+#~ msgstr "<qt>Theip ar rith gpgconf:<p>%1</p></qt>"
+
+#~ msgid "Generating DSA key..."
+#~ msgstr "Eochair DSA á cruthú..."
+
+#~ msgid "Generating ElGamal key..."
+#~ msgstr "Eochair ElGamal á cruthú..."
+
+#~ msgid "Please wait..."
+#~ msgstr "Fan go fóill, le do thoil..."
+
+#~ msgid "While scanning for %1 support in backend %2:"
+#~ msgstr "Agus tacaíocht %1 á lorg in inneall %2:"
+
+#~ msgctxt "progress info: \"%1 of %2\""
+#~ msgid "%1/%2"
+#~ msgstr "%1/%2"
+
+#~ msgid ""
+#~ "OpenPGP key for %1\n"
+#~ "Created: %2\n"
+#~ "Expiry: %3\n"
+#~ "Fingerprint: %4"
+#~ msgstr ""
+#~ "Eochair OpenPGP le haghaidh %1\n"
+#~ "Cruthaithe: %2\n"
+#~ "Dáta Éaga: %3\n"
+#~ "Méarlorg: %4"
+
+#~ msgid ""
+#~ "S/MIME key for %1\n"
+#~ "Created: %2\n"
+#~ "Expiry: %3\n"
+#~ "Fingerprint: %4\n"
+#~ "Issuer: %5"
+#~ msgstr ""
+#~ "Eochair S/MIME le haghaidh %1\n"
+#~ "Cruthaithe: %2\n"
+#~ "Dáta Éaga: %3\n"
+#~ "Méarlorg: %4\n"
+#~ "Eisitheoir: %5"
+
+#~ msgid "Add or Change Directory Service"
+#~ msgstr "Cuir Seirbhís Eolaire Leis, nó Athraigh"
+
+#~ msgid "&Server name:"
+#~ msgstr "Ainm an fhrea&stalaí:"
+
+#~ msgid "389"
+#~ msgstr "389"
+
+#~ msgid "&User name (optional):"
+#~ msgstr "&Ainm an úsáideora (roghnach):"
+
+#~ msgid "Pass&word (optional):"
+#~ msgstr "&Focal faire (roghnach):"
+
+#~ msgid "&OK"
+#~ msgstr "&OK"
+
+#~ msgid "&Cancel"
+#~ msgstr "&Cealaigh"
+
+#~ msgid "&Base DN:"
+#~ msgstr "DN &Bunaidh:"
+
+#~ msgid "&Port:"
+#~ msgstr "&Port:"
+
+#~ msgctxt "NAME OF TRANSLATORS"
+#~ msgid "Your names"
+#~ msgstr "Kevin Scannell"
+
+#~ msgctxt "EMAIL OF TRANSLATORS"
+#~ msgid "Your emails"
+#~ msgstr "kscanne@gmail.com"
+
+#~ msgid "failed"
+#~ msgstr "teipthe"
+
+#~ msgctxt ""
+#~ "Items in Kleo::BackendConfigWidget listview (1: protocol; 2: "
+#~ "implementation name)"
+#~ msgid "%1 (%2)"
+#~ msgstr "%1 (%2)"
+
+#~ msgid "Available Backends"
+#~ msgstr "Innill Le Fáil"
+
+#~ msgid "Confi&gure..."
+#~ msgstr "Cumrai&gh..."
+
+#~ msgid "Rescan"
+#~ msgstr "Athscan"
+
+#~ msgctxt "@title:window Results of the scanning"
+#~ msgid "Scan Results"
+#~ msgstr "Torthaí an Scanta"
+
+#~ msgid "(Unknown Protocol)"
+#~ msgstr "(Prótacal Anaithnid)"
+
+#~ msgid "Error while initializing plugin \"%1\""
+#~ msgstr "Earráid agus breiseán \"%1\" á thúsú"
+
+#~ msgid "Enter passphrase:"
+#~ msgstr "Iontráil frása faire:"
+
+#~ msgid "Passphrase Dialog"
+#~ msgstr "Dialóg Fhrása Faire"
+
+#~ msgid "Configure"
+#~ msgstr "Cumraigh"
+
+#~ msgid "Select Directory Services to Use Here"
+#~ msgstr "Roghnaigh Seirbhísí Eolaire le hÚsáid Anseo"
+
+#~ msgid "Port"
+#~ msgstr "Port"
+
+#~ msgid "&Add Service..."
+#~ msgstr "&Cuir Seirbhís Leis..."
+
+#~ msgid "&Remove Service"
+#~ msgstr "&Bain an tSeirbhís"
+
+#~ msgid "<placeholder>unnamed</placeholder>"
+#~ msgstr "<placeholder>gan ainm</placeholder>"
--- /dev/null
+# translation of libkleopatra.po to galician
+# Copyright (C) YEAR This_file_is_part_of_KDE
+# This file is distributed under the same license as the PACKAGE package.
+#
+# mvillarino <mvillarino@users.sourceforge.net>, 2007, 2009.
+# Xosé <xosecalvo@gmail.com>, 2008.
+# Xosé <xosecalvo@gmail.com>, 2009, 2010, 2012.
+# Marce Villarino <mvillarino@kde-espana.org>, 2013, 2014.
+# Adrián Chaves Fernández <adriyetichaves@gmail.com>, 2015, 2017.
+# Adrián Chaves (Gallaecio) <adrian@chaves.io>, 2017.
+msgid ""
+msgstr ""
+"Project-Id-Version: libkleopatra\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2017-07-12 06:56+0200\n"
+"PO-Revision-Date: 2017-11-05 14:45+0100\n"
+"Last-Translator: Adrián Chaves (Gallaecio) <adrian@chaves.io>\n"
+"Language-Team: Galician <kde-i18n-doc@kde.org>\n"
+"Language: gl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Lokalize 2.0\n"
+"X-Poedit-Language: Galician\n"
+"X-Environment: kde\n"
+"X-Accelerator-Marker: &\n"
+"X-Text-Markup: kde4\n"
+
+#: kleo/checksumdefinition.cpp:107
+#, kde-format
+msgid "Error in checksum definition %1: %2"
+msgstr "Produciuse un erro na definición da suma de verificación %1: %2"
+
+#: kleo/checksumdefinition.cpp:157
+#, kde-format
+msgid "Cannot use both %f and | in '%1'"
+msgstr "Non é posíbel empregar %f e | xuntos en «%1»"
+
+#: kleo/checksumdefinition.cpp:167
+#, kde-format
+msgid "Quoting error in '%1' entry"
+msgstr "Erro de citado na entrada «%1»"
+
+#: kleo/checksumdefinition.cpp:170
+#, kde-format
+msgid "'%1' too complex (would need shell)"
+msgstr "«%1» é complexa de máis (precisaría dunha consola)"
+
+#: kleo/checksumdefinition.cpp:174
+#, kde-format
+msgid "'%1' entry is empty/missing"
+msgstr "A entrada «%1» falta ou está baleira"
+
+#: kleo/checksumdefinition.cpp:183
+#, kde-format
+msgid "'%1' empty or not found"
+msgstr "«%1» está baleira ou non se atopou"
+
+#: kleo/checksumdefinition.cpp:222
+#, kde-format
+msgid "'id' entry is empty/missing"
+msgstr "Falta, ou está baleira, a entrada \"id\""
+
+#: kleo/checksumdefinition.cpp:225
+#, kde-format
+msgid "'output-file' entry is empty/missing"
+msgstr "Falta, ou está baleira, a entrada \"output-file\""
+
+#: kleo/checksumdefinition.cpp:228
+#, kde-format
+msgid "'file-patterns' entry is empty/missing"
+msgstr "Falta, ou está baleira, a entrada \"padróns de ficheiro\""
+
+#: kleo/checksumdefinition.cpp:395
+#, kde-format
+msgid "Caught unknown exception in group %1"
+msgstr "Recolleuse unha excepción descoñecida no grupo %1"
+
+#: kleo/dn.cpp:507
+#, kde-format
+msgid "Common name"
+msgstr "Nome normal"
+
+#: kleo/dn.cpp:508
+#, kde-format
+msgid "Surname"
+msgstr "Apelido"
+
+#: kleo/dn.cpp:509
+#, kde-format
+msgid "Given name"
+msgstr "Nome de pía"
+
+#: kleo/dn.cpp:510
+#, kde-format
+msgid "Location"
+msgstr "Lugar"
+
+#: kleo/dn.cpp:511
+#, kde-format
+msgid "Title"
+msgstr "Título"
+
+#: kleo/dn.cpp:512
+#, kde-format
+msgid "Organizational unit"
+msgstr "Unidade da organización"
+
+#: kleo/dn.cpp:513
+#, kde-format
+msgid "Organization"
+msgstr "Organización"
+
+#: kleo/dn.cpp:514
+#, kde-format
+msgid "Postal code"
+msgstr "Código postal"
+
+#: kleo/dn.cpp:515
+#, kde-format
+msgid "Country code"
+msgstr "Código do país"
+
+#: kleo/dn.cpp:516
+#, kde-format
+msgid "State or province"
+msgstr "Estado ou provincia"
+
+#: kleo/dn.cpp:517
+#, kde-format
+msgid "Domain component"
+msgstr "Compoñente de dominio"
+
+#: kleo/dn.cpp:518
+#, kde-format
+msgid "Business category"
+msgstr "Categoría de negocios"
+
+#: kleo/dn.cpp:519
+#, kde-format
+msgid "Email address"
+msgstr "Enderezo de correo electrónico"
+
+#: kleo/dn.cpp:520
+#, kde-format
+msgid "Mail address"
+msgstr "Enderezo de correo"
+
+#: kleo/dn.cpp:521
+#, kde-format
+msgid "Mobile phone number"
+msgstr "Número de teléfono móbil"
+
+#: kleo/dn.cpp:522
+#, kde-format
+msgid "Telephone number"
+msgstr "Número de teléfono"
+
+#: kleo/dn.cpp:523
+#, kde-format
+msgid "Fax number"
+msgstr "Número de fax"
+
+#: kleo/dn.cpp:524
+#, kde-format
+msgid "Street address"
+msgstr "Enderezo"
+
+#: kleo/dn.cpp:525
+#, kde-format
+msgid "Unique ID"
+msgstr "Identificador único"
+
+#: kleo/enum.cpp:57
+#, kde-format
+msgid "Inline OpenPGP (deprecated)"
+msgstr "OpenPGP interno (obsoleto)"
+
+#: kleo/enum.cpp:62
+#, kde-format
+msgid "OpenPGP/MIME"
+msgstr "OpenPGP/MIME"
+
+#: kleo/enum.cpp:67 ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "S/MIME"
+msgstr "S/MIME"
+
+#: kleo/enum.cpp:72
+#, kde-format
+msgid "S/MIME Opaque"
+msgstr "S/MIME opaco"
+
+#: kleo/enum.cpp:104
+#, kde-format
+msgid "Any"
+msgstr "Calquera"
+
+#: kleo/enum.cpp:177
+#, kde-format
+msgid "Never Encrypt"
+msgstr "Non cifrar nunca"
+
+#: kleo/enum.cpp:179
+#, kde-format
+msgid "Always Encrypt"
+msgstr "Cifrar sempre"
+
+#: kleo/enum.cpp:181
+#, kde-format
+msgid "Always Encrypt If Possible"
+msgstr "Cifrar sempre que for posíbel"
+
+#: kleo/enum.cpp:183 kleo/enum.cpp:240
+#, kde-format
+msgid "Ask"
+msgstr "Preguntar"
+
+#: kleo/enum.cpp:185 kleo/enum.cpp:242
+#, kde-format
+msgid "Ask Whenever Possible"
+msgstr "Preguntar cando for posíbel"
+
+#: kleo/enum.cpp:187
+#, kde-kuit-format
+msgctxt "no specific preference"
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>ningún</placeholder>"
+
+#: kleo/enum.cpp:234
+#, kde-format
+msgid "Never Sign"
+msgstr "Non asinar nunca"
+
+#: kleo/enum.cpp:236
+#, kde-format
+msgid "Always Sign"
+msgstr "Asinar sempre"
+
+#: kleo/enum.cpp:238
+#, kde-format
+msgid "Always Sign If Possible"
+msgstr "Asinar sempre que for posíbel"
+
+#: kleo/enum.cpp:244
+#, kde-format
+msgctxt "no specific preference"
+msgid "<none>"
+msgstr "<ningunha>"
+
+#: kleo/keyfiltermanager.cpp:85
+#, kde-format
+msgid "All Certificates"
+msgstr "Todos os certificados"
+
+#: kleo/keyfiltermanager.cpp:100
+#, kde-format
+msgid "My Certificates"
+msgstr "Os meus certificados"
+
+#: kleo/keyfiltermanager.cpp:118
+#, kde-format
+msgid "Trusted Certificates"
+msgstr "Certificados de confianza"
+
+#: kleo/keyfiltermanager.cpp:135
+#, fuzzy, kde-format
+#| msgid "Trusted Certificates"
+msgid "Fully Trusted Certificates"
+msgstr "Certificados de confianza"
+
+#: kleo/keyfiltermanager.cpp:152
+#, kde-format
+msgid "Other Certificates"
+msgstr "Outros certificados"
+
+#: kleo/keyfiltermanager.cpp:166
+#, fuzzy, kde-format
+#| msgid "All Certificates"
+msgid "VS-compliant Certificates"
+msgstr "Todos os certificados"
+
+#: kleo/keyfiltermanager.cpp:184
+#, fuzzy, kde-format
+#| msgid "Trusted Certificates"
+msgid "Not validated Certificates"
+msgstr "Certificados de confianza"
+
+#: ui/auditlogviewer.cpp:49
+#, kde-format
+msgid "View GnuPG Audit Log"
+msgstr "Ver o rexistro da auditoría de GnuPG"
+
+#: ui/auditlogviewer.cpp:53
+#, kde-format
+msgid "&Copy to Clipboard"
+msgstr "&Copiar ao portapapeis"
+
+#: ui/auditlogviewer.cpp:59
+#, kde-format
+msgid "&Save to Disk..."
+msgstr "Gardar no di&sco…"
+
+#: ui/auditlogviewer.cpp:95
+#, kde-format
+msgid "Choose File to Save GnuPG Audit Log to"
+msgstr "Escoller o ficheiro no que gardar o ficheiro de auditoría de GnuPG"
+
+#: ui/auditlogviewer.cpp:118
+#, kde-format
+msgid "Could not save to file \"%1\": %2"
+msgstr "Non foi posíbel gardar no ficheiro «%1»: %2"
+
+#: ui/auditlogviewer.cpp:120
+#, kde-format
+msgid "File Save Error"
+msgstr "Aconteceu un erro ao gardar o ficheiro"
+
+#: ui/cryptoconfigdialog.cpp:44
+#, kde-format
+msgid "Configure GnuPG Backend"
+msgstr "Configurar a infraestrutura de GnuPG"
+
+#: ui/cryptoconfigdialog.cpp:55
+#, kde-format
+msgid "&Reset"
+msgstr "&Restaurar"
+
+#: ui/cryptoconfigmodule.cpp:160
+#, kde-format
+msgid "GpgConf Error"
+msgstr "Erro de GpgConf"
+
+#: ui/cryptoconfigmodule.cpp:216
+#, kde-format
+msgid ""
+"The gpgconf tool used to provide the information for this dialog does not "
+"seem to be installed properly. It did not return any components. Try running "
+"\"%1\" on the command line for more information."
+msgstr ""
+"Parece que a ferramenta gpgconf empregada para fornecer a información deste "
+"diálogo non está instalada axeitadamente. Non devolveu nengún compoñente. "
+"Intente executar «%1» na liña de ordes para máis información."
+
+#: ui/cryptoconfigmodule.cpp:496
+#, kde-format
+msgctxt ""
+"Translate this to 'yes' or 'no' (use the English words!) depending on "
+"whether your language uses Sentence style capitalisation in GUI labels (yes) "
+"or not (no). Context: We get some backend strings in that have the wrong "
+"capitalizaion (in English, at least) so we need to force the first character "
+"to upper-case. It is this behaviour you can control for your language with "
+"this translation."
+msgid "yes"
+msgstr "yes"
+
+#: ui/cryptoconfigmodule.cpp:546
+#, kde-format
+msgid "0 - None"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:547
+#, kde-format
+msgid "1 - Basic"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:548
+#, kde-format
+msgid "2 - Verbose"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:549
+#, kde-format
+msgid "3 - More Verbose"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:550
+#, kde-format
+msgid "4 - All"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:559
+#, kde-format
+msgid "Set the debugging level to"
+msgstr "Configurar o nivel de depuración como"
+
+#: ui/cryptoconfigmodule.cpp:787
+#, kde-format
+msgid "Show..."
+msgstr "Mostrar…"
+
+#: ui/cryptoconfigmodule.cpp:787 ui/cryptoconfigmodule.cpp:876
+#, kde-format
+msgid "Edit..."
+msgstr "Editar…"
+
+#: ui/cryptoconfigmodule.cpp:841
+#, kde-format
+msgid "Configure LDAP Servers"
+msgstr "Configurar os servidores de LDAP"
+
+#: ui/cryptoconfigmodule.cpp:862
+#, fuzzy, kde-format
+#| msgid "No server configured yet"
+msgid "None configured"
+msgstr "Aínda non se configurou ningún servidor"
+
+#: ui/cryptoconfigmodule.cpp:864
+#, kde-format
+msgid "1 server configured"
+msgid_plural "%1 servers configured"
+msgstr[0] "configurouse un servidor"
+msgstr[1] "Configuráronse %1 servidores"
+
+#: ui/cryptoconfigmodule.cpp:879
+#, kde-format
+msgid "Use keyserver at"
+msgstr "Usar o servidor de chaves en"
+
+#: ui/cryptoconfigmodule.cpp:968
+#, kde-format
+msgid "Configure Keyservers"
+msgstr "Configurar os servidores de chaves"
+
+#: ui/directoryserviceswidget.cpp:67
+#, kde-format
+msgctxt "default server name, keep it a valid domain name, ie. no spaces"
+msgid "server"
+msgstr "servidor"
+
+#: ui/directoryserviceswidget.cpp:95
+#, kde-format
+msgid "hkp"
+msgstr "hkp"
+
+#: ui/directoryserviceswidget.cpp:96
+#, kde-format
+msgid "http"
+msgstr "http"
+
+#: ui/directoryserviceswidget.cpp:97
+#, kde-format
+msgid "https"
+msgstr "https"
+
+#: ui/directoryserviceswidget.cpp:98
+#, kde-format
+msgid "ftp"
+msgstr "ftp"
+
+#: ui/directoryserviceswidget.cpp:99
+#, kde-format
+msgid "ftps"
+msgstr "ftps"
+
+#: ui/directoryserviceswidget.cpp:100
+#, kde-format
+msgid "ldap"
+msgstr "ldap"
+
+#: ui/directoryserviceswidget.cpp:101
+#, kde-format
+msgid "ldaps"
+msgstr "ldaps"
+
+#: ui/directoryserviceswidget.cpp:588
+#, kde-format
+msgid "Server Name"
+msgstr "Nome do servidor"
+
+#: ui/directoryserviceswidget.cpp:589
+#, kde-format
+msgid "Server Port"
+msgstr "Porto do servidor"
+
+#: ui/directoryserviceswidget.cpp:590
+#, kde-format
+msgid "Base DN"
+msgstr "DN base"
+
+#: ui/directoryserviceswidget.cpp:591
+#, kde-format
+msgid "User Name"
+msgstr "Nome de usuario"
+
+#: ui/directoryserviceswidget.cpp:592
+#, kde-format
+msgid "Password"
+msgstr "Contrasinal"
+
+#: ui/directoryserviceswidget.cpp:614
+#, kde-format
+msgid "(read-only)"
+msgstr "(só lectura)"
+
+#: ui/directoryserviceswidget.cpp:616
+#, kde-format
+msgctxt "amended tooltip; %1: original tooltip"
+msgid "%1 (read-only)"
+msgstr "%1 (só lectura)"
+
+#: ui/directoryserviceswidget.cpp:739
+#, kde-format
+msgid ""
+"Enter the name or IP address of the server hosting the directory service."
+msgstr ""
+"Introduza o nome ou enderezo de IP do servidor que alberga o servizo de "
+"directorio."
+
+#: ui/directoryserviceswidget.cpp:741
+#, kde-format
+msgid ""
+"<b>(Optional, the default is fine in most cases)</b> Pick the port number "
+"the directory service is listening on."
+msgstr ""
+"<b>(Opcional, o predefinido vai ben na maioría dos casos)</b> Escolla o "
+"número do porto do polo que escoita o servizo de directorio."
+
+#: ui/directoryserviceswidget.cpp:744
+#, kde-format
+msgid ""
+"<b>(Only for LDAP)</b> Enter the base DN for this LDAP server to limit "
+"searches to only that subtree of the directory."
+msgstr ""
+"<b>(Só para LDAP)</b> Introduza o DN base deste servidor de LDAP para que "
+"limite as buscas só a esa subárbore do directorio."
+
+#: ui/directoryserviceswidget.cpp:747
+#, kde-format
+msgid "<b>(Optional)</b> Enter your user name here, if needed."
+msgstr ""
+"<b>(Opcional)</b> Introduza aquí o seu número de usuario, se o precisa."
+
+#: ui/directoryserviceswidget.cpp:749
+#, kde-format
+msgid ""
+"<b>(Optional, not recommended)</b> Enter your password here, if needed. Note "
+"that the password will be saved in the clear in a config file in your home "
+"directory."
+msgstr ""
+"<b>(Opcional, non recomendado)</b> Introduza aquí o seu contrasinal, se o "
+"precisa. Teña en conta que o contrasinal se gardará sen cifrar nun ficheiro "
+"de configuración no seu directorio persoal."
+
+#. i18n: ectx: property (windowTitle), widget (QWidget, DirectoryServicesWidget)
+#: ui/directoryserviceswidget.ui:14
+#, kde-format
+msgid "Directory Services Configuration"
+msgstr "Configuración de servizos de directorio"
+
+#. i18n: ectx: property (text), widget (QLabel, pgpKSLabel)
+#: ui/directoryserviceswidget.ui:22
+#, fuzzy, kde-format
+#| msgid "OpenPGP Key Selection"
+msgid "OpenPGP Keyserver:"
+msgstr "Escolla de chave OpenPGP"
+
+#. i18n: ectx: property (title), widget (QGroupBox, x500LA)
+#: ui/directoryserviceswidget.ui:35
+#, fuzzy, kde-format
+#| msgid "Directory services:"
+msgid "X509 Directory services:"
+msgstr "Servizos de directorio:"
+
+#. i18n: ectx: property (whatsThis), widget (QTreeView, treeView)
+#: ui/directoryserviceswidget.ui:43
+#, fuzzy, kde-format
+#| msgid ""
+#| "This is a list of all directory services that are configured for use with "
+#| "X.509 and OpenPGP."
+msgid ""
+"This is a list of all directory services that are configured for use with "
+"X.509."
+msgstr ""
+"Esta é unha lista de todos os servizos de directorio configurados para "
+"empregar conX.509 and OpenPGP."
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:70
+#, kde-format
+msgid "Click to add a service"
+msgstr "Prema para engadir un servizo"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:73
+#, kde-format
+msgid ""
+"Click this button to create a new directory service entry as a clone of the "
+"currently selected one (or with default values, if no other is selected). "
+"You can then configure details in the table on the left hand."
+msgstr ""
+"Prema este botón para crear unha nova entrada de servizo de directorio como "
+"clon do escollido actualmente (ou con valores por omisión, se non escolle "
+"ningún). A continuación poderá configurar os detalles na táboa da esquerda."
+
+#. i18n: ectx: property (text), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:76
+#, kde-format
+msgid "New"
+msgstr "Novo"
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:92
+#, kde-format
+msgid "Click to remove the currently selected service"
+msgstr "Prema para borrar o servizo actualmente escollido"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:95
+#, kde-format
+msgid ""
+"Click this button to remove the currently selected directory service. The "
+"change will only take effect once you acknowledge the main configuration "
+"dialog."
+msgstr ""
+"Prema este botón para eliminar o servizo de directorio agora escollido. A "
+"alteración só será efectiva cando confirme o diálogo de configuración "
+"principal."
+
+#. i18n: ectx: property (text), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:98
+#, kde-format
+msgid "Delete"
+msgstr "Eliminar"
+
+#. i18n: ectx: property (whatsThis), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:128
+#, kde-format
+msgid ""
+"Use this option to switch display of username and password information on or "
+"off in the above table."
+msgstr ""
+"Use esta opción para alternar entre que se mostre ou non a información de "
+"nome de usuario e contrasinal na táboa de enriba."
+
+#. i18n: ectx: property (text), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:131
+#, kde-format
+msgid "Show user and password information"
+msgstr "Mostrar a información sobre o usuario e o contrasinal"
+
+#: ui/dnattributeorderconfigwidget.cpp:73
+#, kde-format
+msgid "Description"
+msgstr "Descrición"
+
+#: ui/dnattributeorderconfigwidget.cpp:91
+#, kde-format
+msgid "Available attributes:"
+msgstr "Atributos dispoñíbeis:"
+
+#: ui/dnattributeorderconfigwidget.cpp:92
+#, kde-format
+msgid "Current attribute order:"
+msgstr "Orde actual dos atributos:"
+
+#: ui/dnattributeorderconfigwidget.cpp:112
+#, kde-format
+msgid "All others"
+msgstr "Todos os demais"
+
+#: ui/dnattributeorderconfigwidget.cpp:129
+#, kde-format
+msgid "Move to top"
+msgstr "Mover ao inicio"
+
+#: ui/dnattributeorderconfigwidget.cpp:130
+#, kde-format
+msgid "Move one up"
+msgstr "Subir"
+
+#: ui/dnattributeorderconfigwidget.cpp:131
+#, kde-format
+msgid "Remove from current attribute order"
+msgstr "Borrar da orde actual de atributos"
+
+#: ui/dnattributeorderconfigwidget.cpp:132
+#, kde-format
+msgid "Add to current attribute order"
+msgstr "Engadir á orde actual de atributos"
+
+#: ui/dnattributeorderconfigwidget.cpp:133
+#, kde-format
+msgid "Move one down"
+msgstr "Baixar"
+
+#: ui/dnattributeorderconfigwidget.cpp:134
+#, kde-format
+msgid "Move to bottom"
+msgstr "Mover á fin"
+
+#: ui/keyapprovaldialog.cpp:87
+#, kde-kuit-format
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>ningún</placeholder>"
+
+#: ui/keyapprovaldialog.cpp:88
+#, kde-format
+msgid "Never Encrypt with This Key"
+msgstr "Non cifrar nunca con esta chave"
+
+#: ui/keyapprovaldialog.cpp:89
+#, kde-format
+msgid "Always Encrypt with This Key"
+msgstr "Cifrar sempre con esta chave"
+
+#: ui/keyapprovaldialog.cpp:90
+#, kde-format
+msgid "Encrypt Whenever Encryption is Possible"
+msgstr "Cifrar cando o cifrado for posíbel"
+
+#: ui/keyapprovaldialog.cpp:91
+#, kde-format
+msgid "Always Ask"
+msgstr "Preguntar sempre"
+
+#: ui/keyapprovaldialog.cpp:92
+#, kde-format
+msgid "Ask Whenever Encryption is Possible"
+msgstr "Preguntar cando o cifrado for posíbel"
+
+#: ui/keyapprovaldialog.cpp:113
+#, kde-format
+msgid "Encryption Key Approval"
+msgstr "Aprobación da chave de cifrado"
+
+#: ui/keyapprovaldialog.cpp:129
+#, kde-format
+msgid "The following keys will be used for encryption:"
+msgstr "Empregaranse as seguintes chaves para o cifrado:"
+
+#: ui/keyapprovaldialog.cpp:145
+#, kde-format
+msgid "Your keys:"
+msgstr "As súas chaves:"
+
+#: ui/keyapprovaldialog.cpp:157
+#, kde-format
+msgid "Recipient:"
+msgstr "Destinatario:"
+
+#: ui/keyapprovaldialog.cpp:162
+#, kde-format
+msgid "Encryption keys:"
+msgstr "Chaves de cifrado:"
+
+#: ui/keyapprovaldialog.cpp:169
+#, kde-format
+msgid "Encryption preference:"
+msgstr "Preferencia de cifrado:"
+
+#: ui/keyrequester.cpp:118
+#, kde-format
+msgid "Clear"
+msgstr "Limpar"
+
+#: ui/keyrequester.cpp:121
+#, kde-format
+msgid "Change..."
+msgstr "Cambiar…"
+
+#: ui/keyrequester.cpp:232 ui/keyselectiondialog.cpp:256
+#, kde-kuit-format
+msgid "<placeholder>unknown</placeholder>"
+msgstr "<placeholder>descoñecido</placeholder>"
+
+#: ui/keyrequester.cpp:246 ui/keyselectiondialog.cpp:657
+#, kde-format
+msgid ""
+"<qt><p>An error occurred while fetching the keys from the backend:</p><p><b>"
+"%1</b></p></qt>"
+msgstr ""
+"<qt><p>Produciuse un erro ao obter as chaves da infraestrutura:</p><p><b>%1</"
+"b></p></qt>"
+
+#: ui/keyrequester.cpp:251 ui/keyrequester.cpp:283 ui/keyrequester.cpp:306
+#: ui/keyselectiondialog.cpp:630 ui/keyselectiondialog.cpp:662
+#, kde-format
+msgid "Key Listing Failed"
+msgstr "Fallou o listar as chaves"
+
+#: ui/keyrequester.cpp:281
+#, kde-format
+msgid ""
+"The OpenPGP backend does not support listing keys. Check your installation."
+msgstr ""
+"A infraestrutura de OpenPGP non admite listar as chaves. Comprobe a "
+"instalación."
+
+#: ui/keyrequester.cpp:304
+#, kde-format
+msgid ""
+"The S/MIME backend does not support listing keys. Check your installation."
+msgstr ""
+"A infraestrutura de S/MIME non admite listar as chaves. Comprobe a "
+"instalación."
+
+#: ui/keyrequester.cpp:426
+#, kde-format
+msgid "OpenPGP Key Selection"
+msgstr "Escolla de chave OpenPGP"
+
+#: ui/keyrequester.cpp:427
+#, kde-format
+msgid "Please select an OpenPGP key to use."
+msgstr "Por favor, escolla unha chave OpenPGP para empregala."
+
+#: ui/keyrequester.cpp:429
+#, kde-format
+msgid "S/MIME Key Selection"
+msgstr "Escolla de chave S/MIME"
+
+#: ui/keyrequester.cpp:430
+#, kde-format
+msgid "Please select an S/MIME key to use."
+msgstr "Por favor, escolla unha chave S/MIME para empregala."
+
+#: ui/keyrequester.cpp:432
+#, kde-format
+msgid "Key Selection"
+msgstr "Escolla de chave"
+
+#: ui/keyrequester.cpp:433
+#, kde-format
+msgid "Please select an (OpenPGP or S/MIME) key to use."
+msgstr "Por favor, escolla unha chave (OpenPGP ou S/MIME) para empregala."
+
+#: ui/keyselectioncombo.cpp:195
+#, kde-format
+msgctxt "Name <email> (validity, type, created: date)"
+msgid "%1 (%2, %3, created: %4)"
+msgstr ""
+
+#: ui/keyselectioncombo.cpp:196
+#, kde-format
+msgctxt "Name <email>"
+msgid "%1 <%2>"
+msgstr ""
+
+#: ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "OpenPGP"
+msgstr "OpenPGP"
+
+#: ui/keyselectioncombo.cpp:347
+#, fuzzy, kde-format
+#| msgid "Fetching keys..."
+msgid "Loading keys ..."
+msgstr "Estanse a obter as chaves…"
+
+#: ui/keyselectiondialog.cpp:98
+#, kde-format
+msgid "The key is not valid."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:106
+#, kde-format
+msgid "The key is expired."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:110
+#, kde-format
+msgid "The key is revoked."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:114
+#, kde-format
+msgid "The key is disabled."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:122
+#, fuzzy, kde-format
+#| msgid "The following keys will be used for encryption:"
+msgid "The key is not designated for encryption."
+msgstr "Empregaranse as seguintes chaves para o cifrado:"
+
+#: ui/keyselectiondialog.cpp:128
+#, kde-format
+msgid "The key is not designated for signing."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:134
+#, kde-format
+msgid "The key is not designated for certifying."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:140
+#, kde-format
+msgid "The key is not designated for authentication."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:148
+#, kde-format
+msgid "The key is not secret."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:163
+#, kde-format
+msgid "The key is not trusted enough."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:169
+#, kde-format
+msgid "The key can be used."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:230
+#, kde-format
+msgid "Key ID"
+msgstr "Identificador da chave"
+
+#: ui/keyselectiondialog.cpp:231
+#, kde-format
+msgid "User ID"
+msgstr "Identificador de usuario"
+
+#: ui/keyselectiondialog.cpp:279
+#, kde-format
+msgid "never"
+msgstr "nunca"
+
+#: ui/keyselectiondialog.cpp:289 ui/keyselectiondialog.cpp:291
+#: ui/keyselectiondialog.cpp:300 ui/keyselectiondialog.cpp:302
+#, kde-format
+msgid "unknown"
+msgstr "descoñecido"
+
+#: ui/keyselectiondialog.cpp:289
+#, kde-format
+msgid "OpenPGP key for <b>%1</b>"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:291
+#, kde-format
+msgid "S/MIME key for <b>%1</b>"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:298
+#, kde-format
+msgctxt "Key creation date"
+msgid "Created"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:299
+#, kde-format
+msgctxt "Key Expiration date"
+msgid "Expiry"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:300
+#, kde-format
+msgctxt "Key fingerprint"
+msgid "Fingerprint"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:302
+#, kde-format
+msgctxt "Key issuer"
+msgid "Issuer"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:304
+#, kde-format
+msgctxt "Key status"
+msgid "Status"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:456
+#, kde-format
+msgid "Search for &External Certificates"
+msgstr "Buscar certificados &externos"
+
+#: ui/keyselectiondialog.cpp:470
+#, kde-format
+msgid "&Search for:"
+msgstr "Bu&scar"
+
+#: ui/keyselectiondialog.cpp:494
+#, kde-format
+msgid "&Remember choice"
+msgstr "Lembra&r a escolla"
+
+#: ui/keyselectiondialog.cpp:497
+#, kde-format
+msgid ""
+"<qt><p>If you check this box your choice will be stored and you will not be "
+"asked again.</p></qt>"
+msgstr ""
+"<qt><p>Se marca esta opción, a súa escolla almacenarase e non se lle volverá "
+"a preguntar de novo.</p></qt>"
+
+#: ui/keyselectiondialog.cpp:509
+#, kde-format
+msgid "&Reread Keys"
+msgstr "Rele&r as chaves"
+
+#: ui/keyselectiondialog.cpp:510
+#, kde-format
+msgid "&Start Certificate Manager"
+msgstr "Iniciar o xe&stor de certificados"
+
+#: ui/keyselectiondialog.cpp:628
+#, kde-format
+msgid "No backends found for listing keys. Check your installation."
+msgstr ""
+"Non se atoparon mecanismos para listar as chaves. Comprobe a instalación."
+
+#: ui/keyselectiondialog.cpp:644
+#, kde-format
+msgid "Could not start certificate manager; please check your installation."
+msgstr ""
+"Non foi posíbel iniciar o xestor de certificados, verifique a instalación."
+
+#: ui/keyselectiondialog.cpp:646
+#, kde-format
+msgid "Certificate Manager Error"
+msgstr "Houbo un erro no xestor de certificados"
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Checking selected keys..."
+msgstr "Estanse a comprobar as chaves escollidas…"
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Fetching keys..."
+msgstr "Estanse a obter as chaves…"
+
+#: ui/keyselectiondialog.cpp:731
+#, kde-format
+msgid ""
+"<qt>One backend returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgid_plural ""
+"<qt>%1 backends returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgstr[0] ""
+"<qt>Unha infraestrutura devolveu unha saída interrompida.<p>Non se mostran "
+"todas as chaves dispoñíbeis</p></qt>"
+msgstr[1] ""
+"<qt>%1 infraestruturas devolveron unha saída interrompida.<p>Non se mostran "
+"todas as chaves dispoñíbeis</p></qt>"
+
+#: ui/keyselectiondialog.cpp:736
+#, kde-format
+msgid "Key List Result"
+msgstr "Resultado de listar as chaves"
+
+#: ui/keyselectiondialog.cpp:856
+#, kde-format
+msgid "Recheck Key"
+msgstr "Volver a comprobar a chave"
+
+#: ui/messagebox.cpp:71
+#, kde-format
+msgid "Your system does not have support for GnuPG Audit Logs"
+msgstr "O seu sistema non admite os rexistros de auditoría de GnuPG"
+
+#: ui/messagebox.cpp:72
+#, kde-format
+msgid "System Error"
+msgstr "Erro do sistema"
+
+#: ui/messagebox.cpp:79
+#, kde-format
+msgid ""
+"An error occurred while trying to retrieve the GnuPG Audit Log:\n"
+"%1"
+msgstr ""
+"Produciuse un erro ao intentar recuperar o rexistro de auditoría de GnuPG:\n"
+"%1"
+
+#: ui/messagebox.cpp:81
+#, kde-format
+msgid "GnuPG Audit Log Error"
+msgstr "Erro de rexistros de auditoría de GnuPG"
+
+#: ui/messagebox.cpp:88
+#, kde-format
+msgid "No GnuPG Audit Log available for this operation."
+msgstr "Non se dispón de rexistro de auditoría de GnuPG para esta operación."
+
+#: ui/messagebox.cpp:89
+#, kde-format
+msgid "No GnuPG Audit Log"
+msgstr "Non hai rexistros de auditoría de GnuPG"
+
+#: ui/messagebox.cpp:109 ui/messagebox.cpp:115
+#, kde-format
+msgid "GnuPG Audit Log Viewer"
+msgstr "Visor de rexistros de auditoría de GnuPG"
+
+#: ui/messagebox.cpp:121
+#, kde-format
+msgid "Signing failed: %1"
+msgstr "Fallou a sinatura: %1"
+
+#: ui/messagebox.cpp:122
+#, kde-format
+msgid "Signing successful"
+msgstr "Asinouse sen problemas"
+
+#: ui/messagebox.cpp:133
+#, kde-format
+msgid "Encryption failed: %1"
+msgstr "Fallou o cifrado: %1"
+
+#: ui/messagebox.cpp:134
+#, kde-format
+msgid "Encryption successful"
+msgstr "Cifrouse sen problemas"
+
+#: ui/messagebox.cpp:155
+#, kde-format
+msgid "Signing Result"
+msgstr "Resultado da sinatura"
+
+#: ui/messagebox.cpp:167
+#, kde-format
+msgid "Signing Error"
+msgstr "Houbo un erro de sinatura"
+
+#: ui/messagebox.cpp:179 ui/messagebox.cpp:203
+#, kde-format
+msgid "Encryption Result"
+msgstr "Resultado do cifrado"
+
+#: ui/messagebox.cpp:191 ui/messagebox.cpp:215
+#, kde-format
+msgid "Encryption Error"
+msgstr "Houbo un erro de cifrado"
+
+#: ui/messagebox.cpp:263
+#, kde-format
+msgid "&Show Audit Log"
+msgstr "Mo&strar o rexistro da auditoría"
+
+#: ui/progressdialog.cpp:91
+#, kde-format
+msgid "%1: %2"
+msgstr "%1: %2"
+
+#~ msgctxt "New X.509 Directory Server"
+#~ msgid "X.509"
+#~ msgstr "X.509"
+
+#~ msgctxt "New OpenPGP Directory Server"
+#~ msgid "OpenPGP"
+#~ msgstr "OpenPGP"
+
+#~ msgid "Scheme"
+#~ msgstr "Esquema"
+
+#~ msgid "X.509"
+#~ msgstr "X.509"
+
+#~ msgid ""
+#~ "Select the access scheme (scheme) that the directory service is available "
+#~ "through."
+#~ msgstr ""
+#~ "Escolla o esquema de acceso (esquema) a través do cal está dispoñíbel o "
+#~ "servizo de directorio."
+
+#~ msgid ""
+#~ "Check this column if this directory service is providing S/MIME (X.509) "
+#~ "certificates."
+#~ msgstr ""
+#~ "Escolla esta columna se este servizo de directorio fornece certificados S/"
+#~ "MIME (X.509)."
+
+#~ msgid ""
+#~ "Check this column if this directory service is providing OpenPGP "
+#~ "certificates."
+#~ msgstr ""
+#~ "Escolla esta columna se este servizo de directorio fornece certificados "
+#~ "OpenPGP (X.509)."
+
+#~ msgid "0 - None (no debugging at all)"
+#~ msgstr "0 - Ningunha (sen depurar nada)"
+
+#~ msgid "1 - Basic (some basic debug messages)"
+#~ msgstr "1 - Básica (mensaxes de depuración básicas)"
+
+#~ msgid "2 - Advanced (more verbose debug messages)"
+#~ msgstr "2 - Avanzada (mensaxes de depuración máis explicativas)"
+
+#~ msgid "3 - Expert (even more detailed messages)"
+#~ msgstr "3 - Experta (mensaxes de depuración aínda máis detalladas)"
+
+#~ msgid "4 - Guru (all of the debug messages you can get)"
+#~ msgstr "4 - Gurú (todas as mensaxes de depuración que se poidan obter)"
+
+#~ msgid "General"
+#~ msgstr "Xeral"
+
+#~ msgid "Chiasmus"
+#~ msgstr "Chiasmus"
+
+#~ msgid "Chiasmus command line tool"
+#~ msgstr "Utilidade da liña de comandos Chiasmus"
+
+#~ msgid "Unsupported protocol \"%1\""
+#~ msgstr "Non se recoñece o protocolo «%1»"
+
+#~ msgid "File \"%1\" does not exist or is not executable."
+#~ msgstr "O ficheiro «%1» non existe ou non é executábel."
+
+#~ msgid "Output from chiasmus"
+#~ msgstr "Saída de chiasmus"
+
+#~ msgid "Decryption failed: %1"
+#~ msgstr "Fallou o descifrado: %1"
+
+#~ msgid ""
+#~ "The following was received on stderr:\n"
+#~ "%1"
+#~ msgstr ""
+#~ "Recibiuse o seguinte en stderr:\n"
+#~ "%1"
+
+#~ msgid "Failed to load %1: %2"
+#~ msgstr "Fallou a carga de %1: %2"
+
+#~ msgid "Library does not contain the symbol \"Chiasmus\"."
+#~ msgstr "A biblioteca non contén o símbolo «Chiasmus»."
+
+#~ msgid "Scanning directory %1..."
+#~ msgstr "Estase a examinar o directorio %1..."
+
+#~ msgid "GpgME"
+#~ msgstr "GpgME"
+
+#~ msgid "GPGME was compiled without support for %1."
+#~ msgstr "Compilouse GPGME sen soporte para %1."
+
+#~ msgid "Engine %1 is not installed properly."
+#~ msgstr "O motor %1 non está instalado axeitadamente."
+
+#~ msgid "Engine %1 version %2 installed, but at least version %3 is required."
+#~ msgstr ""
+#~ "Ten a versión %2 do motor %1 instalada, pero requírese polo menos a "
+#~ "versión %3."
+
+#~ msgid "Unknown problem with engine for protocol %1."
+#~ msgstr "Aconteceu un problema descoñecido co motor para o protocolo %1."
+
+#~ msgid "program terminated unexpectedly"
+#~ msgstr "o programa rematou inesperadamente"
+
+#~ msgid "program not found or cannot be started"
+#~ msgstr "non foi posíbel atopar ou iniciar o programa"
+
+#~ msgid "<qt>Failed to execute gpgconf:<p>%1</p></qt>"
+#~ msgstr "<qt>Fallou a execución de gpgconf:<p>%1</p></qt>"
+
+#~ msgid ""
+#~ "Could not start gpgconf.\n"
+#~ "Check that gpgconf is in the PATH and that it can be started."
+#~ msgstr ""
+#~ "Non foi posíbel iniciar gpgconf\n"
+#~ "Comprobe que gpgconf está na súa PATH e que se pode iniciar."
+
+#~ msgid "Error from gpgconf while saving configuration: %1"
+#~ msgstr "Recibiuse un erro desde gpgconf ao gravar a configuración: %1"
+
+#~ msgid "Generating DSA key..."
+#~ msgstr "Estase a xerar a chave DSA..."
+
+#~ msgid "Generating ElGamal key..."
+#~ msgstr "Estase a xerar a chave ElGamal..."
+
+#~ msgid "Searching for a large prime number..."
+#~ msgstr "Estase a procurar un número primo grande..."
+
+#~ msgid ""
+#~ "Waiting for new entropy from random number generator (you might want to "
+#~ "exercise the harddisks or move the mouse)..."
+#~ msgstr ""
+#~ "Estase a agardar pola nova entropía do xerador de números aleatorias "
+#~ "(pode mover o rato ou facer traballar o disco duro para isto)..."
+
+#~ msgid "Please wait..."
+#~ msgstr "Agarde..."
+
+#~ msgid ""
+#~ "Starting gpg-agent (you should consider starting a global instance "
+#~ "instead)..."
+#~ msgstr ""
+#~ "Estase a iniciar o gpg-agent (debería considerar iniciar unha instancia "
+#~ "global no canto)..."
+
+#~ msgid "While scanning for %1 support in backend %2:"
+#~ msgstr "Mentres se procuraba soporte para %1 no mecanismo %2:"
+
+#~ msgctxt "progress info: \"%1 of %2\""
+#~ msgid "%1/%2"
+#~ msgstr "%1/%2"
+
+#~ msgid ""
+#~ "OpenPGP key for %1\n"
+#~ "Created: %2\n"
+#~ "Expiry: %3\n"
+#~ "Fingerprint: %4"
+#~ msgstr ""
+#~ "Chave OpenPGP para %1\n"
+#~ "Creada: %2\n"
+#~ "Caduca: %3\n"
+#~ "Pegada dixital: %4"
+
+#~ msgid ""
+#~ "S/MIME key for %1\n"
+#~ "Created: %2\n"
+#~ "Expiry: %3\n"
+#~ "Fingerprint: %4\n"
+#~ "Issuer: %5"
+#~ msgstr ""
+#~ "Chave S/MIME para %1\n"
+#~ "Creada: %2\n"
+#~ "Caduca: %3\n"
+#~ "Pegada dixital: %4\n"
+#~ "Expendedor: %5"
+
+#~ msgid "Copy Audit Log to Clipboard"
+#~ msgstr "Copiar o rexistro da auditoría no portarretallos"
+
+#~ msgid "Add or Change Directory Service"
+#~ msgstr "Engadir ou mudar o servizo de directorio"
+
+#~ msgid "&Server name:"
+#~ msgstr "Nome do &servidor:"
+
+#~ msgid "389"
+#~ msgstr "389"
+
+#~ msgid "&User name (optional):"
+#~ msgstr "Nome de &usuario (opcional):"
+
+#~ msgid "Pass&word (optional):"
+#~ msgstr "Contras&inal (opcional):"
+
+#~ msgid "&OK"
+#~ msgstr "&Aceptar"
+
+#~ msgid "&Cancel"
+#~ msgstr "&Cancelar"
+
+#~ msgid "&Base DN:"
+#~ msgstr "DN &base:"
+
+#~ msgid "&Port:"
+#~ msgstr "&Porto:"
--- /dev/null
+# translation of libkleopatra.po to Hindi
+# Copyright (C) YEAR This_file_is_part_of_KDE
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Ravishankar Shrivastava <raviratlami@yahoo.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: libkleopatra\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2017-07-12 06:56+0200\n"
+"PO-Revision-Date: 2008-01-26 16:23+0530\n"
+"Last-Translator: Ravishankar Shrivastava <raviratlami@yahoo.com>\n"
+"Language-Team: Hindi <indlinux-hindi@lists.sourceforge.net>\n"
+"Language: hi\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n!=1);\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: kleo/checksumdefinition.cpp:107
+#, kde-format
+msgid "Error in checksum definition %1: %2"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:157
+#, kde-format
+msgid "Cannot use both %f and | in '%1'"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:167
+#, kde-format
+msgid "Quoting error in '%1' entry"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:170
+#, kde-format
+msgid "'%1' too complex (would need shell)"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:174
+#, kde-format
+msgid "'%1' entry is empty/missing"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:183
+#, kde-format
+msgid "'%1' empty or not found"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:222
+#, kde-format
+msgid "'id' entry is empty/missing"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:225
+#, kde-format
+msgid "'output-file' entry is empty/missing"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:228
+#, kde-format
+msgid "'file-patterns' entry is empty/missing"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:395
+#, kde-format
+msgid "Caught unknown exception in group %1"
+msgstr ""
+
+#: kleo/dn.cpp:507
+#, kde-format
+msgid "Common name"
+msgstr "सामान्य नाम"
+
+#: kleo/dn.cpp:508
+#, kde-format
+msgid "Surname"
+msgstr "कुलनाम"
+
+#: kleo/dn.cpp:509
+#, kde-format
+msgid "Given name"
+msgstr "दिया गया नाम"
+
+#: kleo/dn.cpp:510
+#, kde-format
+msgid "Location"
+msgstr "स्थान"
+
+#: kleo/dn.cpp:511
+#, kde-format
+msgid "Title"
+msgstr "शीर्षक"
+
+#: kleo/dn.cpp:512
+#, kde-format
+msgid "Organizational unit"
+msgstr "संगठनात्मक इकाई"
+
+#: kleo/dn.cpp:513
+#, kde-format
+msgid "Organization"
+msgstr "संगठन "
+
+#: kleo/dn.cpp:514
+#, kde-format
+msgid "Postal code"
+msgstr "पिन कोड"
+
+#: kleo/dn.cpp:515
+#, kde-format
+msgid "Country code"
+msgstr "देश कोड"
+
+#: kleo/dn.cpp:516
+#, kde-format
+msgid "State or province"
+msgstr "प्रांत या राज्य"
+
+#: kleo/dn.cpp:517
+#, kde-format
+msgid "Domain component"
+msgstr "डोमेन अवयव"
+
+#: kleo/dn.cpp:518
+#, kde-format
+msgid "Business category"
+msgstr "व्यावसायिक वर्ग"
+
+#: kleo/dn.cpp:519
+#, kde-format
+msgid "Email address"
+msgstr "ई-मेल पता"
+
+#: kleo/dn.cpp:520
+#, kde-format
+msgid "Mail address"
+msgstr "मेल पता"
+
+#: kleo/dn.cpp:521
+#, kde-format
+msgid "Mobile phone number"
+msgstr "मोबाइल फोन क्रमांक"
+
+#: kleo/dn.cpp:522
+#, kde-format
+msgid "Telephone number"
+msgstr "टेलिफोन क्रमांक"
+
+#: kleo/dn.cpp:523
+#, kde-format
+msgid "Fax number"
+msgstr "फ़ैक्स क्रमांक"
+
+#: kleo/dn.cpp:524
+#, kde-format
+msgid "Street address"
+msgstr "सड़क का पता"
+
+#: kleo/dn.cpp:525
+#, kde-format
+msgid "Unique ID"
+msgstr "विशिष्ट आईडी"
+
+#: kleo/enum.cpp:57
+#, kde-format
+msgid "Inline OpenPGP (deprecated)"
+msgstr "इनलाइन ओपन-पीजीपी (डेप्रिकेटेड)"
+
+#: kleo/enum.cpp:62
+#, kde-format
+msgid "OpenPGP/MIME"
+msgstr "ओपन-पीजीपी/माइम"
+
+#: kleo/enum.cpp:67 ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "S/MIME"
+msgstr "S/MIME"
+
+#: kleo/enum.cpp:72
+#, kde-format
+msgid "S/MIME Opaque"
+msgstr "एस/माइम अपारदर्शी"
+
+#: kleo/enum.cpp:104
+#, kde-format
+msgid "Any"
+msgstr "कोई भी"
+
+#: kleo/enum.cpp:177
+#, kde-format
+msgid "Never Encrypt"
+msgstr "कभी भी एनक्रिप्ट न करें"
+
+#: kleo/enum.cpp:179
+#, kde-format
+msgid "Always Encrypt"
+msgstr "हमेशा एनक्रिप्ट करें"
+
+#: kleo/enum.cpp:181
+#, kde-format
+msgid "Always Encrypt If Possible"
+msgstr "यदि संभव हो हमेशा एनक्रिप्ट करें"
+
+#: kleo/enum.cpp:183 kleo/enum.cpp:240
+#, kde-format
+msgid "Ask"
+msgstr "पूछें"
+
+#: kleo/enum.cpp:185 kleo/enum.cpp:242
+#, kde-format
+msgid "Ask Whenever Possible"
+msgstr "जब भी संभव हो तब पूछें"
+
+#: kleo/enum.cpp:187
+#, kde-kuit-format
+msgctxt "no specific preference"
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>कुछ नहीं</placeholder>"
+
+#: kleo/enum.cpp:234
+#, kde-format
+msgid "Never Sign"
+msgstr "कभी भी हस्ताक्षरित न करें"
+
+#: kleo/enum.cpp:236
+#, kde-format
+msgid "Always Sign"
+msgstr "हमेशा हस्ताक्षरित करें"
+
+#: kleo/enum.cpp:238
+#, kde-format
+msgid "Always Sign If Possible"
+msgstr "यदि संभव हो हमेशा हस्ताक्षरित करें"
+
+#: kleo/enum.cpp:244
+#, kde-format
+msgctxt "no specific preference"
+msgid "<none>"
+msgstr "<कुछ नहीं>"
+
+#: kleo/keyfiltermanager.cpp:85
+#, fuzzy, kde-format
+msgid "All Certificates"
+msgstr "प्रमाणपत्र प्रबंधक प्रारंभ करें (&S)"
+
+#: kleo/keyfiltermanager.cpp:100
+#, kde-format
+msgid "My Certificates"
+msgstr ""
+
+#: kleo/keyfiltermanager.cpp:118
+#, fuzzy, kde-format
+msgid "Trusted Certificates"
+msgstr "प्रमाणपत्र प्रबंधक प्रारंभ करें (&S)"
+
+#: kleo/keyfiltermanager.cpp:135
+#, fuzzy, kde-format
+msgid "Fully Trusted Certificates"
+msgstr "प्रमाणपत्र प्रबंधक प्रारंभ करें (&S)"
+
+#: kleo/keyfiltermanager.cpp:152
+#, fuzzy, kde-format
+msgid "Other Certificates"
+msgstr "प्रमाणपत्र प्रबंधक प्रारंभ करें (&S)"
+
+#: kleo/keyfiltermanager.cpp:166
+#, fuzzy, kde-format
+msgid "VS-compliant Certificates"
+msgstr "प्रमाणपत्र प्रबंधक प्रारंभ करें (&S)"
+
+#: kleo/keyfiltermanager.cpp:184
+#, fuzzy, kde-format
+msgid "Not validated Certificates"
+msgstr "प्रमाणपत्र प्रबंधक प्रारंभ करें (&S)"
+
+#: ui/auditlogviewer.cpp:49
+#, kde-format
+msgid "View GnuPG Audit Log"
+msgstr ""
+
+#: ui/auditlogviewer.cpp:53
+#, kde-format
+msgid "&Copy to Clipboard"
+msgstr ""
+
+#: ui/auditlogviewer.cpp:59
+#, kde-format
+msgid "&Save to Disk..."
+msgstr ""
+
+#: ui/auditlogviewer.cpp:95
+#, kde-format
+msgid "Choose File to Save GnuPG Audit Log to"
+msgstr ""
+
+#: ui/auditlogviewer.cpp:118
+#, kde-format
+msgid "Could not save to file \"%1\": %2"
+msgstr ""
+
+#: ui/auditlogviewer.cpp:120
+#, kde-format
+msgid "File Save Error"
+msgstr ""
+
+#: ui/cryptoconfigdialog.cpp:44
+#, kde-format
+msgid "Configure GnuPG Backend"
+msgstr ""
+
+#: ui/cryptoconfigdialog.cpp:55
+#, kde-format
+msgid "&Reset"
+msgstr "रीसेट (&R)"
+
+#: ui/cryptoconfigmodule.cpp:160
+#, fuzzy, kde-format
+#| msgid "Encryption keys:"
+msgid "GpgConf Error"
+msgstr "एनक्रिप्शन कुंजियाँ:"
+
+#: ui/cryptoconfigmodule.cpp:216
+#, kde-format
+msgid ""
+"The gpgconf tool used to provide the information for this dialog does not "
+"seem to be installed properly. It did not return any components. Try running "
+"\"%1\" on the command line for more information."
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:496
+#, kde-format
+msgctxt ""
+"Translate this to 'yes' or 'no' (use the English words!) depending on "
+"whether your language uses Sentence style capitalisation in GUI labels (yes) "
+"or not (no). Context: We get some backend strings in that have the wrong "
+"capitalizaion (in English, at least) so we need to force the first character "
+"to upper-case. It is this behaviour you can control for your language with "
+"this translation."
+msgid "yes"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:546
+#, kde-format
+msgid "0 - None"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:547
+#, kde-format
+msgid "1 - Basic"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:548
+#, kde-format
+msgid "2 - Verbose"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:549
+#, kde-format
+msgid "3 - More Verbose"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:550
+#, kde-format
+msgid "4 - All"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:559
+#, kde-format
+msgid "Set the debugging level to"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:787
+#, kde-format
+msgid "Show..."
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:787 ui/cryptoconfigmodule.cpp:876
+#, kde-format
+msgid "Edit..."
+msgstr "संपादन..."
+
+#: ui/cryptoconfigmodule.cpp:841
+#, kde-format
+msgid "Configure LDAP Servers"
+msgstr "एलडीएपी सर्वर्स कॉन्फ़िगर करें"
+
+#: ui/cryptoconfigmodule.cpp:862
+#, fuzzy, kde-format
+#| msgid "No server configured yet"
+msgid "None configured"
+msgstr "अभी कोई सर्वर कॉन्फ़िगर्ड नहीं"
+
+#: ui/cryptoconfigmodule.cpp:864
+#, kde-format
+msgid "1 server configured"
+msgid_plural "%1 servers configured"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ui/cryptoconfigmodule.cpp:879
+#, kde-format
+msgid "Use keyserver at"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:968
+#, fuzzy, kde-format
+#| msgid "Configure LDAP Servers"
+msgid "Configure Keyservers"
+msgstr "एलडीएपी सर्वर्स कॉन्फ़िगर करें"
+
+#: ui/directoryserviceswidget.cpp:67
+#, fuzzy, kde-format
+#| msgid "never"
+msgctxt "default server name, keep it a valid domain name, ie. no spaces"
+msgid "server"
+msgstr "कभी नहीं"
+
+#: ui/directoryserviceswidget.cpp:95
+#, kde-format
+msgid "hkp"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:96
+#, kde-format
+msgid "http"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:97
+#, kde-format
+msgid "https"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:98
+#, kde-format
+msgid "ftp"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:99
+#, kde-format
+msgid "ftps"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:100
+#, kde-format
+msgid "ldap"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:101
+#, kde-format
+msgid "ldaps"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:588
+#, kde-format
+msgid "Server Name"
+msgstr "सर्वर नाम"
+
+#: ui/directoryserviceswidget.cpp:589
+#, fuzzy, kde-format
+#| msgid "Server Name"
+msgid "Server Port"
+msgstr "सर्वर नाम"
+
+#: ui/directoryserviceswidget.cpp:590
+#, kde-format
+msgid "Base DN"
+msgstr "बेस डीएन"
+
+#: ui/directoryserviceswidget.cpp:591
+#, kde-format
+msgid "User Name"
+msgstr "उपयोक्ता नाम"
+
+#: ui/directoryserviceswidget.cpp:592
+#, kde-format
+msgid "Password"
+msgstr "पासवर्ड"
+
+#: ui/directoryserviceswidget.cpp:614
+#, kde-format
+msgid "(read-only)"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:616
+#, kde-format
+msgctxt "amended tooltip; %1: original tooltip"
+msgid "%1 (read-only)"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:739
+#, kde-format
+msgid ""
+"Enter the name or IP address of the server hosting the directory service."
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:741
+#, kde-format
+msgid ""
+"<b>(Optional, the default is fine in most cases)</b> Pick the port number "
+"the directory service is listening on."
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:744
+#, kde-format
+msgid ""
+"<b>(Only for LDAP)</b> Enter the base DN for this LDAP server to limit "
+"searches to only that subtree of the directory."
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:747
+#, kde-format
+msgid "<b>(Optional)</b> Enter your user name here, if needed."
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:749
+#, kde-format
+msgid ""
+"<b>(Optional, not recommended)</b> Enter your password here, if needed. Note "
+"that the password will be saved in the clear in a config file in your home "
+"directory."
+msgstr ""
+
+#. i18n: ectx: property (windowTitle), widget (QWidget, DirectoryServicesWidget)
+#: ui/directoryserviceswidget.ui:14
+#, kde-format
+msgid "Directory Services Configuration"
+msgstr "डिरेक्ट्री सेवा कॉन्फ़िगरेशन"
+
+#. i18n: ectx: property (text), widget (QLabel, pgpKSLabel)
+#: ui/directoryserviceswidget.ui:22
+#, fuzzy, kde-format
+#| msgid "OpenPGP Key Selection"
+msgid "OpenPGP Keyserver:"
+msgstr "ओपन-पीजीपी कुंजी चयन"
+
+#. i18n: ectx: property (title), widget (QGroupBox, x500LA)
+#: ui/directoryserviceswidget.ui:35
+#, fuzzy, kde-format
+#| msgid "X.&500 directory services:"
+msgid "X509 Directory services:"
+msgstr "X.&500 डिरेक्ट्री सेवाएँ:"
+
+#. i18n: ectx: property (whatsThis), widget (QTreeView, treeView)
+#: ui/directoryserviceswidget.ui:43
+#, kde-format
+msgid ""
+"This is a list of all directory services that are configured for use with "
+"X.509."
+msgstr ""
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:70
+#, kde-format
+msgid "Click to add a service"
+msgstr "कोई सेवा जोड़ने के लिए क्लिक करें"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:73
+#, kde-format
+msgid ""
+"Click this button to create a new directory service entry as a clone of the "
+"currently selected one (or with default values, if no other is selected). "
+"You can then configure details in the table on the left hand."
+msgstr ""
+
+#. i18n: ectx: property (text), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:76
+#, kde-format
+msgid "New"
+msgstr ""
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:92
+#, kde-format
+msgid "Click to remove the currently selected service"
+msgstr "वर्तमान चयनित सेवा मिटाने के लिए यहाँ क्लिक करें"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:95
+#, kde-format
+msgid ""
+"Click this button to remove the currently selected directory service. The "
+"change will only take effect once you acknowledge the main configuration "
+"dialog."
+msgstr ""
+
+#. i18n: ectx: property (text), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:98
+#, kde-format
+msgid "Delete"
+msgstr ""
+
+#. i18n: ectx: property (whatsThis), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:128
+#, kde-format
+msgid ""
+"Use this option to switch display of username and password information on or "
+"off in the above table."
+msgstr ""
+
+#. i18n: ectx: property (text), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:131
+#, kde-format
+msgid "Show user and password information"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:73
+#, kde-format
+msgid "Description"
+msgstr "वर्णन"
+
+#: ui/dnattributeorderconfigwidget.cpp:91
+#, kde-format
+msgid "Available attributes:"
+msgstr "उपलब्ध विशेषताएँ:"
+
+#: ui/dnattributeorderconfigwidget.cpp:92
+#, kde-format
+msgid "Current attribute order:"
+msgstr "वर्तमान विशेषता का अनुक्रम:"
+
+#: ui/dnattributeorderconfigwidget.cpp:112
+#, kde-format
+msgid "All others"
+msgstr "अन्य सभी"
+
+#: ui/dnattributeorderconfigwidget.cpp:129
+#, kde-format
+msgid "Move to top"
+msgstr "शीर्ष में जाएँ"
+
+#: ui/dnattributeorderconfigwidget.cpp:130
+#, kde-format
+msgid "Move one up"
+msgstr "एक ऊपर लाएँ"
+
+#: ui/dnattributeorderconfigwidget.cpp:131
+#, kde-format
+msgid "Remove from current attribute order"
+msgstr "वर्तमान विशेषता अनुक्रम से मिटाएँ"
+
+#: ui/dnattributeorderconfigwidget.cpp:132
+#, kde-format
+msgid "Add to current attribute order"
+msgstr "वर्तमान विशेषता अनुक्रम में जोड़ें"
+
+#: ui/dnattributeorderconfigwidget.cpp:133
+#, kde-format
+msgid "Move one down"
+msgstr "एक नीचे लाएँ"
+
+#: ui/dnattributeorderconfigwidget.cpp:134
+#, kde-format
+msgid "Move to bottom"
+msgstr "तल में जाएँ"
+
+#: ui/keyapprovaldialog.cpp:87
+#, kde-kuit-format
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>कुछ नहीं</placeholder>"
+
+#: ui/keyapprovaldialog.cpp:88
+#, kde-format
+msgid "Never Encrypt with This Key"
+msgstr "इस कुंजी के द्वारा कभी भी एनक्रिप्ट न करें"
+
+#: ui/keyapprovaldialog.cpp:89
+#, kde-format
+msgid "Always Encrypt with This Key"
+msgstr "इस कुंजी के साथ हमेशा एनक्रिप्ट करें"
+
+#: ui/keyapprovaldialog.cpp:90
+#, kde-format
+msgid "Encrypt Whenever Encryption is Possible"
+msgstr "जब भी एनक्रिप्शन संभव हो एनक्रिप्ट करें"
+
+#: ui/keyapprovaldialog.cpp:91
+#, kde-format
+msgid "Always Ask"
+msgstr "हमेशा पूछें"
+
+#: ui/keyapprovaldialog.cpp:92
+#, kde-format
+msgid "Ask Whenever Encryption is Possible"
+msgstr "जब भी एनक्रिप्शन संभव हो तब पूछें"
+
+#: ui/keyapprovaldialog.cpp:113
+#, kde-format
+msgid "Encryption Key Approval"
+msgstr "एनक्रिप्शन कुंजी अनुमोदन"
+
+#: ui/keyapprovaldialog.cpp:129
+#, kde-format
+msgid "The following keys will be used for encryption:"
+msgstr "निम्न कुंजियों को एनक्रिप्शन हेतु उपयोग में लिया जाएगा:"
+
+#: ui/keyapprovaldialog.cpp:145
+#, kde-format
+msgid "Your keys:"
+msgstr "आपकी कुंजियाँ:"
+
+#: ui/keyapprovaldialog.cpp:157
+#, kde-format
+msgid "Recipient:"
+msgstr "पानेवालाः"
+
+#: ui/keyapprovaldialog.cpp:162
+#, kde-format
+msgid "Encryption keys:"
+msgstr "एनक्रिप्शन कुंजियाँ:"
+
+#: ui/keyapprovaldialog.cpp:169
+#, kde-format
+msgid "Encryption preference:"
+msgstr "एनक्रिप्शन प्राथमिकताएँ:"
+
+#: ui/keyrequester.cpp:118
+#, kde-format
+msgid "Clear"
+msgstr "साफ करें"
+
+#: ui/keyrequester.cpp:121
+#, kde-format
+msgid "Change..."
+msgstr "बदलें..."
+
+#: ui/keyrequester.cpp:232 ui/keyselectiondialog.cpp:256
+#, kde-kuit-format
+msgid "<placeholder>unknown</placeholder>"
+msgstr "<placeholder>अज्ञात</placeholder>"
+
+#: ui/keyrequester.cpp:246 ui/keyselectiondialog.cpp:657
+#, kde-format
+msgid ""
+"<qt><p>An error occurred while fetching the keys from the backend:</p><p><b>"
+"%1</b></p></qt>"
+msgstr ""
+"<qt><p>बैकएण्ड से प्रमाणपत्र प्राप्त करने के दौरान एक त्रुटि हुई :</p><p><b>%1</b></p></"
+"qt>"
+
+#: ui/keyrequester.cpp:251 ui/keyrequester.cpp:283 ui/keyrequester.cpp:306
+#: ui/keyselectiondialog.cpp:630 ui/keyselectiondialog.cpp:662
+#, kde-format
+msgid "Key Listing Failed"
+msgstr "कुंजी निर्यात असफल"
+
+#: ui/keyrequester.cpp:281
+#, kde-format
+msgid ""
+"The OpenPGP backend does not support listing keys. Check your installation."
+msgstr "ओपनपीजीपी बैकएण्ड में लिस्टिंग कुंजी समर्थित नहीं है. अपनी संस्थापना जाँचें."
+
+#: ui/keyrequester.cpp:304
+#, kde-format
+msgid ""
+"The S/MIME backend does not support listing keys. Check your installation."
+msgstr "एस/माइम बैकएण्ड में लिस्टिंग कुंजी समर्थित नहीं है. अपनी संस्थापना जाँचें."
+
+#: ui/keyrequester.cpp:426
+#, kde-format
+msgid "OpenPGP Key Selection"
+msgstr "ओपन-पीजीपी कुंजी चयन"
+
+#: ui/keyrequester.cpp:427
+#, kde-format
+msgid "Please select an OpenPGP key to use."
+msgstr "इस्तेमाल हेतु कृपया ओपन-पीजीपी कुंजी चुनें."
+
+#: ui/keyrequester.cpp:429
+#, kde-format
+msgid "S/MIME Key Selection"
+msgstr "एस/माइम कुंजी चयन"
+
+#: ui/keyrequester.cpp:430
+#, kde-format
+msgid "Please select an S/MIME key to use."
+msgstr "इस्तेमाल हेतु कृपया एस/माइम कुंजी चुनें."
+
+#: ui/keyrequester.cpp:432
+#, kde-format
+msgid "Key Selection"
+msgstr "कुंजी चयन"
+
+#: ui/keyrequester.cpp:433
+#, kde-format
+msgid "Please select an (OpenPGP or S/MIME) key to use."
+msgstr "कृपया इस्तेमाल के लिए एक कुंजी (ओपन-पीजीपी या एस/माइम) चुनें."
+
+#: ui/keyselectioncombo.cpp:195
+#, kde-format
+msgctxt "Name <email> (validity, type, created: date)"
+msgid "%1 (%2, %3, created: %4)"
+msgstr ""
+
+#: ui/keyselectioncombo.cpp:196
+#, kde-format
+msgctxt "Name <email>"
+msgid "%1 <%2>"
+msgstr ""
+
+#: ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "OpenPGP"
+msgstr "ओपन-पीजीपी"
+
+#: ui/keyselectioncombo.cpp:347
+#, fuzzy, kde-format
+#| msgid "Fetching keys..."
+msgid "Loading keys ..."
+msgstr "कुंजियाँ प्राप्त की जा रही हैं..."
+
+#: ui/keyselectiondialog.cpp:98
+#, kde-format
+msgid "The key is not valid."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:106
+#, kde-format
+msgid "The key is expired."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:110
+#, kde-format
+msgid "The key is revoked."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:114
+#, kde-format
+msgid "The key is disabled."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:122
+#, fuzzy, kde-format
+#| msgid "The following keys will be used for encryption:"
+msgid "The key is not designated for encryption."
+msgstr "निम्न कुंजियों को एनक्रिप्शन हेतु उपयोग में लिया जाएगा:"
+
+#: ui/keyselectiondialog.cpp:128
+#, kde-format
+msgid "The key is not designated for signing."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:134
+#, kde-format
+msgid "The key is not designated for certifying."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:140
+#, kde-format
+msgid "The key is not designated for authentication."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:148
+#, kde-format
+msgid "The key is not secret."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:163
+#, kde-format
+msgid "The key is not trusted enough."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:169
+#, kde-format
+msgid "The key can be used."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:230
+#, kde-format
+msgid "Key ID"
+msgstr "कुंजी आईडी"
+
+#: ui/keyselectiondialog.cpp:231
+#, kde-format
+msgid "User ID"
+msgstr "उपयोक्ता पहचान"
+
+#: ui/keyselectiondialog.cpp:279
+#, kde-format
+msgid "never"
+msgstr "कभी नहीं"
+
+#: ui/keyselectiondialog.cpp:289 ui/keyselectiondialog.cpp:291
+#: ui/keyselectiondialog.cpp:300 ui/keyselectiondialog.cpp:302
+#, kde-format
+msgid "unknown"
+msgstr "अज्ञात"
+
+#: ui/keyselectiondialog.cpp:289
+#, kde-format
+msgid "OpenPGP key for <b>%1</b>"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:291
+#, kde-format
+msgid "S/MIME key for <b>%1</b>"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:298
+#, kde-format
+msgctxt "Key creation date"
+msgid "Created"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:299
+#, kde-format
+msgctxt "Key Expiration date"
+msgid "Expiry"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:300
+#, kde-format
+msgctxt "Key fingerprint"
+msgid "Fingerprint"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:302
+#, kde-format
+msgctxt "Key issuer"
+msgid "Issuer"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:304
+#, kde-format
+msgctxt "Key status"
+msgid "Status"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:456
+#, fuzzy, kde-format
+msgid "Search for &External Certificates"
+msgstr "प्रमाणपत्र प्रबंधक प्रारंभ करें (&S)"
+
+#: ui/keyselectiondialog.cpp:470
+#, kde-format
+msgid "&Search for:"
+msgstr "के लिए ढूंढें: (&S)"
+
+#: ui/keyselectiondialog.cpp:494
+#, kde-format
+msgid "&Remember choice"
+msgstr "चुनाव याद रखें (&R)"
+
+#: ui/keyselectiondialog.cpp:497
+#, kde-format
+msgid ""
+"<qt><p>If you check this box your choice will be stored and you will not be "
+"asked again.</p></qt>"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:509
+#, kde-format
+msgid "&Reread Keys"
+msgstr "कुंजियाँ फिर से पढ़ें (&R)"
+
+#: ui/keyselectiondialog.cpp:510
+#, kde-format
+msgid "&Start Certificate Manager"
+msgstr "प्रमाणपत्र प्रबंधक प्रारंभ करें (&S)"
+
+#: ui/keyselectiondialog.cpp:628
+#, kde-format
+msgid "No backends found for listing keys. Check your installation."
+msgstr "कुंजियाँ सूचीबद्ध करने के लिए कोई बैकएण्ड नहीं मिला. अपनी संस्थापना जाँचें."
+
+#: ui/keyselectiondialog.cpp:644
+#, kde-format
+msgid "Could not start certificate manager; please check your installation."
+msgstr "प्रमाणपत्र प्रबंधक प्रारंभ नहीं कर सका. कृपया अपनी संस्थापना जाँचें."
+
+#: ui/keyselectiondialog.cpp:646
+#, kde-format
+msgid "Certificate Manager Error"
+msgstr "प्रमाणपत्र प्रबंधक त्रुटि"
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Checking selected keys..."
+msgstr "चयनित कुंजियाँ जाँची जा रही हैं..."
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Fetching keys..."
+msgstr "कुंजियाँ प्राप्त की जा रही हैं..."
+
+#: ui/keyselectiondialog.cpp:731
+#, kde-format
+msgid ""
+"<qt>One backend returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgid_plural ""
+"<qt>%1 backends returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ui/keyselectiondialog.cpp:736
+#, kde-format
+msgid "Key List Result"
+msgstr "कुंजी सूची परिणाम"
+
+#: ui/keyselectiondialog.cpp:856
+#, kde-format
+msgid "Recheck Key"
+msgstr "कुंजी को फिर से जाँचें"
+
+#: ui/messagebox.cpp:71
+#, kde-format
+msgid "Your system does not have support for GnuPG Audit Logs"
+msgstr ""
+
+#: ui/messagebox.cpp:72
+#, kde-format
+msgid "System Error"
+msgstr ""
+
+#: ui/messagebox.cpp:79
+#, kde-format
+msgid ""
+"An error occurred while trying to retrieve the GnuPG Audit Log:\n"
+"%1"
+msgstr ""
+
+#: ui/messagebox.cpp:81
+#, kde-format
+msgid "GnuPG Audit Log Error"
+msgstr ""
+
+#: ui/messagebox.cpp:88
+#, kde-format
+msgid "No GnuPG Audit Log available for this operation."
+msgstr ""
+
+#: ui/messagebox.cpp:89
+#, kde-format
+msgid "No GnuPG Audit Log"
+msgstr ""
+
+#: ui/messagebox.cpp:109 ui/messagebox.cpp:115
+#, kde-format
+msgid "GnuPG Audit Log Viewer"
+msgstr ""
+
+#: ui/messagebox.cpp:121
+#, kde-format
+msgid "Signing failed: %1"
+msgstr "हस्ताक्षर करने में असफल: %1"
+
+#: ui/messagebox.cpp:122
+#, kde-format
+msgid "Signing successful"
+msgstr ""
+
+#: ui/messagebox.cpp:133
+#, kde-format
+msgid "Encryption failed: %1"
+msgstr "एनक्रिप्शन असफल: %1"
+
+#: ui/messagebox.cpp:134
+#, fuzzy, kde-format
+#| msgid "Encryption keys:"
+msgid "Encryption successful"
+msgstr "एनक्रिप्शन कुंजियाँ:"
+
+#: ui/messagebox.cpp:155
+#, fuzzy, kde-format
+msgid "Signing Result"
+msgstr "स्कैन परिणाम"
+
+#: ui/messagebox.cpp:167
+#, kde-format
+msgid "Signing Error"
+msgstr ""
+
+#: ui/messagebox.cpp:179 ui/messagebox.cpp:203
+#, fuzzy, kde-format
+#| msgid "Encryption keys:"
+msgid "Encryption Result"
+msgstr "एनक्रिप्शन कुंजियाँ:"
+
+#: ui/messagebox.cpp:191 ui/messagebox.cpp:215
+#, fuzzy, kde-format
+#| msgid "Encryption keys:"
+msgid "Encryption Error"
+msgstr "एनक्रिप्शन कुंजियाँ:"
+
+#: ui/messagebox.cpp:263
+#, kde-format
+msgid "&Show Audit Log"
+msgstr ""
+
+#: ui/progressdialog.cpp:91
+#, kde-format
+msgid "%1: %2"
+msgstr "%1: %2"
+
+#, fuzzy
+#~| msgid "OpenPGP"
+#~ msgctxt "New OpenPGP Directory Server"
+#~ msgid "OpenPGP"
+#~ msgstr "ओपन-पीजीपी"
+
+#~ msgid "General"
+#~ msgstr "सामान्य"
+
+#~ msgid "Chiasmus"
+#~ msgstr "चियास्मस"
+
+#~ msgid "Chiasmus command line tool"
+#~ msgstr "चियास्मस कमांड-लाइन औज़ार"
+
+#~ msgid "Unsupported protocol \"%1\""
+#~ msgstr "असमर्थित प्रोटोकॉल \"%1\""
+
+#~ msgid "File \"%1\" does not exist or is not executable."
+#~ msgstr "फ़ाइल \"%1\" उपलब्ध नहीं है या चलाने योग्य नहीं है."
+
+#~ msgid "Output from chiasmus"
+#~ msgstr "चियास्मस से आउटपुट"
+
+#~ msgid "Decryption failed: %1"
+#~ msgstr "डिक्रिप्शन असफल: %1"
+
+#~ msgid ""
+#~ "The following was received on stderr:\n"
+#~ "%1"
+#~ msgstr ""
+#~ "मानकत्रुटि में निम्न मिला:\n"
+#~ "%1"
+
+#~ msgid "Failed to load %1: %2"
+#~ msgstr "%1 को लोड करने में असफल:%2"
+
+#~ msgid "Library does not contain the symbol \"Chiasmus\"."
+#~ msgstr "लाइब्रेरी में प्रतीक \"चियास्मस\" नहीं है."
+
+#~ msgid "Scanning directory %1..."
+#~ msgstr "डिरेक्ट्री %1 को स्कैन किया जा रहा है..."
+
+#~ msgid "GpgME"
+#~ msgstr "जीपीजी-एमई"
+
+#~ msgid "GPGME was compiled without support for %1."
+#~ msgstr "जीपीजी-एमई को %1 के समर्थन के बगैर कम्पाइल किया गया है."
+
+#~ msgid "Engine %1 is not installed properly."
+#~ msgstr "इंजिन %1 उचित प्रकार संस्थापित नहीं है. "
+
+#~ msgid "Engine %1 version %2 installed, but at least version %3 is required."
+#~ msgstr "इंजिन %1 संस्करण %2 संस्थापित है, परंतु कम से कम संस्करण %3 आवश्यक है."
+
+#~ msgid "Unknown problem with engine for protocol %1."
+#~ msgstr "प्रोटोकॉल %1 के लिए इंजिन के साथ अज्ञात समस्या है."
+
+#~ msgid "program terminated unexpectedly"
+#~ msgstr "प्रोग्राम अप्रत्याशित बाहर हुआ"
+
+#~ msgid "program not found or cannot be started"
+#~ msgstr "प्रोग्राम नहीं मिला या प्रारंभ नहीं किया जा सका"
+
+#~ msgid "<qt>Failed to execute gpgconf:<p>%1</p></qt>"
+#~ msgstr "<qt>जीपीजी-कॉन्फ़ चलाने में असफल:<p>%1</p></qt>"
+
+#~ msgid "Error from gpgconf while saving configuration: %1"
+#~ msgstr "कॉन्फ़िगरेशन सहेजने के दौरान जीपीजीकॉन्फ़ से त्रुटि: %1"
+
+#~ msgid "Generating DSA key..."
+#~ msgstr "डीएसए कुंजी तैयार किया जा रहा है..."
+
+#~ msgid "Generating ElGamal key..."
+#~ msgstr "ईआई-गमल कुंजी तैयार किया जा रहा है..."
+
+#~ msgid "Searching for a large prime number..."
+#~ msgstr "बड़े प्राइम संख्या के लिए ढूंढा जा रहा है..."
+
+#~ msgid "Please wait..."
+#~ msgstr "कृपया इंतजार करें..."
+
+#~ msgid "While scanning for %1 support in backend %2:"
+#~ msgstr "जब %1 के लिए स्कैन किया जा रहा हो बैकएण्ड %2 के लिए समर्थन:"
+
+#~ msgctxt "progress info: \"%1 of %2\""
+#~ msgid "%1/%2"
+#~ msgstr "%1/%2"
+
+#~ msgid ""
+#~ "OpenPGP key for %1\n"
+#~ "Created: %2\n"
+#~ "Expiry: %3\n"
+#~ "Fingerprint: %4"
+#~ msgstr ""
+#~ "%1 के लिए ओपन-पीजीपी कुंजी\n"
+#~ "बनाया: %2\n"
+#~ "कालातीत होगा: %3\n"
+#~ "फ़िंगरप्रिंट: %4"
+
+#~ msgid ""
+#~ "S/MIME key for %1\n"
+#~ "Created: %2\n"
+#~ "Expiry: %3\n"
+#~ "Fingerprint: %4\n"
+#~ "Issuer: %5"
+#~ msgstr ""
+#~ "एस/माइम कुंजी %1 के लिए\n"
+#~ "बनाया गया: %2\n"
+#~ "मियाद: %3\n"
+#~ "फिंगरप्रिंट: %4\n"
+#~ "उपयोक्ता है: %5"
+
+#~ msgid "Add or Change Directory Service"
+#~ msgstr "डिरेक्ट्री सेवा जोड़ें या परिवर्तित करें"
+
+#~ msgid "&Server name:"
+#~ msgstr "सर्वर नामः (&S)"
+
+#~ msgid "389"
+#~ msgstr "389"
+
+#~ msgid "&User name (optional):"
+#~ msgstr "उपयोक्ता नाम (वैकल्पिक): (&U)"
+
+#~ msgid "Pass&word (optional):"
+#~ msgstr "पासवर्ड (वैकल्पिक): (&w)"
+
+#~ msgid "&OK"
+#~ msgstr "ठीक (&O)"
+
+#~ msgid "&Cancel"
+#~ msgstr "रद्द करें (&C)"
+
+#~ msgid "&Base DN:"
+#~ msgstr "बेस डीएनः (&B)"
+
+#~ msgid "&Port:"
+#~ msgstr "पोर्टः (&P)"
+
+#~ msgctxt "NAME OF TRANSLATORS"
+#~ msgid "Your names"
+#~ msgstr "रविशंकर श्रीवास्तव, जी. करूणाकर"
+
+#~ msgctxt "EMAIL OF TRANSLATORS"
+#~ msgid "Your emails"
+#~ msgstr "raviratlami@aol.in"
+
+#~ msgid "failed"
+#~ msgstr "असफल"
+
+#~ msgctxt ""
+#~ "Items in Kleo::BackendConfigWidget listview (1: protocol; 2: "
+#~ "implementation name)"
+#~ msgid "%1 (%2)"
+#~ msgstr "%1 (%2)"
+
+#~ msgid "Available Backends"
+#~ msgstr "उपलब्ध बैकएण्ड्स"
+
+#~ msgid "Confi&gure..."
+#~ msgstr "कॉन्फ़िगर... (&g)"
+
+#~ msgid "Rescan"
+#~ msgstr "री-स्कैन"
+
+#~ msgid "The following problems where encountered during scanning:"
+#~ msgstr "स्कैनिंग के दौरान निम्न समस्याएँ हुईं:"
+
+#, fuzzy
+#~ msgctxt "@title:window Results of the scanning"
+#~ msgid "Scan Results"
+#~ msgstr "स्कैन परिणाम"
+
+#~ msgid "(Unknown Protocol)"
+#~ msgstr "(अज्ञात प्रोटोकॉल)"
+
+#~ msgid "Error while initializing plugin \"%1\""
+#~ msgstr "प्लगइन \"%1\" प्रारंभ करने के दौरान त्रुटि"
+
+#~ msgid ""
+#~ "You need a passphrase to unlock the secret key for user:<br/> %1 (retry)"
+#~ msgstr ""
+#~ "आपको उपयोक्ता के गोपनीय कुंजी को खोलने के लिए पासफ्रेस की आवश्यकता होगी:<br/> %1 "
+#~ "(फिर से कोशिश)"
+
+#~ msgid "You need a passphrase to unlock the secret key for user:<br/> %1"
+#~ msgstr ""
+#~ "आपको उपयोक्ता के गोपनीय कुंजी को खोलने के लिए पासफ्रेस की आवश्यकता होगी:<br/> %1"
+
+#~ msgid "gpg-agent is part of gnupg-%1, which you can download from %2"
+#~ msgstr "जीपीजी-एजेंट ग्नूपीजी-%1 का एक भाग है, जिसे आप यहाँ %2 से डाउनलोड कर सकते हैं"
+
+#~ msgid "Enter passphrase:"
+#~ msgstr "पासफ्रेस भरें:"
+
+#~ msgid "Passphrase Dialog"
+#~ msgstr "पासफ्रेस संवाद"
+
+#~ msgid "Configure"
+#~ msgstr "कॉन्फ़िगर"
+
+#~ msgid "Select Directory Services to Use Here"
+#~ msgstr "यहाँ इस्तेमाल के लिए डिरेक्ट्री सेवा चुनें"
+
+#~ msgid "Port"
+#~ msgstr "पोर्ट"
+
+#~ msgid "&Add Service..."
+#~ msgstr "सेवाएँ जोड़ें... (&A)"
+
+#~ msgid "&Remove Service"
+#~ msgstr "सेवा मिटाएँ (&R)"
+
+#~ msgid "<placeholder>unnamed</placeholder>"
+#~ msgstr "<placeholder>अनाम</placeholder>"
--- /dev/null
+# Translation of libkleopatra to Croatian
+#
+# Andrej Dundovic <adundovi@gmail.com>, 2010.
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2017-07-12 06:56+0200\n"
+"PO-Revision-Date: 2010-01-24 17:21+0100\n"
+"Last-Translator: Andrej Dundovic <adundovi@gmail.com>\n"
+"Language-Team: Croatian <kde-croatia-list@lists.sourceforge.net>\n"
+"Language: hr\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-Generator: Lokalize 1.0\n"
+"X-Environment: kde\n"
+"X-Accelerator-Marker: &\n"
+"X-Text-Markup: kde4\n"
+
+#: kleo/checksumdefinition.cpp:107
+#, kde-format
+msgid "Error in checksum definition %1: %2"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:157
+#, kde-format
+msgid "Cannot use both %f and | in '%1'"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:167
+#, kde-format
+msgid "Quoting error in '%1' entry"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:170
+#, kde-format
+msgid "'%1' too complex (would need shell)"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:174
+#, kde-format
+msgid "'%1' entry is empty/missing"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:183
+#, kde-format
+msgid "'%1' empty or not found"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:222
+#, kde-format
+msgid "'id' entry is empty/missing"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:225
+#, kde-format
+msgid "'output-file' entry is empty/missing"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:228
+#, kde-format
+msgid "'file-patterns' entry is empty/missing"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:395
+#, kde-format
+msgid "Caught unknown exception in group %1"
+msgstr ""
+
+#: kleo/dn.cpp:507
+#, kde-format
+msgid "Common name"
+msgstr ""
+
+#: kleo/dn.cpp:508
+#, kde-format
+msgid "Surname"
+msgstr ""
+
+#: kleo/dn.cpp:509
+#, kde-format
+msgid "Given name"
+msgstr ""
+
+#: kleo/dn.cpp:510
+#, kde-format
+msgid "Location"
+msgstr ""
+
+#: kleo/dn.cpp:511
+#, kde-format
+msgid "Title"
+msgstr ""
+
+#: kleo/dn.cpp:512
+#, kde-format
+msgid "Organizational unit"
+msgstr ""
+
+#: kleo/dn.cpp:513
+#, kde-format
+msgid "Organization"
+msgstr ""
+
+#: kleo/dn.cpp:514
+#, kde-format
+msgid "Postal code"
+msgstr ""
+
+#: kleo/dn.cpp:515
+#, kde-format
+msgid "Country code"
+msgstr ""
+
+#: kleo/dn.cpp:516
+#, kde-format
+msgid "State or province"
+msgstr ""
+
+#: kleo/dn.cpp:517
+#, kde-format
+msgid "Domain component"
+msgstr ""
+
+#: kleo/dn.cpp:518
+#, kde-format
+msgid "Business category"
+msgstr ""
+
+#: kleo/dn.cpp:519
+#, kde-format
+msgid "Email address"
+msgstr ""
+
+#: kleo/dn.cpp:520
+#, kde-format
+msgid "Mail address"
+msgstr ""
+
+#: kleo/dn.cpp:521
+#, kde-format
+msgid "Mobile phone number"
+msgstr ""
+
+#: kleo/dn.cpp:522
+#, kde-format
+msgid "Telephone number"
+msgstr ""
+
+#: kleo/dn.cpp:523
+#, kde-format
+msgid "Fax number"
+msgstr ""
+
+#: kleo/dn.cpp:524
+#, kde-format
+msgid "Street address"
+msgstr ""
+
+#: kleo/dn.cpp:525
+#, kde-format
+msgid "Unique ID"
+msgstr ""
+
+#: kleo/enum.cpp:57
+#, kde-format
+msgid "Inline OpenPGP (deprecated)"
+msgstr ""
+
+#: kleo/enum.cpp:62
+#, kde-format
+msgid "OpenPGP/MIME"
+msgstr ""
+
+#: kleo/enum.cpp:67 ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "S/MIME"
+msgstr ""
+
+#: kleo/enum.cpp:72
+#, kde-format
+msgid "S/MIME Opaque"
+msgstr ""
+
+#: kleo/enum.cpp:104
+#, kde-format
+msgid "Any"
+msgstr ""
+
+#: kleo/enum.cpp:177
+#, kde-format
+msgid "Never Encrypt"
+msgstr ""
+
+#: kleo/enum.cpp:179
+#, kde-format
+msgid "Always Encrypt"
+msgstr ""
+
+#: kleo/enum.cpp:181
+#, kde-format
+msgid "Always Encrypt If Possible"
+msgstr ""
+
+#: kleo/enum.cpp:183 kleo/enum.cpp:240
+#, kde-format
+msgid "Ask"
+msgstr ""
+
+#: kleo/enum.cpp:185 kleo/enum.cpp:242
+#, kde-format
+msgid "Ask Whenever Possible"
+msgstr ""
+
+#: kleo/enum.cpp:187
+#, kde-kuit-format
+msgctxt "no specific preference"
+msgid "<placeholder>none</placeholder>"
+msgstr ""
+
+#: kleo/enum.cpp:234
+#, kde-format
+msgid "Never Sign"
+msgstr ""
+
+#: kleo/enum.cpp:236
+#, kde-format
+msgid "Always Sign"
+msgstr ""
+
+#: kleo/enum.cpp:238
+#, kde-format
+msgid "Always Sign If Possible"
+msgstr ""
+
+#: kleo/enum.cpp:244
+#, kde-format
+msgctxt "no specific preference"
+msgid "<none>"
+msgstr ""
+
+#: kleo/keyfiltermanager.cpp:85
+#, kde-format
+msgid "All Certificates"
+msgstr ""
+
+#: kleo/keyfiltermanager.cpp:100
+#, kde-format
+msgid "My Certificates"
+msgstr ""
+
+#: kleo/keyfiltermanager.cpp:118
+#, kde-format
+msgid "Trusted Certificates"
+msgstr ""
+
+#: kleo/keyfiltermanager.cpp:135
+#, kde-format
+msgid "Fully Trusted Certificates"
+msgstr ""
+
+#: kleo/keyfiltermanager.cpp:152
+#, kde-format
+msgid "Other Certificates"
+msgstr ""
+
+#: kleo/keyfiltermanager.cpp:166
+#, kde-format
+msgid "VS-compliant Certificates"
+msgstr ""
+
+#: kleo/keyfiltermanager.cpp:184
+#, kde-format
+msgid "Not validated Certificates"
+msgstr ""
+
+#: ui/auditlogviewer.cpp:49
+#, kde-format
+msgid "View GnuPG Audit Log"
+msgstr ""
+
+#: ui/auditlogviewer.cpp:53
+#, kde-format
+msgid "&Copy to Clipboard"
+msgstr ""
+
+#: ui/auditlogviewer.cpp:59
+#, kde-format
+msgid "&Save to Disk..."
+msgstr ""
+
+#: ui/auditlogviewer.cpp:95
+#, kde-format
+msgid "Choose File to Save GnuPG Audit Log to"
+msgstr ""
+
+#: ui/auditlogviewer.cpp:118
+#, kde-format
+msgid "Could not save to file \"%1\": %2"
+msgstr ""
+
+#: ui/auditlogviewer.cpp:120
+#, kde-format
+msgid "File Save Error"
+msgstr ""
+
+#: ui/cryptoconfigdialog.cpp:44
+#, kde-format
+msgid "Configure GnuPG Backend"
+msgstr ""
+
+#: ui/cryptoconfigdialog.cpp:55
+#, kde-format
+msgid "&Reset"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:160
+#, kde-format
+msgid "GpgConf Error"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:216
+#, kde-format
+msgid ""
+"The gpgconf tool used to provide the information for this dialog does not "
+"seem to be installed properly. It did not return any components. Try running "
+"\"%1\" on the command line for more information."
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:496
+#, kde-format
+msgctxt ""
+"Translate this to 'yes' or 'no' (use the English words!) depending on "
+"whether your language uses Sentence style capitalisation in GUI labels (yes) "
+"or not (no). Context: We get some backend strings in that have the wrong "
+"capitalizaion (in English, at least) so we need to force the first character "
+"to upper-case. It is this behaviour you can control for your language with "
+"this translation."
+msgid "yes"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:546
+#, kde-format
+msgid "0 - None"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:547
+#, kde-format
+msgid "1 - Basic"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:548
+#, kde-format
+msgid "2 - Verbose"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:549
+#, kde-format
+msgid "3 - More Verbose"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:550
+#, kde-format
+msgid "4 - All"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:559
+#, kde-format
+msgid "Set the debugging level to"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:787
+#, kde-format
+msgid "Show..."
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:787 ui/cryptoconfigmodule.cpp:876
+#, kde-format
+msgid "Edit..."
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:841
+#, kde-format
+msgid "Configure LDAP Servers"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:862
+#, kde-format
+msgid "None configured"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:864
+#, kde-format
+msgid "1 server configured"
+msgid_plural "%1 servers configured"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ui/cryptoconfigmodule.cpp:879
+#, kde-format
+msgid "Use keyserver at"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:968
+#, kde-format
+msgid "Configure Keyservers"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:67
+#, kde-format
+msgctxt "default server name, keep it a valid domain name, ie. no spaces"
+msgid "server"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:95
+#, kde-format
+msgid "hkp"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:96
+#, kde-format
+msgid "http"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:97
+#, kde-format
+msgid "https"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:98
+#, kde-format
+msgid "ftp"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:99
+#, kde-format
+msgid "ftps"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:100
+#, kde-format
+msgid "ldap"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:101
+#, kde-format
+msgid "ldaps"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:588
+#, kde-format
+msgid "Server Name"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:589
+#, kde-format
+msgid "Server Port"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:590
+#, kde-format
+msgid "Base DN"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:591
+#, kde-format
+msgid "User Name"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:592
+#, kde-format
+msgid "Password"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:614
+#, kde-format
+msgid "(read-only)"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:616
+#, kde-format
+msgctxt "amended tooltip; %1: original tooltip"
+msgid "%1 (read-only)"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:739
+#, kde-format
+msgid ""
+"Enter the name or IP address of the server hosting the directory service."
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:741
+#, kde-format
+msgid ""
+"<b>(Optional, the default is fine in most cases)</b> Pick the port number "
+"the directory service is listening on."
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:744
+#, kde-format
+msgid ""
+"<b>(Only for LDAP)</b> Enter the base DN for this LDAP server to limit "
+"searches to only that subtree of the directory."
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:747
+#, kde-format
+msgid "<b>(Optional)</b> Enter your user name here, if needed."
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:749
+#, kde-format
+msgid ""
+"<b>(Optional, not recommended)</b> Enter your password here, if needed. Note "
+"that the password will be saved in the clear in a config file in your home "
+"directory."
+msgstr ""
+
+#. i18n: ectx: property (windowTitle), widget (QWidget, DirectoryServicesWidget)
+#: ui/directoryserviceswidget.ui:14
+#, kde-format
+msgid "Directory Services Configuration"
+msgstr ""
+
+#. i18n: ectx: property (text), widget (QLabel, pgpKSLabel)
+#: ui/directoryserviceswidget.ui:22
+#, kde-format
+msgid "OpenPGP Keyserver:"
+msgstr ""
+
+#. i18n: ectx: property (title), widget (QGroupBox, x500LA)
+#: ui/directoryserviceswidget.ui:35
+#, kde-format
+msgid "X509 Directory services:"
+msgstr ""
+
+#. i18n: ectx: property (whatsThis), widget (QTreeView, treeView)
+#: ui/directoryserviceswidget.ui:43
+#, kde-format
+msgid ""
+"This is a list of all directory services that are configured for use with "
+"X.509."
+msgstr ""
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:70
+#, kde-format
+msgid "Click to add a service"
+msgstr ""
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:73
+#, kde-format
+msgid ""
+"Click this button to create a new directory service entry as a clone of the "
+"currently selected one (or with default values, if no other is selected). "
+"You can then configure details in the table on the left hand."
+msgstr ""
+
+#. i18n: ectx: property (text), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:76
+#, kde-format
+msgid "New"
+msgstr ""
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:92
+#, kde-format
+msgid "Click to remove the currently selected service"
+msgstr ""
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:95
+#, kde-format
+msgid ""
+"Click this button to remove the currently selected directory service. The "
+"change will only take effect once you acknowledge the main configuration "
+"dialog."
+msgstr ""
+
+#. i18n: ectx: property (text), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:98
+#, kde-format
+msgid "Delete"
+msgstr ""
+
+#. i18n: ectx: property (whatsThis), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:128
+#, kde-format
+msgid ""
+"Use this option to switch display of username and password information on or "
+"off in the above table."
+msgstr ""
+
+#. i18n: ectx: property (text), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:131
+#, kde-format
+msgid "Show user and password information"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:73
+#, kde-format
+msgid "Description"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:91
+#, kde-format
+msgid "Available attributes:"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:92
+#, kde-format
+msgid "Current attribute order:"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:112
+#, kde-format
+msgid "All others"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:129
+#, kde-format
+msgid "Move to top"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:130
+#, kde-format
+msgid "Move one up"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:131
+#, kde-format
+msgid "Remove from current attribute order"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:132
+#, kde-format
+msgid "Add to current attribute order"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:133
+#, kde-format
+msgid "Move one down"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:134
+#, kde-format
+msgid "Move to bottom"
+msgstr ""
+
+#: ui/keyapprovaldialog.cpp:87
+#, kde-kuit-format
+msgid "<placeholder>none</placeholder>"
+msgstr ""
+
+#: ui/keyapprovaldialog.cpp:88
+#, kde-format
+msgid "Never Encrypt with This Key"
+msgstr ""
+
+#: ui/keyapprovaldialog.cpp:89
+#, kde-format
+msgid "Always Encrypt with This Key"
+msgstr ""
+
+#: ui/keyapprovaldialog.cpp:90
+#, kde-format
+msgid "Encrypt Whenever Encryption is Possible"
+msgstr ""
+
+#: ui/keyapprovaldialog.cpp:91
+#, kde-format
+msgid "Always Ask"
+msgstr ""
+
+#: ui/keyapprovaldialog.cpp:92
+#, kde-format
+msgid "Ask Whenever Encryption is Possible"
+msgstr ""
+
+#: ui/keyapprovaldialog.cpp:113
+#, kde-format
+msgid "Encryption Key Approval"
+msgstr ""
+
+#: ui/keyapprovaldialog.cpp:129
+#, kde-format
+msgid "The following keys will be used for encryption:"
+msgstr ""
+
+#: ui/keyapprovaldialog.cpp:145
+#, kde-format
+msgid "Your keys:"
+msgstr ""
+
+#: ui/keyapprovaldialog.cpp:157
+#, kde-format
+msgid "Recipient:"
+msgstr ""
+
+#: ui/keyapprovaldialog.cpp:162
+#, kde-format
+msgid "Encryption keys:"
+msgstr ""
+
+#: ui/keyapprovaldialog.cpp:169
+#, kde-format
+msgid "Encryption preference:"
+msgstr ""
+
+#: ui/keyrequester.cpp:118
+#, kde-format
+msgid "Clear"
+msgstr ""
+
+#: ui/keyrequester.cpp:121
+#, kde-format
+msgid "Change..."
+msgstr ""
+
+#: ui/keyrequester.cpp:232 ui/keyselectiondialog.cpp:256
+#, kde-kuit-format
+msgid "<placeholder>unknown</placeholder>"
+msgstr ""
+
+#: ui/keyrequester.cpp:246 ui/keyselectiondialog.cpp:657
+#, kde-format
+msgid ""
+"<qt><p>An error occurred while fetching the keys from the backend:</p><p><b>"
+"%1</b></p></qt>"
+msgstr ""
+
+#: ui/keyrequester.cpp:251 ui/keyrequester.cpp:283 ui/keyrequester.cpp:306
+#: ui/keyselectiondialog.cpp:630 ui/keyselectiondialog.cpp:662
+#, kde-format
+msgid "Key Listing Failed"
+msgstr ""
+
+#: ui/keyrequester.cpp:281
+#, kde-format
+msgid ""
+"The OpenPGP backend does not support listing keys. Check your installation."
+msgstr ""
+
+#: ui/keyrequester.cpp:304
+#, kde-format
+msgid ""
+"The S/MIME backend does not support listing keys. Check your installation."
+msgstr ""
+
+#: ui/keyrequester.cpp:426
+#, kde-format
+msgid "OpenPGP Key Selection"
+msgstr ""
+
+#: ui/keyrequester.cpp:427
+#, kde-format
+msgid "Please select an OpenPGP key to use."
+msgstr ""
+
+#: ui/keyrequester.cpp:429
+#, kde-format
+msgid "S/MIME Key Selection"
+msgstr ""
+
+#: ui/keyrequester.cpp:430
+#, kde-format
+msgid "Please select an S/MIME key to use."
+msgstr ""
+
+#: ui/keyrequester.cpp:432
+#, kde-format
+msgid "Key Selection"
+msgstr ""
+
+#: ui/keyrequester.cpp:433
+#, kde-format
+msgid "Please select an (OpenPGP or S/MIME) key to use."
+msgstr ""
+
+#: ui/keyselectioncombo.cpp:195
+#, kde-format
+msgctxt "Name <email> (validity, type, created: date)"
+msgid "%1 (%2, %3, created: %4)"
+msgstr ""
+
+#: ui/keyselectioncombo.cpp:196
+#, kde-format
+msgctxt "Name <email>"
+msgid "%1 <%2>"
+msgstr ""
+
+#: ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "OpenPGP"
+msgstr ""
+
+#: ui/keyselectioncombo.cpp:347
+#, kde-format
+msgid "Loading keys ..."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:98
+#, kde-format
+msgid "The key is not valid."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:106
+#, kde-format
+msgid "The key is expired."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:110
+#, kde-format
+msgid "The key is revoked."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:114
+#, kde-format
+msgid "The key is disabled."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:122
+#, kde-format
+msgid "The key is not designated for encryption."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:128
+#, kde-format
+msgid "The key is not designated for signing."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:134
+#, kde-format
+msgid "The key is not designated for certifying."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:140
+#, kde-format
+msgid "The key is not designated for authentication."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:148
+#, kde-format
+msgid "The key is not secret."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:163
+#, kde-format
+msgid "The key is not trusted enough."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:169
+#, kde-format
+msgid "The key can be used."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:230
+#, kde-format
+msgid "Key ID"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:231
+#, kde-format
+msgid "User ID"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:279
+#, kde-format
+msgid "never"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:289 ui/keyselectiondialog.cpp:291
+#: ui/keyselectiondialog.cpp:300 ui/keyselectiondialog.cpp:302
+#, kde-format
+msgid "unknown"
+msgstr "nepoznato"
+
+#: ui/keyselectiondialog.cpp:289
+#, kde-format
+msgid "OpenPGP key for <b>%1</b>"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:291
+#, kde-format
+msgid "S/MIME key for <b>%1</b>"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:298
+#, kde-format
+msgctxt "Key creation date"
+msgid "Created"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:299
+#, kde-format
+msgctxt "Key Expiration date"
+msgid "Expiry"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:300
+#, kde-format
+msgctxt "Key fingerprint"
+msgid "Fingerprint"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:302
+#, kde-format
+msgctxt "Key issuer"
+msgid "Issuer"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:304
+#, kde-format
+msgctxt "Key status"
+msgid "Status"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:456
+#, kde-format
+msgid "Search for &External Certificates"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:470
+#, kde-format
+msgid "&Search for:"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:494
+#, kde-format
+msgid "&Remember choice"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:497
+#, kde-format
+msgid ""
+"<qt><p>If you check this box your choice will be stored and you will not be "
+"asked again.</p></qt>"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:509
+#, kde-format
+msgid "&Reread Keys"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:510
+#, kde-format
+msgid "&Start Certificate Manager"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:628
+#, kde-format
+msgid "No backends found for listing keys. Check your installation."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:644
+#, kde-format
+msgid "Could not start certificate manager; please check your installation."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:646
+#, kde-format
+msgid "Certificate Manager Error"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Checking selected keys..."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Fetching keys..."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:731
+#, kde-format
+msgid ""
+"<qt>One backend returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgid_plural ""
+"<qt>%1 backends returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ui/keyselectiondialog.cpp:736
+#, kde-format
+msgid "Key List Result"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:856
+#, kde-format
+msgid "Recheck Key"
+msgstr ""
+
+#: ui/messagebox.cpp:71
+#, kde-format
+msgid "Your system does not have support for GnuPG Audit Logs"
+msgstr ""
+
+#: ui/messagebox.cpp:72
+#, kde-format
+msgid "System Error"
+msgstr ""
+
+#: ui/messagebox.cpp:79
+#, kde-format
+msgid ""
+"An error occurred while trying to retrieve the GnuPG Audit Log:\n"
+"%1"
+msgstr ""
+
+#: ui/messagebox.cpp:81
+#, kde-format
+msgid "GnuPG Audit Log Error"
+msgstr ""
+
+#: ui/messagebox.cpp:88
+#, kde-format
+msgid "No GnuPG Audit Log available for this operation."
+msgstr ""
+
+#: ui/messagebox.cpp:89
+#, kde-format
+msgid "No GnuPG Audit Log"
+msgstr ""
+
+#: ui/messagebox.cpp:109 ui/messagebox.cpp:115
+#, kde-format
+msgid "GnuPG Audit Log Viewer"
+msgstr ""
+
+#: ui/messagebox.cpp:121
+#, kde-format
+msgid "Signing failed: %1"
+msgstr ""
+
+#: ui/messagebox.cpp:122
+#, kde-format
+msgid "Signing successful"
+msgstr ""
+
+#: ui/messagebox.cpp:133
+#, kde-format
+msgid "Encryption failed: %1"
+msgstr ""
+
+#: ui/messagebox.cpp:134
+#, kde-format
+msgid "Encryption successful"
+msgstr ""
+
+#: ui/messagebox.cpp:155
+#, kde-format
+msgid "Signing Result"
+msgstr ""
+
+#: ui/messagebox.cpp:167
+#, kde-format
+msgid "Signing Error"
+msgstr ""
+
+#: ui/messagebox.cpp:179 ui/messagebox.cpp:203
+#, kde-format
+msgid "Encryption Result"
+msgstr ""
+
+#: ui/messagebox.cpp:191 ui/messagebox.cpp:215
+#, kde-format
+msgid "Encryption Error"
+msgstr ""
+
+#: ui/messagebox.cpp:263
+#, kde-format
+msgid "&Show Audit Log"
+msgstr ""
+
+#: ui/progressdialog.cpp:91
+#, kde-format
+msgid "%1: %2"
+msgstr ""
+
+#~ msgid "General"
+#~ msgstr "Općenito"
+
+#~ msgid "GpgME"
+#~ msgstr "GpgME"
--- /dev/null
+# Kristóf Kiszel <ulysses@kubuntu.org>, 2011.
+msgid ""
+msgstr ""
+"Project-Id-Version: KDE 4.3\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2017-07-12 06:56+0200\n"
+"PO-Revision-Date: 2011-12-03 15:09+0100\n"
+"Last-Translator: Kristóf Kiszel <ulysses@kubuntu.org>\n"
+"Language-Team: Hungarian <kde-l10n-hu@kde.org>\n"
+"Language: hu\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Lokalize 1.2\n"
+
+#: kleo/checksumdefinition.cpp:107
+#, kde-format
+msgid "Error in checksum definition %1: %2"
+msgstr "Hiba a(z) %1 ellenőrzőösszeg-definícióban: %2"
+
+#: kleo/checksumdefinition.cpp:157
+#, kde-format
+msgid "Cannot use both %f and | in '%1'"
+msgstr "Nem használható %f és | a következőben: „%1”"
+
+#: kleo/checksumdefinition.cpp:167
+#, kde-format
+msgid "Quoting error in '%1' entry"
+msgstr "Idézési hiba a(z) „%1” bejegyzésben"
+
+#: kleo/checksumdefinition.cpp:170
+#, kde-format
+msgid "'%1' too complex (would need shell)"
+msgstr "„%1” túl összetett (parancsértelmezőt igényelhet)"
+
+#: kleo/checksumdefinition.cpp:174
+#, kde-format
+msgid "'%1' entry is empty/missing"
+msgstr "A(z) „%1” bejegyzés üres/hiányzik"
+
+#: kleo/checksumdefinition.cpp:183
+#, kde-format
+msgid "'%1' empty or not found"
+msgstr "„%1” üres vagy nem található"
+
+#: kleo/checksumdefinition.cpp:222
+#, kde-format
+msgid "'id' entry is empty/missing"
+msgstr "Az „id” bejegyzés üres/hiányzik"
+
+#: kleo/checksumdefinition.cpp:225
+#, kde-format
+msgid "'output-file' entry is empty/missing"
+msgstr "Az „output-file” bejegyzés üres/hiányzik"
+
+#: kleo/checksumdefinition.cpp:228
+#, kde-format
+msgid "'file-patterns' entry is empty/missing"
+msgstr "A „file-patterns” bejegyzés üres/hiányzik"
+
+#: kleo/checksumdefinition.cpp:395
+#, kde-format
+msgid "Caught unknown exception in group %1"
+msgstr "Ismeretlen kivétel elkapva a(z) %1 csoportban"
+
+#: kleo/dn.cpp:507
+#, kde-format
+msgid "Common name"
+msgstr "Egyszerű név"
+
+#: kleo/dn.cpp:508
+#, kde-format
+msgid "Surname"
+msgstr "Vezetéknév"
+
+#: kleo/dn.cpp:509
+#, kde-format
+msgid "Given name"
+msgstr "Keresztnév"
+
+#: kleo/dn.cpp:510
+#, kde-format
+msgid "Location"
+msgstr "Hely"
+
+#: kleo/dn.cpp:511
+#, kde-format
+msgid "Title"
+msgstr "Beosztás"
+
+#: kleo/dn.cpp:512
+#, kde-format
+msgid "Organizational unit"
+msgstr "Szervezeti egység"
+
+#: kleo/dn.cpp:513
+#, kde-format
+msgid "Organization"
+msgstr "Szervezet"
+
+#: kleo/dn.cpp:514
+#, kde-format
+msgid "Postal code"
+msgstr "Irányítószám"
+
+#: kleo/dn.cpp:515
+#, kde-format
+msgid "Country code"
+msgstr "Országkód"
+
+#: kleo/dn.cpp:516
+#, kde-format
+msgid "State or province"
+msgstr "Állam"
+
+#: kleo/dn.cpp:517
+#, kde-format
+msgid "Domain component"
+msgstr "Tartománykomponens"
+
+#: kleo/dn.cpp:518
+#, kde-format
+msgid "Business category"
+msgstr "Üzleti kategória"
+
+#: kleo/dn.cpp:519
+#, kde-format
+msgid "Email address"
+msgstr "E-mail cím"
+
+#: kleo/dn.cpp:520
+#, kde-format
+msgid "Mail address"
+msgstr "Levelezési cím"
+
+#: kleo/dn.cpp:521
+#, kde-format
+msgid "Mobile phone number"
+msgstr "Mobiltelefon-szám"
+
+#: kleo/dn.cpp:522
+#, kde-format
+msgid "Telephone number"
+msgstr "Telefonszám"
+
+#: kleo/dn.cpp:523
+#, kde-format
+msgid "Fax number"
+msgstr "Faxszám"
+
+#: kleo/dn.cpp:524
+#, kde-format
+msgid "Street address"
+msgstr "Cím"
+
+#: kleo/dn.cpp:525
+#, kde-format
+msgid "Unique ID"
+msgstr "Egyedi azonosító"
+
+#: kleo/enum.cpp:57
+#, kde-format
+msgid "Inline OpenPGP (deprecated)"
+msgstr "Közvetlen OpenPGP (elavult)"
+
+#: kleo/enum.cpp:62
+#, kde-format
+msgid "OpenPGP/MIME"
+msgstr "OpenPGP/MIME"
+
+#: kleo/enum.cpp:67 ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "S/MIME"
+msgstr "S/MIME"
+
+#: kleo/enum.cpp:72
+#, kde-format
+msgid "S/MIME Opaque"
+msgstr "S/MIME (nem transzparens)"
+
+#: kleo/enum.cpp:104
+#, kde-format
+msgid "Any"
+msgstr "Bármely"
+
+#: kleo/enum.cpp:177
+#, kde-format
+msgid "Never Encrypt"
+msgstr "Titkosítás soha"
+
+#: kleo/enum.cpp:179
+#, kde-format
+msgid "Always Encrypt"
+msgstr "Titkosítás mindig"
+
+#: kleo/enum.cpp:181
+#, kde-format
+msgid "Always Encrypt If Possible"
+msgstr "Titkosítás mindig, amikor lehet"
+
+#: kleo/enum.cpp:183 kleo/enum.cpp:240
+#, kde-format
+msgid "Ask"
+msgstr "Rákérdezés"
+
+#: kleo/enum.cpp:185 kleo/enum.cpp:242
+#, kde-format
+msgid "Ask Whenever Possible"
+msgstr "Rákérdezés, amikor lehet"
+
+#: kleo/enum.cpp:187
+#, kde-kuit-format
+msgctxt "no specific preference"
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>nincs</placeholder>"
+
+#: kleo/enum.cpp:234
+#, kde-format
+msgid "Never Sign"
+msgstr "Aláírás soha"
+
+#: kleo/enum.cpp:236
+#, kde-format
+msgid "Always Sign"
+msgstr "Aláírás mindig"
+
+#: kleo/enum.cpp:238
+#, kde-format
+msgid "Always Sign If Possible"
+msgstr "Aláírás mindig, amikor lehet"
+
+#: kleo/enum.cpp:244
+#, kde-format
+msgctxt "no specific preference"
+msgid "<none>"
+msgstr "<nincs>"
+
+#: kleo/keyfiltermanager.cpp:85
+#, kde-format
+msgid "All Certificates"
+msgstr "Minden tanúsítvány"
+
+#: kleo/keyfiltermanager.cpp:100
+#, kde-format
+msgid "My Certificates"
+msgstr "Saját tanúsítványok"
+
+#: kleo/keyfiltermanager.cpp:118
+#, kde-format
+msgid "Trusted Certificates"
+msgstr "Megbízható tanúsítványok"
+
+#: kleo/keyfiltermanager.cpp:135
+#, fuzzy, kde-format
+#| msgid "Trusted Certificates"
+msgid "Fully Trusted Certificates"
+msgstr "Megbízható tanúsítványok"
+
+#: kleo/keyfiltermanager.cpp:152
+#, kde-format
+msgid "Other Certificates"
+msgstr "Egyéb tanúsítványok"
+
+#: kleo/keyfiltermanager.cpp:166
+#, fuzzy, kde-format
+#| msgid "All Certificates"
+msgid "VS-compliant Certificates"
+msgstr "Minden tanúsítvány"
+
+#: kleo/keyfiltermanager.cpp:184
+#, fuzzy, kde-format
+#| msgid "Trusted Certificates"
+msgid "Not validated Certificates"
+msgstr "Megbízható tanúsítványok"
+
+#: ui/auditlogviewer.cpp:49
+#, kde-format
+msgid "View GnuPG Audit Log"
+msgstr "GnuPG ellenőrzési napló"
+
+#: ui/auditlogviewer.cpp:53
+#, kde-format
+msgid "&Copy to Clipboard"
+msgstr "Más&olás a vágólapra"
+
+#: ui/auditlogviewer.cpp:59
+#, kde-format
+msgid "&Save to Disk..."
+msgstr "Mentés leme&zre..."
+
+#: ui/auditlogviewer.cpp:95
+#, kde-format
+msgid "Choose File to Save GnuPG Audit Log to"
+msgstr "Válassza ki, melyik fájlba szeretné menteni a GnuPG ellenőrzési naplót"
+
+#: ui/auditlogviewer.cpp:118
+#, kde-format
+msgid "Could not save to file \"%1\": %2"
+msgstr "Nem sikerült menteni ezt fájlt: \"%1\". %2"
+
+#: ui/auditlogviewer.cpp:120
+#, kde-format
+msgid "File Save Error"
+msgstr "Fájlmentési hiba"
+
+#: ui/cryptoconfigdialog.cpp:44
+#, kde-format
+msgid "Configure GnuPG Backend"
+msgstr "A GnuPG modul beállítása"
+
+#: ui/cryptoconfigdialog.cpp:55
+#, kde-format
+msgid "&Reset"
+msgstr "&Alapállapotba"
+
+#: ui/cryptoconfigmodule.cpp:160
+#, kde-format
+msgid "GpgConf Error"
+msgstr "GpgConf-hiba"
+
+#: ui/cryptoconfigmodule.cpp:216
+#, kde-format
+msgid ""
+"The gpgconf tool used to provide the information for this dialog does not "
+"seem to be installed properly. It did not return any components. Try running "
+"\"%1\" on the command line for more information."
+msgstr ""
+"A gpgconf eszköz, amelyre ennek az ablaknak szüksége van, nincs megfelelően "
+"telepítve. Egy komponens sem érhető el. További információ kapható ezzel a "
+"paranccsal: \"%1\"."
+
+#: ui/cryptoconfigmodule.cpp:496
+#, kde-format
+msgctxt ""
+"Translate this to 'yes' or 'no' (use the English words!) depending on "
+"whether your language uses Sentence style capitalisation in GUI labels (yes) "
+"or not (no). Context: We get some backend strings in that have the wrong "
+"capitalizaion (in English, at least) so we need to force the first character "
+"to upper-case. It is this behaviour you can control for your language with "
+"this translation."
+msgid "yes"
+msgstr "no"
+
+#: ui/cryptoconfigmodule.cpp:546
+#, kde-format
+msgid "0 - None"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:547
+#, kde-format
+msgid "1 - Basic"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:548
+#, kde-format
+msgid "2 - Verbose"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:549
+#, kde-format
+msgid "3 - More Verbose"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:550
+#, kde-format
+msgid "4 - All"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:559
+#, kde-format
+msgid "Set the debugging level to"
+msgstr "Nyomkövetési szint"
+
+#: ui/cryptoconfigmodule.cpp:787
+#, kde-format
+msgid "Show..."
+msgstr "Megjelenítés..."
+
+#: ui/cryptoconfigmodule.cpp:787 ui/cryptoconfigmodule.cpp:876
+#, kde-format
+msgid "Edit..."
+msgstr "Szerkesztés..."
+
+#: ui/cryptoconfigmodule.cpp:841
+#, kde-format
+msgid "Configure LDAP Servers"
+msgstr "LDAP-kiszolgálók beállítása"
+
+#: ui/cryptoconfigmodule.cpp:862
+#, fuzzy, kde-format
+#| msgid "No server configured yet"
+msgid "None configured"
+msgstr "Még egy kiszolgáló sincs beállítva"
+
+#: ui/cryptoconfigmodule.cpp:864
+#, kde-format
+msgid "1 server configured"
+msgid_plural "%1 servers configured"
+msgstr[0] "1 kiszolgáló van beállítva"
+msgstr[1] "%1 kiszolgáló van beállítva"
+
+#: ui/cryptoconfigmodule.cpp:879
+#, kde-format
+msgid "Use keyserver at"
+msgstr "Kulcskiszolgáló használata itt"
+
+#: ui/cryptoconfigmodule.cpp:968
+#, kde-format
+msgid "Configure Keyservers"
+msgstr "Kulcskiszolgálók beállítása"
+
+#: ui/directoryserviceswidget.cpp:67
+#, kde-format
+msgctxt "default server name, keep it a valid domain name, ie. no spaces"
+msgid "server"
+msgstr "kiszolgálónév"
+
+#: ui/directoryserviceswidget.cpp:95
+#, kde-format
+msgid "hkp"
+msgstr "hkp"
+
+#: ui/directoryserviceswidget.cpp:96
+#, kde-format
+msgid "http"
+msgstr "http"
+
+#: ui/directoryserviceswidget.cpp:97
+#, kde-format
+msgid "https"
+msgstr "https"
+
+#: ui/directoryserviceswidget.cpp:98
+#, kde-format
+msgid "ftp"
+msgstr "ftp"
+
+#: ui/directoryserviceswidget.cpp:99
+#, kde-format
+msgid "ftps"
+msgstr "ftps"
+
+#: ui/directoryserviceswidget.cpp:100
+#, kde-format
+msgid "ldap"
+msgstr "ldap"
+
+#: ui/directoryserviceswidget.cpp:101
+#, kde-format
+msgid "ldaps"
+msgstr "ldaps"
+
+#: ui/directoryserviceswidget.cpp:588
+#, kde-format
+msgid "Server Name"
+msgstr "Kiszolgálónév"
+
+#: ui/directoryserviceswidget.cpp:589
+#, kde-format
+msgid "Server Port"
+msgstr "Port"
+
+#: ui/directoryserviceswidget.cpp:590
+#, kde-format
+msgid "Base DN"
+msgstr "Alap DN"
+
+#: ui/directoryserviceswidget.cpp:591
+#, kde-format
+msgid "User Name"
+msgstr "Felhasználónév"
+
+#: ui/directoryserviceswidget.cpp:592
+#, kde-format
+msgid "Password"
+msgstr "Jelszó"
+
+#: ui/directoryserviceswidget.cpp:614
+#, kde-format
+msgid "(read-only)"
+msgstr "(csak olvasható)"
+
+#: ui/directoryserviceswidget.cpp:616
+#, kde-format
+msgctxt "amended tooltip; %1: original tooltip"
+msgid "%1 (read-only)"
+msgstr "%1 (csak olvasható)"
+
+#: ui/directoryserviceswidget.cpp:739
+#, kde-format
+msgid ""
+"Enter the name or IP address of the server hosting the directory service."
+msgstr "Adja meg a címtárszolgáltató kiszolgáló gépnevét vagy IP-címét."
+
+#: ui/directoryserviceswidget.cpp:741
+#, kde-format
+msgid ""
+"<b>(Optional, the default is fine in most cases)</b> Pick the port number "
+"the directory service is listening on."
+msgstr ""
+"<b>(Opcionális, az alapértelmezés általában megfelelő)</b> Adja meg a "
+"címtárszolgáltatás fogadási portját."
+
+#: ui/directoryserviceswidget.cpp:744
+#, kde-format
+msgid ""
+"<b>(Only for LDAP)</b> Enter the base DN for this LDAP server to limit "
+"searches to only that subtree of the directory."
+msgstr ""
+"<b>(Csak LDAP protokoll esetén)</b> Adja meg az alap DN-nevet (a keresések "
+"csak ebben a részfában hajtódnak végre)."
+
+#: ui/directoryserviceswidget.cpp:747
+#, kde-format
+msgid "<b>(Optional)</b> Enter your user name here, if needed."
+msgstr ""
+"<b>(Opcionális)</b> Ha szükséges, írja be itt az elérési felhasználónevet."
+
+#: ui/directoryserviceswidget.cpp:749
+#, kde-format
+msgid ""
+"<b>(Optional, not recommended)</b> Enter your password here, if needed. Note "
+"that the password will be saved in the clear in a config file in your home "
+"directory."
+msgstr ""
+"<b>(Opcionális, általában nem ajánlott)</b> Írja be az elérési jelszót, ha "
+"szükséges. A jelszó egyszerű szöveges fájlba lesz elmentve a felhasználó "
+"saját mappájába."
+
+#. i18n: ectx: property (windowTitle), widget (QWidget, DirectoryServicesWidget)
+#: ui/directoryserviceswidget.ui:14
+#, kde-format
+msgid "Directory Services Configuration"
+msgstr "A címtárszolgálatások beállításai"
+
+#. i18n: ectx: property (text), widget (QLabel, pgpKSLabel)
+#: ui/directoryserviceswidget.ui:22
+#, fuzzy, kde-format
+#| msgid "OpenPGP Key Selection"
+msgid "OpenPGP Keyserver:"
+msgstr "OpenPGP kulcsválasztás"
+
+#. i18n: ectx: property (title), widget (QGroupBox, x500LA)
+#: ui/directoryserviceswidget.ui:35
+#, fuzzy, kde-format
+#| msgid "Directory services:"
+msgid "X509 Directory services:"
+msgstr "Címtárszolgáltatások:"
+
+#. i18n: ectx: property (whatsThis), widget (QTreeView, treeView)
+#: ui/directoryserviceswidget.ui:43
+#, fuzzy, kde-format
+#| msgid ""
+#| "This is a list of all directory services that are configured for use with "
+#| "X.509 and OpenPGP."
+msgid ""
+"This is a list of all directory services that are configured for use with "
+"X.509."
+msgstr ""
+"Itt láthatók felsorolva azok a címtárszolgáltatások, amelyek használhatóak "
+"X.509-ben és OpenPGP-ben."
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:70
+#, kde-format
+msgid "Click to add a service"
+msgstr "Kattintsn ide szolgáltatás felvételéhez"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:73
+#, kde-format
+msgid ""
+"Click this button to create a new directory service entry as a clone of the "
+"currently selected one (or with default values, if no other is selected). "
+"You can then configure details in the table on the left hand."
+msgstr ""
+"Ha ide kattint, létrejön egy új címtárszolgáltatási bejegyzés a kijelölt "
+"bejegyzés másolataként (vagy az alapértelmezett értékekkel, ha semmi sincs "
+"kijelölve). Az új bejegyzés beállításai a bal oldali táblázatban "
+"módosíthatók."
+
+#. i18n: ectx: property (text), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:76
+#, kde-format
+msgid "New"
+msgstr "Új"
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:92
+#, kde-format
+msgid "Click to remove the currently selected service"
+msgstr "Kattintson ide a kijelölt szolgáltatás eltávolításához"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:95
+#, kde-format
+msgid ""
+"Click this button to remove the currently selected directory service. The "
+"change will only take effect once you acknowledge the main configuration "
+"dialog."
+msgstr ""
+"Ha ide kattint, törlődik a kijelölt címtárszolgáltatási bejegyzés. A törlés "
+"csak akkor lesz végleges, ha a fő párbeszédablakban elfogadja a változásokat."
+
+#. i18n: ectx: property (text), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:98
+#, kde-format
+msgid "Delete"
+msgstr "Törlés"
+
+#. i18n: ectx: property (whatsThis), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:128
+#, kde-format
+msgid ""
+"Use this option to switch display of username and password information on or "
+"off in the above table."
+msgstr ""
+"Itt lehet beállítani, hogy a fenti táblázatban látható legyen-e a "
+"felhasználónév és a jelszó."
+
+#. i18n: ectx: property (text), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:131
+#, kde-format
+msgid "Show user and password information"
+msgstr "A felhasználónév és a jelszó megjelenítése"
+
+#: ui/dnattributeorderconfigwidget.cpp:73
+#, kde-format
+msgid "Description"
+msgstr "Leírás"
+
+#: ui/dnattributeorderconfigwidget.cpp:91
+#, kde-format
+msgid "Available attributes:"
+msgstr "A rendelkezésre álló attribútumok:"
+
+#: ui/dnattributeorderconfigwidget.cpp:92
+#, kde-format
+msgid "Current attribute order:"
+msgstr "A jelenlegi attribútumsorrend:"
+
+#: ui/dnattributeorderconfigwidget.cpp:112
+#, kde-format
+msgid "All others"
+msgstr "Az összes többi"
+
+#: ui/dnattributeorderconfigwidget.cpp:129
+#, kde-format
+msgid "Move to top"
+msgstr "Mozgatás legfelülre"
+
+#: ui/dnattributeorderconfigwidget.cpp:130
+#, kde-format
+msgid "Move one up"
+msgstr "Mozgatás eggyel feljebb"
+
+#: ui/dnattributeorderconfigwidget.cpp:131
+#, kde-format
+msgid "Remove from current attribute order"
+msgstr "Eltávolítás az attribútumsorrendből"
+
+#: ui/dnattributeorderconfigwidget.cpp:132
+#, kde-format
+msgid "Add to current attribute order"
+msgstr "Hozzáadás az attribútumsorrendhez"
+
+#: ui/dnattributeorderconfigwidget.cpp:133
+#, kde-format
+msgid "Move one down"
+msgstr "Mozgatás eggyel lejjebb"
+
+#: ui/dnattributeorderconfigwidget.cpp:134
+#, kde-format
+msgid "Move to bottom"
+msgstr "Mozgatás legalulra"
+
+#: ui/keyapprovaldialog.cpp:87
+#, kde-kuit-format
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>nincs</placeholder>"
+
+#: ui/keyapprovaldialog.cpp:88
+#, kde-format
+msgid "Never Encrypt with This Key"
+msgstr "Titkosítás ezzel a kulccsal - soha"
+
+#: ui/keyapprovaldialog.cpp:89
+#, kde-format
+msgid "Always Encrypt with This Key"
+msgstr "Titkosítás ezzel a kulccsal - mindig"
+
+#: ui/keyapprovaldialog.cpp:90
+#, kde-format
+msgid "Encrypt Whenever Encryption is Possible"
+msgstr "Titkosítás ezzel a kulccsal - mindig, amikor lehetséges"
+
+#: ui/keyapprovaldialog.cpp:91
+#, kde-format
+msgid "Always Ask"
+msgstr "Rákérdezés mindig"
+
+#: ui/keyapprovaldialog.cpp:92
+#, kde-format
+msgid "Ask Whenever Encryption is Possible"
+msgstr "Rákérdezés mindig, amikor titkosítás lehetséges"
+
+#: ui/keyapprovaldialog.cpp:113
+#, kde-format
+msgid "Encryption Key Approval"
+msgstr "A titkosítási kulcs jóváhagyása"
+
+#: ui/keyapprovaldialog.cpp:129
+#, kde-format
+msgid "The following keys will be used for encryption:"
+msgstr "A következő kulcsok lesznek felhasználva titkosításhoz:"
+
+#: ui/keyapprovaldialog.cpp:145
+#, kde-format
+msgid "Your keys:"
+msgstr "Az Ön kulcsai:"
+
+#: ui/keyapprovaldialog.cpp:157
+#, kde-format
+msgid "Recipient:"
+msgstr "Címzett:"
+
+#: ui/keyapprovaldialog.cpp:162
+#, kde-format
+msgid "Encryption keys:"
+msgstr "Titkosítási kulcsok:"
+
+#: ui/keyapprovaldialog.cpp:169
+#, kde-format
+msgid "Encryption preference:"
+msgstr "Titkosítási preferencia:"
+
+#: ui/keyrequester.cpp:118
+#, kde-format
+msgid "Clear"
+msgstr "Törlés"
+
+#: ui/keyrequester.cpp:121
+#, kde-format
+msgid "Change..."
+msgstr "Módosítás..."
+
+#: ui/keyrequester.cpp:232 ui/keyselectiondialog.cpp:256
+#, kde-kuit-format
+msgid "<placeholder>unknown</placeholder>"
+msgstr "<placeholder>ismeretlen</placeholder>"
+
+#: ui/keyrequester.cpp:246 ui/keyselectiondialog.cpp:657
+#, kde-format
+msgid ""
+"<qt><p>An error occurred while fetching the keys from the backend:</p><p><b>"
+"%1</b></p></qt>"
+msgstr ""
+"<qt><p>Hiba történt a kulcsok letöltése közben:</p><p><b>%1</b></p></qt>"
+
+#: ui/keyrequester.cpp:251 ui/keyrequester.cpp:283 ui/keyrequester.cpp:306
+#: ui/keyselectiondialog.cpp:630 ui/keyselectiondialog.cpp:662
+#, kde-format
+msgid "Key Listing Failed"
+msgstr "A kulcsok kilistázása nem sikerült"
+
+#: ui/keyrequester.cpp:281
+#, kde-format
+msgid ""
+"The OpenPGP backend does not support listing keys. Check your installation."
+msgstr ""
+"Az OpenPGP-backend nem támogatja a kulcsok kilistázását. Ellenőrizze, minden "
+"rendben fel van-e telepítve."
+
+#: ui/keyrequester.cpp:304
+#, kde-format
+msgid ""
+"The S/MIME backend does not support listing keys. Check your installation."
+msgstr ""
+"Az S/MIME-backend nem támogatja a kulcsok kilistázását. Ellenőrizze, minden "
+"rendben fel van-e telepítve."
+
+#: ui/keyrequester.cpp:426
+#, kde-format
+msgid "OpenPGP Key Selection"
+msgstr "OpenPGP kulcsválasztás"
+
+#: ui/keyrequester.cpp:427
+#, kde-format
+msgid "Please select an OpenPGP key to use."
+msgstr "Válassza ki a használni kívánt OpenPGP-kulcsot."
+
+#: ui/keyrequester.cpp:429
+#, kde-format
+msgid "S/MIME Key Selection"
+msgstr "S/MIME kulcsválasztás"
+
+#: ui/keyrequester.cpp:430
+#, kde-format
+msgid "Please select an S/MIME key to use."
+msgstr "Válassza ki a használni kívánt S/MIME-kulcsot."
+
+#: ui/keyrequester.cpp:432
+#, kde-format
+msgid "Key Selection"
+msgstr "Kulcsválasztás"
+
+#: ui/keyrequester.cpp:433
+#, kde-format
+msgid "Please select an (OpenPGP or S/MIME) key to use."
+msgstr "Válassza ki a használni kívánt (OpenPGP- vagy S/MIME-) kulcsot."
+
+#: ui/keyselectioncombo.cpp:195
+#, kde-format
+msgctxt "Name <email> (validity, type, created: date)"
+msgid "%1 (%2, %3, created: %4)"
+msgstr ""
+
+#: ui/keyselectioncombo.cpp:196
+#, kde-format
+msgctxt "Name <email>"
+msgid "%1 <%2>"
+msgstr ""
+
+#: ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "OpenPGP"
+msgstr "OpenPGP"
+
+#: ui/keyselectioncombo.cpp:347
+#, fuzzy, kde-format
+#| msgid "Fetching keys..."
+msgid "Loading keys ..."
+msgstr "A kulcsok letöltése..."
+
+#: ui/keyselectiondialog.cpp:98
+#, kde-format
+msgid "The key is not valid."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:106
+#, kde-format
+msgid "The key is expired."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:110
+#, kde-format
+msgid "The key is revoked."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:114
+#, kde-format
+msgid "The key is disabled."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:122
+#, fuzzy, kde-format
+#| msgid "The following keys will be used for encryption:"
+msgid "The key is not designated for encryption."
+msgstr "A következő kulcsok lesznek felhasználva titkosításhoz:"
+
+#: ui/keyselectiondialog.cpp:128
+#, kde-format
+msgid "The key is not designated for signing."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:134
+#, kde-format
+msgid "The key is not designated for certifying."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:140
+#, kde-format
+msgid "The key is not designated for authentication."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:148
+#, kde-format
+msgid "The key is not secret."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:163
+#, kde-format
+msgid "The key is not trusted enough."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:169
+#, kde-format
+msgid "The key can be used."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:230
+#, kde-format
+msgid "Key ID"
+msgstr "Kulcsazonosító"
+
+#: ui/keyselectiondialog.cpp:231
+#, kde-format
+msgid "User ID"
+msgstr "Felhasználóazonosító"
+
+#: ui/keyselectiondialog.cpp:279
+#, kde-format
+msgid "never"
+msgstr "soha"
+
+#: ui/keyselectiondialog.cpp:289 ui/keyselectiondialog.cpp:291
+#: ui/keyselectiondialog.cpp:300 ui/keyselectiondialog.cpp:302
+#, kde-format
+msgid "unknown"
+msgstr "ismeretlen"
+
+#: ui/keyselectiondialog.cpp:289
+#, kde-format
+msgid "OpenPGP key for <b>%1</b>"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:291
+#, kde-format
+msgid "S/MIME key for <b>%1</b>"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:298
+#, kde-format
+msgctxt "Key creation date"
+msgid "Created"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:299
+#, kde-format
+msgctxt "Key Expiration date"
+msgid "Expiry"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:300
+#, kde-format
+msgctxt "Key fingerprint"
+msgid "Fingerprint"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:302
+#, kde-format
+msgctxt "Key issuer"
+msgid "Issuer"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:304
+#, kde-format
+msgctxt "Key status"
+msgid "Status"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:456
+#, kde-format
+msgid "Search for &External Certificates"
+msgstr "Külső tanúsítványok k&eresése"
+
+#: ui/keyselectiondialog.cpp:470
+#, kde-format
+msgid "&Search for:"
+msgstr "&Keresés:"
+
+#: ui/keyselectiondialog.cpp:494
+#, kde-format
+msgid "&Remember choice"
+msgstr "A választás me&gjegyzése"
+
+#: ui/keyselectiondialog.cpp:497
+#, kde-format
+msgid ""
+"<qt><p>If you check this box your choice will be stored and you will not be "
+"asked again.</p></qt>"
+msgstr ""
+"<qt><p>Ha bejelöli ezt az opciót, a program megjegyzi azt, és nem fog többé "
+"rákérdezni.</p></qt>"
+
+#: ui/keyselectiondialog.cpp:509
+#, kde-format
+msgid "&Reread Keys"
+msgstr "A kulcsok újra&olvasása"
+
+#: ui/keyselectiondialog.cpp:510
+#, kde-format
+msgid "&Start Certificate Manager"
+msgstr "&Tanúsítványkezelő"
+
+#: ui/keyselectiondialog.cpp:628
+#, kde-format
+msgid "No backends found for listing keys. Check your installation."
+msgstr ""
+"Nem található egy backend sem a kulcsok kilistázásához. Ellenőrizze, minden "
+"rendben fel van-e telepítve."
+
+#: ui/keyselectiondialog.cpp:644
+#, kde-format
+msgid "Could not start certificate manager; please check your installation."
+msgstr ""
+"Nem sikerült elindítani a tanúsítványkezelőt. Ellenőrizze, megfelelően van-e "
+"telepítve a program."
+
+#: ui/keyselectiondialog.cpp:646
+#, kde-format
+msgid "Certificate Manager Error"
+msgstr "Hiba a tanúsítványkezelőben"
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Checking selected keys..."
+msgstr "A kiválasztott kulcsok ellenőrzése..."
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Fetching keys..."
+msgstr "A kulcsok letöltése..."
+
+#: ui/keyselectiondialog.cpp:731
+#, kde-format
+msgid ""
+"<qt>One backend returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgid_plural ""
+"<qt>%1 backends returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgstr[0] ""
+"<qt>1 modul lerövidített kimenetet adott vissza.<p>Nem lesz kilistázva az "
+"összes kulcs</p></qt>"
+msgstr[1] ""
+"<qt>%1 modul lerövidített kimenetet adott vissza.<p>Nem lesz kilistázva az "
+"összes kulcs</p></qt>"
+
+#: ui/keyselectiondialog.cpp:736
+#, kde-format
+msgid "Key List Result"
+msgstr "A kulcslistázás eredménye"
+
+#: ui/keyselectiondialog.cpp:856
+#, kde-format
+msgid "Recheck Key"
+msgstr "A kulcs újraellenőrzése"
+
+#: ui/messagebox.cpp:71
+#, kde-format
+msgid "Your system does not have support for GnuPG Audit Logs"
+msgstr "A rendszer nem támogatja GnuPG ellenőrzési naplófájlok használatát"
+
+#: ui/messagebox.cpp:72
+#, kde-format
+msgid "System Error"
+msgstr "Rendszerhiba"
+
+#: ui/messagebox.cpp:79
+#, kde-format
+msgid ""
+"An error occurred while trying to retrieve the GnuPG Audit Log:\n"
+"%1"
+msgstr ""
+"Hiba történt a GnuPG auditálási napló elérésekor:\n"
+"%1"
+
+#: ui/messagebox.cpp:81
+#, kde-format
+msgid "GnuPG Audit Log Error"
+msgstr "Hiba a GnuPG auditálási naplónál"
+
+#: ui/messagebox.cpp:88
+#, kde-format
+msgid "No GnuPG Audit Log available for this operation."
+msgstr "Nincs elérhető GnuPG ellenőrzési napló a művelethez."
+
+#: ui/messagebox.cpp:89
+#, kde-format
+msgid "No GnuPG Audit Log"
+msgstr "Nincs GnuPG ellenőrzési napló"
+
+#: ui/messagebox.cpp:109 ui/messagebox.cpp:115
+#, kde-format
+msgid "GnuPG Audit Log Viewer"
+msgstr "GnuPG ellenőrzési napló"
+
+#: ui/messagebox.cpp:121
+#, kde-format
+msgid "Signing failed: %1"
+msgstr "Az aláírás nem sikerült: %1"
+
+#: ui/messagebox.cpp:122
+#, kde-format
+msgid "Signing successful"
+msgstr "Az aláírás sikerült"
+
+#: ui/messagebox.cpp:133
+#, kde-format
+msgid "Encryption failed: %1"
+msgstr "A titkosítás nem sikerült: %1"
+
+#: ui/messagebox.cpp:134
+#, kde-format
+msgid "Encryption successful"
+msgstr "A titkosítás sikerült"
+
+#: ui/messagebox.cpp:155
+#, kde-format
+msgid "Signing Result"
+msgstr "Az eredmény aláírása"
+
+#: ui/messagebox.cpp:167
+#, kde-format
+msgid "Signing Error"
+msgstr "Aláírási hiba"
+
+#: ui/messagebox.cpp:179 ui/messagebox.cpp:203
+#, kde-format
+msgid "Encryption Result"
+msgstr "A titkosítás eredménye"
+
+#: ui/messagebox.cpp:191 ui/messagebox.cpp:215
+#, kde-format
+msgid "Encryption Error"
+msgstr "Titkosítási hiba"
+
+#: ui/messagebox.cpp:263
+#, kde-format
+msgid "&Show Audit Log"
+msgstr "&Ellenőrzési napló"
+
+#: ui/progressdialog.cpp:91
+#, kde-format
+msgid "%1: %2"
+msgstr "%1: %2"
+
+#~ msgctxt "New X.509 Directory Server"
+#~ msgid "X.509"
+#~ msgstr "X.509"
+
+#~ msgctxt "New OpenPGP Directory Server"
+#~ msgid "OpenPGP"
+#~ msgstr "OpenPGP"
+
+#~ msgid "Scheme"
+#~ msgstr "Séma"
+
+#~ msgid "X.509"
+#~ msgstr "X.509"
+
+#, fuzzy
+#~| msgid ""
+#~| "Select the access protocol (scheme) that the directory service is "
+#~| "available through."
+#~ msgid ""
+#~ "Select the access scheme (scheme) that the directory service is available "
+#~ "through."
+#~ msgstr ""
+#~ "Válassza ki, milyen hozzáférési sémát kell használni a címtárszolgáltatás "
+#~ "eléréséhez."
+
+#~ msgid ""
+#~ "Check this column if this directory service is providing S/MIME (X.509) "
+#~ "certificates."
+#~ msgstr ""
+#~ "Jelölje be ezt az oszlopot, ha a címtárszolgáltatás S/MIME (X.509) "
+#~ "formátumú tanúsítványokat tud szolgáltatni."
+
+#~ msgid ""
+#~ "Check this column if this directory service is providing OpenPGP "
+#~ "certificates."
+#~ msgstr ""
+#~ "Jelölje be ezt az oszlopot, ha a címtárszolgáltatás OpenPGP formátumú "
+#~ "tanúsítványokat tud szolgáltatni."
+
+#~ msgid "0 - None (no debugging at all)"
+#~ msgstr "0- Nincs (egyáltalán nincs nyomkövetés)"
+
+#~ msgid "1 - Basic (some basic debug messages)"
+#~ msgstr "1- Alap (csak az alap nyomkövetési üzenetek)"
+
+#~ msgid "2 - Advanced (more verbose debug messages)"
+#~ msgstr "2- Részletes (részletesebb üzenetek)"
+
+#~ msgid "3 - Expert (even more detailed messages)"
+#~ msgstr "3 - Szakértői (még részletesebb üzenetek)"
+
+#~ msgid "4 - Guru (all of the debug messages you can get)"
+#~ msgstr "4 - Guru (minden lehetséges üzenet)"
+
+#~ msgid "General"
+#~ msgstr "Általános"
+
+#~ msgid "Chiasmus"
+#~ msgstr "Chiasmus"
+
+#~ msgid "Chiasmus command line tool"
+#~ msgstr "Chiasmus parancssoros eszköz"
+
+#~ msgid "Unsupported protocol \"%1\""
+#~ msgstr "Nem támogatott protokoll: \"%1\""
+
+#~ msgid "File \"%1\" does not exist or is not executable."
+#~ msgstr "Nem létezik \"%1\" nevű fájl vagy nem végrehajtható attribútumú."
+
+#~ msgid "Output from chiasmus"
+#~ msgstr "Kimenet a chiasmusból"
+
+#~ msgid "Decryption failed: %1"
+#~ msgstr "A dekódolás nem sikerült: %1"
+
+#~ msgid ""
+#~ "The following was received on stderr:\n"
+#~ "%1"
+#~ msgstr ""
+#~ "A következő lett kiírva az stderr kimenetre:\n"
+#~ "%1"
+
+#~ msgid "Failed to load %1: %2"
+#~ msgstr "Nem sikerült betölteni: %1 - %2"
+
+#~ msgid "Library does not contain the symbol \"Chiasmus\"."
+#~ msgstr "A programkönyvtár nem tartalmazza a \"Chiasmus\" szimbólumot."
+
+#~ msgid "Scanning directory %1..."
+#~ msgstr "A(z) %1 könyvtár feldolgozása folyik..."
+
+#~ msgid "GpgME"
+#~ msgstr "GpgME"
+
+#~ msgid "GPGME was compiled without support for %1."
+#~ msgstr "A GPGME %1-támogatás nélkül lett lefordítva."
+
+#~ msgid "Engine %1 is not installed properly."
+#~ msgstr "A(z) %1-motor nincs megfelelően telepítve."
+
+#~ msgid "Engine %1 version %2 installed, but at least version %3 is required."
+#~ msgstr ""
+#~ "A(z) %1-motor (verzió: %2) fel van telepítve, de legalább ilyen verzió "
+#~ "szükséges: %3."
+
+#~ msgid "Unknown problem with engine for protocol %1."
+#~ msgstr "Ismeretlen probléma történt a(z) %1 protokollnál a motorban."
+
+#~ msgid "program terminated unexpectedly"
+#~ msgstr "a program futása váratlanul befejeződött"
+
+#~ msgid "program not found or cannot be started"
+#~ msgstr "a program nem található vagy nem indítható el"
+
+#~ msgid "<qt>Failed to execute gpgconf:<p>%1</p></qt>"
+#~ msgstr "<qt>A gpgconf-ot nem sikerült elindítani:<p>%1</p></qt>"
+
+#~ msgid ""
+#~ "Could not start gpgconf.\n"
+#~ "Check that gpgconf is in the PATH and that it can be started."
+#~ msgstr ""
+#~ "A gpgconf-ot nem sikerült elindítani.\n"
+#~ "Ellenőrizze, hogy a gpgconf szerepel-e az elérési útban (PATH változó) és "
+#~ "végrehajtható-e."
+
+#~ msgid "Error from gpgconf while saving configuration: %1"
+#~ msgstr "Hiba történt a gpgconf-ban a beállítások mentésekor: %1"
+
+#~ msgid "Generating DSA key..."
+#~ msgstr "DSA-kulcs generálása történik..."
+
+#~ msgid "Generating ElGamal key..."
+#~ msgstr "ElGamal-kulcs generálása történik..."
+
+#~ msgid "Searching for a large prime number..."
+#~ msgstr "Nagy prímszám keresése folyik..."
+
+#~ msgid ""
+#~ "Waiting for new entropy from random number generator (you might want to "
+#~ "exercise the harddisks or move the mouse)..."
+#~ msgstr ""
+#~ "Várakozás új entrópiára a véletlenszám-generátortól. A jobb eredmény "
+#~ "érdekében mozgassa meg egy kicsit az egeret vagy végezzen lemezműveletet."
+
+#~ msgid "Please wait..."
+#~ msgstr "Egy kis türelmet kérek..."
+
+#~ msgid ""
+#~ "Starting gpg-agent (you should consider starting a global instance "
+#~ "instead)..."
+#~ msgstr ""
+#~ "A gpg-agent indítása (érdemes inkább egy globális példányt indítani)..."
+
+#~ msgid "While scanning for %1 support in backend %2:"
+#~ msgstr "%1-támogatás keresése közben (modul: %2) ez történt:"
+
+#~ msgctxt "progress info: \"%1 of %2\""
+#~ msgid "%1/%2"
+#~ msgstr "%1/%2"
+
+#~ msgid ""
+#~ "OpenPGP key for %1\n"
+#~ "Created: %2\n"
+#~ "Expiry: %3\n"
+#~ "Fingerprint: %4"
+#~ msgstr ""
+#~ "OpenPGP-kulcs - %1\n"
+#~ "Létrehozási dátum: %2\n"
+#~ "Lejárási dátum: %3\n"
+#~ "Ujjlenyomat: %4"
+
+#~ msgid ""
+#~ "S/MIME key for %1\n"
+#~ "Created: %2\n"
+#~ "Expiry: %3\n"
+#~ "Fingerprint: %4\n"
+#~ "Issuer: %5"
+#~ msgstr ""
+#~ "S/MIME-kulcs - %1\n"
+#~ "Létrehozási dátum: %2\n"
+#~ "Lejárási dátum: %3\n"
+#~ "Ujjlenyomat: %4\n"
+#~ "Kibocsátó: %5"
+
+#~ msgid "Copy Audit Log to Clipboard"
+#~ msgstr "Az ellenőrzési napló másolása a vágólapra"
+
+#~ msgid "Add or Change Directory Service"
+#~ msgstr "Címtárszolgáltatás hozzáadása vagy módosítása"
+
+#~ msgid "&Server name:"
+#~ msgstr "K&iszolgálónév:"
+
+#~ msgid "389"
+#~ msgstr "389"
+
+#~ msgid "&User name (optional):"
+#~ msgstr "&Felhasználónév (opcionális):"
+
+#~ msgid "Pass&word (optional):"
+#~ msgstr "Je&lszó (opcionális):"
+
+#~ msgid "&OK"
+#~ msgstr "&OK"
+
+#~ msgid "&Cancel"
+#~ msgstr "&Mégsem"
+
+#~ msgid "&Base DN:"
+#~ msgstr "&Alap DN:"
+
+#~ msgid "&Port:"
+#~ msgstr "&Port:"
+
+#~ msgctxt "NAME OF TRANSLATORS"
+#~ msgid "Your names"
+#~ msgstr "Szántó Tamás"
+
+#~ msgctxt "EMAIL OF TRANSLATORS"
+#~ msgid "Your emails"
+#~ msgstr "taszanto@gmail.com"
+
+#~ msgid "failed"
+#~ msgstr "nem sikerült"
+
+#~ msgctxt ""
+#~ "Items in Kleo::BackendConfigWidget listview (1: protocol; 2: "
+#~ "implementation name)"
+#~ msgid "%1 (%2)"
+#~ msgstr "%1 (%2)"
+
+#~ msgid "Available Backends"
+#~ msgstr "A rendelkezésre álló modulok"
+
+#~ msgid "Confi&gure..."
+#~ msgstr "B&eállítás..."
+
+#~ msgid "Rescan"
+#~ msgstr "Újraellenőrzés"
+
+#~ msgid "The following problems where encountered during scanning:"
+#~ msgstr "Az ellenőrzés során a következő problémák léptek fel:"
+
+#~ msgctxt "@title:window Results of the scanning"
+#~ msgid "Scan Results"
+#~ msgstr "Az ellenőrzés eredménye"
+
+#~ msgid "(Unknown Protocol)"
+#~ msgstr "(Ismeretlen protokoll)"
+
+#~ msgid "Error while initializing plugin \"%1\""
+#~ msgstr "Hiba történt a(z) \"%1\" bővítőmodul inicializálása közben"
--- /dev/null
+# Copyright (C) YEAR This_file_is_part_of_KDE
+# This file is distributed under the same license as the PACKAGE package.
+#
+# g.sora <g.sora@tiscali.it>, 2011, 2013.
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2017-07-12 06:56+0200\n"
+"PO-Revision-Date: 2013-11-22 12:58+0100\n"
+"Last-Translator: G.Sora <g.sora@tiscali.it>\n"
+"Language-Team: Interlingua <kde-l10n-ia@kde.org>\n"
+"Language: ia\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Lokalize 1.5\n"
+
+#: kleo/checksumdefinition.cpp:107
+#, kde-format
+msgid "Error in checksum definition %1: %2"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:157
+#, kde-format
+msgid "Cannot use both %f and | in '%1'"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:167
+#, kde-format
+msgid "Quoting error in '%1' entry"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:170
+#, kde-format
+msgid "'%1' too complex (would need shell)"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:174
+#, kde-format
+msgid "'%1' entry is empty/missing"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:183
+#, kde-format
+msgid "'%1' empty or not found"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:222
+#, kde-format
+msgid "'id' entry is empty/missing"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:225
+#, kde-format
+msgid "'output-file' entry is empty/missing"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:228
+#, kde-format
+msgid "'file-patterns' entry is empty/missing"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:395
+#, kde-format
+msgid "Caught unknown exception in group %1"
+msgstr ""
+
+#: kleo/dn.cpp:507
+#, kde-format
+msgid "Common name"
+msgstr "Nomine commun"
+
+#: kleo/dn.cpp:508
+#, kde-format
+msgid "Surname"
+msgstr "Nomine de Familia"
+
+#: kleo/dn.cpp:509
+#, kde-format
+msgid "Given name"
+msgstr "Nomine date"
+
+#: kleo/dn.cpp:510
+#, kde-format
+msgid "Location"
+msgstr "Location"
+
+#: kleo/dn.cpp:511
+#, kde-format
+msgid "Title"
+msgstr "Titulo"
+
+#: kleo/dn.cpp:512
+#, kde-format
+msgid "Organizational unit"
+msgstr "Unitate de organisation"
+
+#: kleo/dn.cpp:513
+#, kde-format
+msgid "Organization"
+msgstr "Organization"
+
+#: kleo/dn.cpp:514
+#, kde-format
+msgid "Postal code"
+msgstr "Codice postal"
+
+#: kleo/dn.cpp:515
+#, kde-format
+msgid "Country code"
+msgstr "Codice de pais"
+
+#: kleo/dn.cpp:516
+#, kde-format
+msgid "State or province"
+msgstr ""
+
+#: kleo/dn.cpp:517
+#, kde-format
+msgid "Domain component"
+msgstr ""
+
+#: kleo/dn.cpp:518
+#, kde-format
+msgid "Business category"
+msgstr ""
+
+#: kleo/dn.cpp:519
+#, kde-format
+msgid "Email address"
+msgstr "Adresse de E-Posta"
+
+#: kleo/dn.cpp:520
+#, kde-format
+msgid "Mail address"
+msgstr "Adresse de Posta"
+
+#: kleo/dn.cpp:521
+#, kde-format
+msgid "Mobile phone number"
+msgstr "Numero de telephono mobile"
+
+#: kleo/dn.cpp:522
+#, kde-format
+msgid "Telephone number"
+msgstr "Numero de telephono"
+
+#: kleo/dn.cpp:523
+#, kde-format
+msgid "Fax number"
+msgstr "Numero de Fax"
+
+#: kleo/dn.cpp:524
+#, kde-format
+msgid "Street address"
+msgstr ""
+
+#: kleo/dn.cpp:525
+#, kde-format
+msgid "Unique ID"
+msgstr "Id unic"
+
+#: kleo/enum.cpp:57
+#, kde-format
+msgid "Inline OpenPGP (deprecated)"
+msgstr "Includite (inline) OpenPGP (deprecate)"
+
+#: kleo/enum.cpp:62
+#, kde-format
+msgid "OpenPGP/MIME"
+msgstr "OpenPGP / MIME"
+
+#: kleo/enum.cpp:67 ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "S/MIME"
+msgstr "S/MIME"
+
+#: kleo/enum.cpp:72
+#, kde-format
+msgid "S/MIME Opaque"
+msgstr "S/MIME Opaque"
+
+#: kleo/enum.cpp:104
+#, kde-format
+msgid "Any"
+msgstr "Ulle"
+
+#: kleo/enum.cpp:177
+#, kde-format
+msgid "Never Encrypt"
+msgstr ""
+
+#: kleo/enum.cpp:179
+#, kde-format
+msgid "Always Encrypt"
+msgstr ""
+
+#: kleo/enum.cpp:181
+#, kde-format
+msgid "Always Encrypt If Possible"
+msgstr ""
+
+#: kleo/enum.cpp:183 kleo/enum.cpp:240
+#, kde-format
+msgid "Ask"
+msgstr "Demanda"
+
+#: kleo/enum.cpp:185 kleo/enum.cpp:242
+#, kde-format
+msgid "Ask Whenever Possible"
+msgstr ""
+
+#: kleo/enum.cpp:187
+#, kde-kuit-format
+msgctxt "no specific preference"
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>necun</placeholder>"
+
+#: kleo/enum.cpp:234
+#, kde-format
+msgid "Never Sign"
+msgstr ""
+
+#: kleo/enum.cpp:236
+#, kde-format
+msgid "Always Sign"
+msgstr ""
+
+#: kleo/enum.cpp:238
+#, kde-format
+msgid "Always Sign If Possible"
+msgstr ""
+
+#: kleo/enum.cpp:244
+#, kde-format
+msgctxt "no specific preference"
+msgid "<none>"
+msgstr ""
+
+#: kleo/keyfiltermanager.cpp:85
+#, kde-format
+msgid "All Certificates"
+msgstr ""
+
+#: kleo/keyfiltermanager.cpp:100
+#, kde-format
+msgid "My Certificates"
+msgstr ""
+
+#: kleo/keyfiltermanager.cpp:118
+#, kde-format
+msgid "Trusted Certificates"
+msgstr ""
+
+#: kleo/keyfiltermanager.cpp:135
+#, kde-format
+msgid "Fully Trusted Certificates"
+msgstr ""
+
+#: kleo/keyfiltermanager.cpp:152
+#, kde-format
+msgid "Other Certificates"
+msgstr ""
+
+#: kleo/keyfiltermanager.cpp:166
+#, kde-format
+msgid "VS-compliant Certificates"
+msgstr ""
+
+#: kleo/keyfiltermanager.cpp:184
+#, kde-format
+msgid "Not validated Certificates"
+msgstr ""
+
+#: ui/auditlogviewer.cpp:49
+#, kde-format
+msgid "View GnuPG Audit Log"
+msgstr ""
+
+#: ui/auditlogviewer.cpp:53
+#, kde-format
+msgid "&Copy to Clipboard"
+msgstr "&Copia in area de transferentia"
+
+#: ui/auditlogviewer.cpp:59
+#, kde-format
+msgid "&Save to Disk..."
+msgstr ""
+
+#: ui/auditlogviewer.cpp:95
+#, kde-format
+msgid "Choose File to Save GnuPG Audit Log to"
+msgstr ""
+
+#: ui/auditlogviewer.cpp:118
+#, kde-format
+msgid "Could not save to file \"%1\": %2"
+msgstr "Il non poteva salveguardar in file %1\": %2"
+
+#: ui/auditlogviewer.cpp:120
+#, kde-format
+msgid "File Save Error"
+msgstr ""
+
+#: ui/cryptoconfigdialog.cpp:44
+#, kde-format
+msgid "Configure GnuPG Backend"
+msgstr ""
+
+#: ui/cryptoconfigdialog.cpp:55
+#, kde-format
+msgid "&Reset"
+msgstr "&Re-fixa"
+
+#: ui/cryptoconfigmodule.cpp:160
+#, kde-format
+msgid "GpgConf Error"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:216
+#, kde-format
+msgid ""
+"The gpgconf tool used to provide the information for this dialog does not "
+"seem to be installed properly. It did not return any components. Try running "
+"\"%1\" on the command line for more information."
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:496
+#, kde-format
+msgctxt ""
+"Translate this to 'yes' or 'no' (use the English words!) depending on "
+"whether your language uses Sentence style capitalisation in GUI labels (yes) "
+"or not (no). Context: We get some backend strings in that have the wrong "
+"capitalizaion (in English, at least) so we need to force the first character "
+"to upper-case. It is this behaviour you can control for your language with "
+"this translation."
+msgid "yes"
+msgstr "yes"
+
+#: ui/cryptoconfigmodule.cpp:546
+#, kde-format
+msgid "0 - None"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:547
+#, kde-format
+msgid "1 - Basic"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:548
+#, kde-format
+msgid "2 - Verbose"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:549
+#, kde-format
+msgid "3 - More Verbose"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:550
+#, kde-format
+msgid "4 - All"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:559
+#, kde-format
+msgid "Set the debugging level to"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:787
+#, kde-format
+msgid "Show..."
+msgstr "Monstra..."
+
+#: ui/cryptoconfigmodule.cpp:787 ui/cryptoconfigmodule.cpp:876
+#, kde-format
+msgid "Edit..."
+msgstr "Modifica..."
+
+#: ui/cryptoconfigmodule.cpp:841
+#, kde-format
+msgid "Configure LDAP Servers"
+msgstr "Configura servitores LDAP"
+
+#: ui/cryptoconfigmodule.cpp:862
+#, fuzzy, kde-format
+#| msgid "No server configured yet"
+msgid "None configured"
+msgstr "Ancora nulle servitor configurate."
+
+#: ui/cryptoconfigmodule.cpp:864
+#, kde-format
+msgid "1 server configured"
+msgid_plural "%1 servers configured"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ui/cryptoconfigmodule.cpp:879
+#, kde-format
+msgid "Use keyserver at"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:968
+#, kde-format
+msgid "Configure Keyservers"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:67
+#, kde-format
+msgctxt "default server name, keep it a valid domain name, ie. no spaces"
+msgid "server"
+msgstr "servitor"
+
+#: ui/directoryserviceswidget.cpp:95
+#, kde-format
+msgid "hkp"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:96
+#, kde-format
+msgid "http"
+msgstr "http"
+
+#: ui/directoryserviceswidget.cpp:97
+#, kde-format
+msgid "https"
+msgstr "https"
+
+#: ui/directoryserviceswidget.cpp:98
+#, kde-format
+msgid "ftp"
+msgstr "ftp"
+
+#: ui/directoryserviceswidget.cpp:99
+#, kde-format
+msgid "ftps"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:100
+#, kde-format
+msgid "ldap"
+msgstr "ldap"
+
+#: ui/directoryserviceswidget.cpp:101
+#, kde-format
+msgid "ldaps"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:588
+#, kde-format
+msgid "Server Name"
+msgstr "Nomine de Servitor"
+
+#: ui/directoryserviceswidget.cpp:589
+#, kde-format
+msgid "Server Port"
+msgstr "Porto de servitor"
+
+#: ui/directoryserviceswidget.cpp:590
+#, kde-format
+msgid "Base DN"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:591
+#, kde-format
+msgid "User Name"
+msgstr "Nomine de usator"
+
+#: ui/directoryserviceswidget.cpp:592
+#, kde-format
+msgid "Password"
+msgstr "Contrasigno"
+
+#: ui/directoryserviceswidget.cpp:614
+#, kde-format
+msgid "(read-only)"
+msgstr "(solmente de lectura)"
+
+#: ui/directoryserviceswidget.cpp:616
+#, kde-format
+msgctxt "amended tooltip; %1: original tooltip"
+msgid "%1 (read-only)"
+msgstr "%1 (solmente de lectura)"
+
+#: ui/directoryserviceswidget.cpp:739
+#, kde-format
+msgid ""
+"Enter the name or IP address of the server hosting the directory service."
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:741
+#, kde-format
+msgid ""
+"<b>(Optional, the default is fine in most cases)</b> Pick the port number "
+"the directory service is listening on."
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:744
+#, kde-format
+msgid ""
+"<b>(Only for LDAP)</b> Enter the base DN for this LDAP server to limit "
+"searches to only that subtree of the directory."
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:747
+#, kde-format
+msgid "<b>(Optional)</b> Enter your user name here, if needed."
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:749
+#, kde-format
+msgid ""
+"<b>(Optional, not recommended)</b> Enter your password here, if needed. Note "
+"that the password will be saved in the clear in a config file in your home "
+"directory."
+msgstr ""
+
+#. i18n: ectx: property (windowTitle), widget (QWidget, DirectoryServicesWidget)
+#: ui/directoryserviceswidget.ui:14
+#, kde-format
+msgid "Directory Services Configuration"
+msgstr ""
+
+#. i18n: ectx: property (text), widget (QLabel, pgpKSLabel)
+#: ui/directoryserviceswidget.ui:22
+#, kde-format
+msgid "OpenPGP Keyserver:"
+msgstr ""
+
+#. i18n: ectx: property (title), widget (QGroupBox, x500LA)
+#: ui/directoryserviceswidget.ui:35
+#, fuzzy, kde-format
+#| msgid "Directory services:"
+msgid "X509 Directory services:"
+msgstr "Servicios de directorio:"
+
+#. i18n: ectx: property (whatsThis), widget (QTreeView, treeView)
+#: ui/directoryserviceswidget.ui:43
+#, kde-format
+msgid ""
+"This is a list of all directory services that are configured for use with "
+"X.509."
+msgstr ""
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:70
+#, kde-format
+msgid "Click to add a service"
+msgstr ""
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:73
+#, kde-format
+msgid ""
+"Click this button to create a new directory service entry as a clone of the "
+"currently selected one (or with default values, if no other is selected). "
+"You can then configure details in the table on the left hand."
+msgstr ""
+
+#. i18n: ectx: property (text), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:76
+#, kde-format
+msgid "New"
+msgstr "Nove "
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:92
+#, kde-format
+msgid "Click to remove the currently selected service"
+msgstr ""
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:95
+#, kde-format
+msgid ""
+"Click this button to remove the currently selected directory service. The "
+"change will only take effect once you acknowledge the main configuration "
+"dialog."
+msgstr ""
+
+#. i18n: ectx: property (text), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:98
+#, kde-format
+msgid "Delete"
+msgstr "Dele"
+
+#. i18n: ectx: property (whatsThis), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:128
+#, kde-format
+msgid ""
+"Use this option to switch display of username and password information on or "
+"off in the above table."
+msgstr ""
+
+#. i18n: ectx: property (text), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:131
+#, kde-format
+msgid "Show user and password information"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:73
+#, kde-format
+msgid "Description"
+msgstr "Description"
+
+#: ui/dnattributeorderconfigwidget.cpp:91
+#, kde-format
+msgid "Available attributes:"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:92
+#, kde-format
+msgid "Current attribute order:"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:112
+#, kde-format
+msgid "All others"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:129
+#, kde-format
+msgid "Move to top"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:130
+#, kde-format
+msgid "Move one up"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:131
+#, kde-format
+msgid "Remove from current attribute order"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:132
+#, kde-format
+msgid "Add to current attribute order"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:133
+#, kde-format
+msgid "Move one down"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:134
+#, kde-format
+msgid "Move to bottom"
+msgstr ""
+
+#: ui/keyapprovaldialog.cpp:87
+#, kde-kuit-format
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>necun</placeholder>"
+
+#: ui/keyapprovaldialog.cpp:88
+#, kde-format
+msgid "Never Encrypt with This Key"
+msgstr ""
+
+#: ui/keyapprovaldialog.cpp:89
+#, kde-format
+msgid "Always Encrypt with This Key"
+msgstr ""
+
+#: ui/keyapprovaldialog.cpp:90
+#, kde-format
+msgid "Encrypt Whenever Encryption is Possible"
+msgstr ""
+
+#: ui/keyapprovaldialog.cpp:91
+#, kde-format
+msgid "Always Ask"
+msgstr "Demanda sempre"
+
+#: ui/keyapprovaldialog.cpp:92
+#, kde-format
+msgid "Ask Whenever Encryption is Possible"
+msgstr ""
+
+#: ui/keyapprovaldialog.cpp:113
+#, kde-format
+msgid "Encryption Key Approval"
+msgstr ""
+
+#: ui/keyapprovaldialog.cpp:129
+#, kde-format
+msgid "The following keys will be used for encryption:"
+msgstr ""
+
+#: ui/keyapprovaldialog.cpp:145
+#, kde-format
+msgid "Your keys:"
+msgstr ""
+
+#: ui/keyapprovaldialog.cpp:157
+#, kde-format
+msgid "Recipient:"
+msgstr "Destinatario:"
+
+#: ui/keyapprovaldialog.cpp:162
+#, kde-format
+msgid "Encryption keys:"
+msgstr "Claves de encryption:"
+
+#: ui/keyapprovaldialog.cpp:169
+#, kde-format
+msgid "Encryption preference:"
+msgstr ""
+
+#: ui/keyrequester.cpp:118
+#, kde-format
+msgid "Clear"
+msgstr "Netta"
+
+#: ui/keyrequester.cpp:121
+#, kde-format
+msgid "Change..."
+msgstr "Cambia ..."
+
+#: ui/keyrequester.cpp:232 ui/keyselectiondialog.cpp:256
+#, kde-kuit-format
+msgid "<placeholder>unknown</placeholder>"
+msgstr "<placeholder>incognite</placeholder>"
+
+#: ui/keyrequester.cpp:246 ui/keyselectiondialog.cpp:657
+#, kde-format
+msgid ""
+"<qt><p>An error occurred while fetching the keys from the backend:</p><p><b>"
+"%1</b></p></qt>"
+msgstr ""
+
+#: ui/keyrequester.cpp:251 ui/keyrequester.cpp:283 ui/keyrequester.cpp:306
+#: ui/keyselectiondialog.cpp:630 ui/keyselectiondialog.cpp:662
+#, kde-format
+msgid "Key Listing Failed"
+msgstr ""
+
+#: ui/keyrequester.cpp:281
+#, kde-format
+msgid ""
+"The OpenPGP backend does not support listing keys. Check your installation."
+msgstr ""
+
+#: ui/keyrequester.cpp:304
+#, kde-format
+msgid ""
+"The S/MIME backend does not support listing keys. Check your installation."
+msgstr ""
+
+#: ui/keyrequester.cpp:426
+#, kde-format
+msgid "OpenPGP Key Selection"
+msgstr ""
+
+#: ui/keyrequester.cpp:427
+#, kde-format
+msgid "Please select an OpenPGP key to use."
+msgstr ""
+
+#: ui/keyrequester.cpp:429
+#, kde-format
+msgid "S/MIME Key Selection"
+msgstr ""
+
+#: ui/keyrequester.cpp:430
+#, kde-format
+msgid "Please select an S/MIME key to use."
+msgstr ""
+
+#: ui/keyrequester.cpp:432
+#, kde-format
+msgid "Key Selection"
+msgstr ""
+
+#: ui/keyrequester.cpp:433
+#, kde-format
+msgid "Please select an (OpenPGP or S/MIME) key to use."
+msgstr ""
+
+#: ui/keyselectioncombo.cpp:195
+#, kde-format
+msgctxt "Name <email> (validity, type, created: date)"
+msgid "%1 (%2, %3, created: %4)"
+msgstr ""
+
+#: ui/keyselectioncombo.cpp:196
+#, kde-format
+msgctxt "Name <email>"
+msgid "%1 <%2>"
+msgstr ""
+
+#: ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "OpenPGP"
+msgstr "OpenPGP"
+
+#: ui/keyselectioncombo.cpp:347
+#, kde-format
+msgid "Loading keys ..."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:98
+#, kde-format
+msgid "The key is not valid."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:106
+#, kde-format
+msgid "The key is expired."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:110
+#, kde-format
+msgid "The key is revoked."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:114
+#, kde-format
+msgid "The key is disabled."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:122
+#, kde-format
+msgid "The key is not designated for encryption."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:128
+#, kde-format
+msgid "The key is not designated for signing."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:134
+#, kde-format
+msgid "The key is not designated for certifying."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:140
+#, kde-format
+msgid "The key is not designated for authentication."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:148
+#, kde-format
+msgid "The key is not secret."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:163
+#, kde-format
+msgid "The key is not trusted enough."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:169
+#, kde-format
+msgid "The key can be used."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:230
+#, kde-format
+msgid "Key ID"
+msgstr "ID de clave"
+
+#: ui/keyselectiondialog.cpp:231
+#, kde-format
+msgid "User ID"
+msgstr "ID de usator"
+
+#: ui/keyselectiondialog.cpp:279
+#, kde-format
+msgid "never"
+msgstr "jammais"
+
+#: ui/keyselectiondialog.cpp:289 ui/keyselectiondialog.cpp:291
+#: ui/keyselectiondialog.cpp:300 ui/keyselectiondialog.cpp:302
+#, kde-format
+msgid "unknown"
+msgstr "incognite"
+
+#: ui/keyselectiondialog.cpp:289
+#, kde-format
+msgid "OpenPGP key for <b>%1</b>"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:291
+#, kde-format
+msgid "S/MIME key for <b>%1</b>"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:298
+#, kde-format
+msgctxt "Key creation date"
+msgid "Created"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:299
+#, kde-format
+msgctxt "Key Expiration date"
+msgid "Expiry"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:300
+#, kde-format
+msgctxt "Key fingerprint"
+msgid "Fingerprint"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:302
+#, kde-format
+msgctxt "Key issuer"
+msgid "Issuer"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:304
+#, kde-format
+msgctxt "Key status"
+msgid "Status"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:456
+#, kde-format
+msgid "Search for &External Certificates"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:470
+#, kde-format
+msgid "&Search for:"
+msgstr "&Cerca:"
+
+#: ui/keyselectiondialog.cpp:494
+#, kde-format
+msgid "&Remember choice"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:497
+#, kde-format
+msgid ""
+"<qt><p>If you check this box your choice will be stored and you will not be "
+"asked again.</p></qt>"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:509
+#, kde-format
+msgid "&Reread Keys"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:510
+#, kde-format
+msgid "&Start Certificate Manager"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:628
+#, kde-format
+msgid "No backends found for listing keys. Check your installation."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:644
+#, kde-format
+msgid "Could not start certificate manager; please check your installation."
+msgstr ""
+"Il non pote initiar gestion de certificato; pro favor tu verifica tu "
+"installation."
+
+#: ui/keyselectiondialog.cpp:646
+#, kde-format
+msgid "Certificate Manager Error"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Checking selected keys..."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Fetching keys..."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:731
+#, kde-format
+msgid ""
+"<qt>One backend returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgid_plural ""
+"<qt>%1 backends returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ui/keyselectiondialog.cpp:736
+#, kde-format
+msgid "Key List Result"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:856
+#, kde-format
+msgid "Recheck Key"
+msgstr ""
+
+#: ui/messagebox.cpp:71
+#, kde-format
+msgid "Your system does not have support for GnuPG Audit Logs"
+msgstr ""
+
+#: ui/messagebox.cpp:72
+#, kde-format
+msgid "System Error"
+msgstr "Error de systema"
+
+#: ui/messagebox.cpp:79
+#, kde-format
+msgid ""
+"An error occurred while trying to retrieve the GnuPG Audit Log:\n"
+"%1"
+msgstr ""
+
+#: ui/messagebox.cpp:81
+#, kde-format
+msgid "GnuPG Audit Log Error"
+msgstr ""
+
+#: ui/messagebox.cpp:88
+#, kde-format
+msgid "No GnuPG Audit Log available for this operation."
+msgstr ""
+
+#: ui/messagebox.cpp:89
+#, kde-format
+msgid "No GnuPG Audit Log"
+msgstr ""
+
+#: ui/messagebox.cpp:109 ui/messagebox.cpp:115
+#, kde-format
+msgid "GnuPG Audit Log Viewer"
+msgstr ""
+
+#: ui/messagebox.cpp:121
+#, kde-format
+msgid "Signing failed: %1"
+msgstr ""
+
+#: ui/messagebox.cpp:122
+#, kde-format
+msgid "Signing successful"
+msgstr ""
+
+#: ui/messagebox.cpp:133
+#, kde-format
+msgid "Encryption failed: %1"
+msgstr "Cryptation falleva: %1"
+
+#: ui/messagebox.cpp:134
+#, kde-format
+msgid "Encryption successful"
+msgstr ""
+
+#: ui/messagebox.cpp:155
+#, kde-format
+msgid "Signing Result"
+msgstr ""
+
+#: ui/messagebox.cpp:167
+#, kde-format
+msgid "Signing Error"
+msgstr ""
+
+#: ui/messagebox.cpp:179 ui/messagebox.cpp:203
+#, kde-format
+msgid "Encryption Result"
+msgstr ""
+
+#: ui/messagebox.cpp:191 ui/messagebox.cpp:215
+#, kde-format
+msgid "Encryption Error"
+msgstr "Error de Encryption"
+
+#: ui/messagebox.cpp:263
+#, kde-format
+msgid "&Show Audit Log"
+msgstr "Mon&strar Registro de Audit"
+
+#: ui/progressdialog.cpp:91
+#, kde-format
+msgid "%1: %2"
+msgstr ""
+
+#~ msgctxt "New X.509 Directory Server"
+#~ msgid "X.509"
+#~ msgstr "X.509"
+
+#~ msgctxt "New OpenPGP Directory Server"
+#~ msgid "OpenPGP"
+#~ msgstr "OpenPGP"
+
+#~ msgid "Scheme"
+#~ msgstr "Schema"
+
+#~ msgid "X.509"
+#~ msgstr "X.509"
+
+#~ msgid "General"
+#~ msgstr "General"
+
+#~ msgid "Chiasmus"
+#~ msgstr "Chiasmus"
+
+#~ msgid "Chiasmus command line tool"
+#~ msgstr "Instrumento de linea de commando de Chiasmus"
+
+#~ msgid "Unsupported protocol \"%1\""
+#~ msgstr "Protocollo \"%1\" non supportate"
+
+#~ msgid "File \"%1\" does not exist or is not executable."
+#~ msgstr "Le file \"%1 non existe o non es executabile."
+
+#~ msgid "Output from chiasmus"
+#~ msgstr "Exito ex Chiasmus"
+
+#~ msgid "Decryption failed: %1"
+#~ msgstr "Decryptation falleva: %1"
+
+#~ msgid ""
+#~ "The following was received on stderr:\n"
+#~ "%1"
+#~ msgstr ""
+#~ "Le sequente esseva recipite sur stderr:\n"
+#~ "%1"
+
+#~ msgid "Failed to load %1: %2"
+#~ msgstr "Il falleva a cargar %1:%2"
+
+#~ msgid "Library does not contain the symbol \"Chiasmus\"."
+#~ msgstr "Le bibliotheca non contine le symbolo \"Chiasmus\"."
+
+#~ msgid "Scanning directory %1..."
+#~ msgstr "Scandente directorio %1..."
+
+#~ msgid "GpgME"
+#~ msgstr "GpgME"
+
+#~ msgid "GPGME was compiled without support for %1."
+#~ msgstr "GPGME esseva compilate sin supporto pro %1"
+
+#~ msgid "Engine %1 is not installed properly."
+#~ msgstr "Motor %1 non es installate correctemente."
+
+#~ msgid "Engine %1 version %2 installed, but at least version %3 is required."
+#~ msgstr ""
+#~ "Il ha installate le motor %1 version %2, ma al minus version %3 es "
+#~ "requirite."
+
+#~ msgid "Unknown problem with engine for protocol %1."
+#~ msgstr "Problema incognite con motor pro protocollo %1."
+
+#~ msgid "program terminated unexpectedly"
+#~ msgstr "Programma terminava inopinatemente"
+
+#~ msgid "program not found or cannot be started"
+#~ msgstr "programma non trovate o il non poteva esser initiate"
+
+#~ msgid "Generating DSA key..."
+#~ msgstr "Generante clave DSA..."
+
+#~ msgid "Generating ElGamal key..."
+#~ msgstr "Generante clave ElGamal..."
+
+#~ msgid "Please wait..."
+#~ msgstr "Pro favor, tu expecta..."
+
+#~ msgid "&Server name:"
+#~ msgstr "Nomine de &Servitor:"
+
+#~ msgid "389"
+#~ msgstr "389"
+
+#~ msgid "&User name (optional):"
+#~ msgstr "Nomine de &usator (optional):"
+
+#~ msgid "Pass&word (optional):"
+#~ msgstr "Cont&rasigno (optional)"
+
+#~ msgid "&OK"
+#~ msgstr "&OK"
+
+#~ msgid "&Cancel"
+#~ msgstr "&Cancella"
+
+#~ msgid "&Port:"
+#~ msgstr "&Porto:"
--- /dev/null
+# translation of libkleopatra.po to Icelandic
+# translation of libkleopatra.po to
+# Þröstur Svanbergsson <throstur@bylur.net>, 2004.
+# Arnar Leosson <leosson@frisurf.no>, 2005.
+msgid ""
+msgstr ""
+"Project-Id-Version: libkleopatra\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2017-07-12 06:56+0200\n"
+"PO-Revision-Date: 2005-02-16 21:58-0500\n"
+"Last-Translator: Arnar Leosson <leosson@frisurf.no>\n"
+"Language-Team: Icelandic <kde-isl@molar.is>\n"
+"Language: is\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.9.1\n"
+"Plural-Forms: Plural-Forms: nplurals=2; plural=n != 1;\n"
+"\n"
+"\n"
+
+#: kleo/checksumdefinition.cpp:107
+#, kde-format
+msgid "Error in checksum definition %1: %2"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:157
+#, kde-format
+msgid "Cannot use both %f and | in '%1'"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:167
+#, kde-format
+msgid "Quoting error in '%1' entry"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:170
+#, kde-format
+msgid "'%1' too complex (would need shell)"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:174
+#, kde-format
+msgid "'%1' entry is empty/missing"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:183
+#, fuzzy, kde-format
+#| msgid "program not found"
+msgid "'%1' empty or not found"
+msgstr "forrit fannst ekki"
+
+#: kleo/checksumdefinition.cpp:222
+#, kde-format
+msgid "'id' entry is empty/missing"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:225
+#, kde-format
+msgid "'output-file' entry is empty/missing"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:228
+#, kde-format
+msgid "'file-patterns' entry is empty/missing"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:395
+#, kde-format
+msgid "Caught unknown exception in group %1"
+msgstr ""
+
+#: kleo/dn.cpp:507
+#, kde-format
+msgid "Common name"
+msgstr "Almennt nafn"
+
+#: kleo/dn.cpp:508
+#, kde-format
+msgid "Surname"
+msgstr "Eftirnafn7"
+
+#: kleo/dn.cpp:509
+#, kde-format
+msgid "Given name"
+msgstr "Eiginnafn"
+
+#: kleo/dn.cpp:510
+#, kde-format
+msgid "Location"
+msgstr "Staðsetning"
+
+#: kleo/dn.cpp:511
+#, kde-format
+msgid "Title"
+msgstr "Titill"
+
+#: kleo/dn.cpp:512
+#, kde-format
+msgid "Organizational unit"
+msgstr "Deild (OU)"
+
+#: kleo/dn.cpp:513
+#, kde-format
+msgid "Organization"
+msgstr "Fyrirtæki (O)"
+
+#: kleo/dn.cpp:514
+#, kde-format
+msgid "Postal code"
+msgstr "Póstnúmer"
+
+#: kleo/dn.cpp:515
+#, kde-format
+msgid "Country code"
+msgstr "Landskóði"
+
+#: kleo/dn.cpp:516
+#, kde-format
+msgid "State or province"
+msgstr "Ríki eða fylki"
+
+#: kleo/dn.cpp:517
+#, kde-format
+msgid "Domain component"
+msgstr "Lénshluti"
+
+#: kleo/dn.cpp:518
+#, kde-format
+msgid "Business category"
+msgstr "Tegund fyrirtækis"
+
+#: kleo/dn.cpp:519
+#, kde-format
+msgid "Email address"
+msgstr "Netfang"
+
+#: kleo/dn.cpp:520
+#, kde-format
+msgid "Mail address"
+msgstr "Póstfang"
+
+#: kleo/dn.cpp:521
+#, kde-format
+msgid "Mobile phone number"
+msgstr "Farsímanúmer"
+
+#: kleo/dn.cpp:522
+#, kde-format
+msgid "Telephone number"
+msgstr "Símanúmer"
+
+#: kleo/dn.cpp:523
+#, kde-format
+msgid "Fax number"
+msgstr "Faxnúmer"
+
+#: kleo/dn.cpp:524
+#, kde-format
+msgid "Street address"
+msgstr "Heimilisfang"
+
+#: kleo/dn.cpp:525
+#, kde-format
+msgid "Unique ID"
+msgstr "Einkvæmt auðkenni"
+
+#: kleo/enum.cpp:57
+#, kde-format
+msgid "Inline OpenPGP (deprecated)"
+msgstr "Innfellt OpenPGP (úrelt)"
+
+#: kleo/enum.cpp:62
+#, kde-format
+msgid "OpenPGP/MIME"
+msgstr "OpenPGP/MIME"
+
+#: kleo/enum.cpp:67 ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "S/MIME"
+msgstr "S/MIME"
+
+#: kleo/enum.cpp:72
+#, kde-format
+msgid "S/MIME Opaque"
+msgstr "S/MIME ógegnsætt"
+
+#: kleo/enum.cpp:104
+#, kde-format
+msgid "Any"
+msgstr "Hvað sem er"
+
+#: kleo/enum.cpp:177
+#, kde-format
+msgid "Never Encrypt"
+msgstr "Aldrei dulrita"
+
+#: kleo/enum.cpp:179
+#, kde-format
+msgid "Always Encrypt"
+msgstr "Alltaf dulrita"
+
+#: kleo/enum.cpp:181
+#, kde-format
+msgid "Always Encrypt If Possible"
+msgstr "Alltaf dulrita ef mögulegt er"
+
+#: kleo/enum.cpp:183 kleo/enum.cpp:240
+#, kde-format
+msgid "Ask"
+msgstr "Spyrja"
+
+#: kleo/enum.cpp:185 kleo/enum.cpp:242
+#, kde-format
+msgid "Ask Whenever Possible"
+msgstr "Spyrja þegar mögulegt er"
+
+#: kleo/enum.cpp:187
+#, kde-kuit-format
+msgctxt "no specific preference"
+msgid "<placeholder>none</placeholder>"
+msgstr ""
+
+#: kleo/enum.cpp:234
+#, kde-format
+msgid "Never Sign"
+msgstr "Aldrei undirrita"
+
+#: kleo/enum.cpp:236
+#, kde-format
+msgid "Always Sign"
+msgstr "Alltaf undirrita"
+
+#: kleo/enum.cpp:238
+#, kde-format
+msgid "Always Sign If Possible"
+msgstr "Alltaf undirrita ef mögulegt er"
+
+#: kleo/enum.cpp:244
+#, kde-format
+msgctxt "no specific preference"
+msgid "<none>"
+msgstr "<ekkert>"
+
+#: kleo/keyfiltermanager.cpp:85
+#, kde-format
+msgid "All Certificates"
+msgstr ""
+
+#: kleo/keyfiltermanager.cpp:100
+#, kde-format
+msgid "My Certificates"
+msgstr ""
+
+#: kleo/keyfiltermanager.cpp:118
+#, kde-format
+msgid "Trusted Certificates"
+msgstr ""
+
+#: kleo/keyfiltermanager.cpp:135
+#, kde-format
+msgid "Fully Trusted Certificates"
+msgstr ""
+
+#: kleo/keyfiltermanager.cpp:152
+#, kde-format
+msgid "Other Certificates"
+msgstr ""
+
+#: kleo/keyfiltermanager.cpp:166
+#, kde-format
+msgid "VS-compliant Certificates"
+msgstr ""
+
+#: kleo/keyfiltermanager.cpp:184
+#, kde-format
+msgid "Not validated Certificates"
+msgstr ""
+
+#: ui/auditlogviewer.cpp:49
+#, kde-format
+msgid "View GnuPG Audit Log"
+msgstr ""
+
+#: ui/auditlogviewer.cpp:53
+#, kde-format
+msgid "&Copy to Clipboard"
+msgstr ""
+
+#: ui/auditlogviewer.cpp:59
+#, kde-format
+msgid "&Save to Disk..."
+msgstr ""
+
+#: ui/auditlogviewer.cpp:95
+#, kde-format
+msgid "Choose File to Save GnuPG Audit Log to"
+msgstr ""
+
+#: ui/auditlogviewer.cpp:118
+#, kde-format
+msgid "Could not save to file \"%1\": %2"
+msgstr ""
+
+#: ui/auditlogviewer.cpp:120
+#, kde-format
+msgid "File Save Error"
+msgstr ""
+
+#: ui/cryptoconfigdialog.cpp:44
+#, kde-format
+msgid "Configure GnuPG Backend"
+msgstr ""
+
+#: ui/cryptoconfigdialog.cpp:55
+#, kde-format
+msgid "&Reset"
+msgstr "&Frumstilla"
+
+#: ui/cryptoconfigmodule.cpp:160
+#, fuzzy, kde-format
+#| msgid "Encryption keys:"
+msgid "GpgConf Error"
+msgstr "Dulritunarlyklar:"
+
+#: ui/cryptoconfigmodule.cpp:216
+#, kde-format
+msgid ""
+"The gpgconf tool used to provide the information for this dialog does not "
+"seem to be installed properly. It did not return any components. Try running "
+"\"%1\" on the command line for more information."
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:496
+#, kde-format
+msgctxt ""
+"Translate this to 'yes' or 'no' (use the English words!) depending on "
+"whether your language uses Sentence style capitalisation in GUI labels (yes) "
+"or not (no). Context: We get some backend strings in that have the wrong "
+"capitalizaion (in English, at least) so we need to force the first character "
+"to upper-case. It is this behaviour you can control for your language with "
+"this translation."
+msgid "yes"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:546
+#, kde-format
+msgid "0 - None"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:547
+#, kde-format
+msgid "1 - Basic"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:548
+#, kde-format
+msgid "2 - Verbose"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:549
+#, kde-format
+msgid "3 - More Verbose"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:550
+#, kde-format
+msgid "4 - All"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:559
+#, kde-format
+msgid "Set the debugging level to"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:787
+#, kde-format
+msgid "Show..."
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:787 ui/cryptoconfigmodule.cpp:876
+#, kde-format
+msgid "Edit..."
+msgstr "Breyta..."
+
+#: ui/cryptoconfigmodule.cpp:841
+#, kde-format
+msgid "Configure LDAP Servers"
+msgstr "Stilla LDAP þjóna"
+
+#: ui/cryptoconfigmodule.cpp:862
+#, fuzzy, kde-format
+#| msgid "No server configured yet"
+msgid "None configured"
+msgstr "Enginn þjónn stilltur ennþá"
+
+#: ui/cryptoconfigmodule.cpp:864
+#, fuzzy, kde-format
+msgid "1 server configured"
+msgid_plural "%1 servers configured"
+msgstr[0] "1 þjónn stilltur"
+msgstr[1] "%1 þjónar stilltir"
+
+#: ui/cryptoconfigmodule.cpp:879
+#, kde-format
+msgid "Use keyserver at"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:968
+#, fuzzy, kde-format
+#| msgid "Configure LDAP Servers"
+msgid "Configure Keyservers"
+msgstr "Stilla LDAP þjóna"
+
+#: ui/directoryserviceswidget.cpp:67
+#, fuzzy, kde-format
+#| msgid "never"
+msgctxt "default server name, keep it a valid domain name, ie. no spaces"
+msgid "server"
+msgstr "aldrei"
+
+#: ui/directoryserviceswidget.cpp:95
+#, kde-format
+msgid "hkp"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:96
+#, kde-format
+msgid "http"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:97
+#, kde-format
+msgid "https"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:98
+#, kde-format
+msgid "ftp"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:99
+#, kde-format
+msgid "ftps"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:100
+#, kde-format
+msgid "ldap"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:101
+#, kde-format
+msgid "ldaps"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:588
+#, kde-format
+msgid "Server Name"
+msgstr "Heiti þjóns"
+
+#: ui/directoryserviceswidget.cpp:589
+#, fuzzy, kde-format
+#| msgid "Server Name"
+msgid "Server Port"
+msgstr "Heiti þjóns"
+
+#: ui/directoryserviceswidget.cpp:590
+#, kde-format
+msgid "Base DN"
+msgstr "Grunn DN"
+
+#: ui/directoryserviceswidget.cpp:591
+#, kde-format
+msgid "User Name"
+msgstr "Notandanafn"
+
+#: ui/directoryserviceswidget.cpp:592
+#, kde-format
+msgid "Password"
+msgstr "Lykilorð"
+
+#: ui/directoryserviceswidget.cpp:614
+#, kde-format
+msgid "(read-only)"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:616
+#, kde-format
+msgctxt "amended tooltip; %1: original tooltip"
+msgid "%1 (read-only)"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:739
+#, kde-format
+msgid ""
+"Enter the name or IP address of the server hosting the directory service."
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:741
+#, kde-format
+msgid ""
+"<b>(Optional, the default is fine in most cases)</b> Pick the port number "
+"the directory service is listening on."
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:744
+#, kde-format
+msgid ""
+"<b>(Only for LDAP)</b> Enter the base DN for this LDAP server to limit "
+"searches to only that subtree of the directory."
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:747
+#, kde-format
+msgid "<b>(Optional)</b> Enter your user name here, if needed."
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:749
+#, kde-format
+msgid ""
+"<b>(Optional, not recommended)</b> Enter your password here, if needed. Note "
+"that the password will be saved in the clear in a config file in your home "
+"directory."
+msgstr ""
+
+#. i18n: ectx: property (windowTitle), widget (QWidget, DirectoryServicesWidget)
+#: ui/directoryserviceswidget.ui:14
+#, kde-format
+msgid "Directory Services Configuration"
+msgstr ""
+
+#. i18n: ectx: property (text), widget (QLabel, pgpKSLabel)
+#: ui/directoryserviceswidget.ui:22
+#, fuzzy, kde-format
+#| msgid "OpenPGP Key Selection"
+msgid "OpenPGP Keyserver:"
+msgstr "OpenPGP lyklaval"
+
+#. i18n: ectx: property (title), widget (QGroupBox, x500LA)
+#: ui/directoryserviceswidget.ui:35
+#, kde-format
+msgid "X509 Directory services:"
+msgstr ""
+
+#. i18n: ectx: property (whatsThis), widget (QTreeView, treeView)
+#: ui/directoryserviceswidget.ui:43
+#, kde-format
+msgid ""
+"This is a list of all directory services that are configured for use with "
+"X.509."
+msgstr ""
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:70
+#, kde-format
+msgid "Click to add a service"
+msgstr "Smelltu hér til að bæta við þjónustu"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:73
+#, kde-format
+msgid ""
+"Click this button to create a new directory service entry as a clone of the "
+"currently selected one (or with default values, if no other is selected). "
+"You can then configure details in the table on the left hand."
+msgstr ""
+
+#. i18n: ectx: property (text), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:76
+#, kde-format
+msgid "New"
+msgstr ""
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:92
+#, kde-format
+msgid "Click to remove the currently selected service"
+msgstr "Smelltu hér til að fjarlægja þjónustuna sem nú er valin"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:95
+#, kde-format
+msgid ""
+"Click this button to remove the currently selected directory service. The "
+"change will only take effect once you acknowledge the main configuration "
+"dialog."
+msgstr ""
+
+#. i18n: ectx: property (text), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:98
+#, kde-format
+msgid "Delete"
+msgstr ""
+
+#. i18n: ectx: property (whatsThis), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:128
+#, kde-format
+msgid ""
+"Use this option to switch display of username and password information on or "
+"off in the above table."
+msgstr ""
+
+#. i18n: ectx: property (text), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:131
+#, kde-format
+msgid "Show user and password information"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:73
+#, kde-format
+msgid "Description"
+msgstr "Lýsing"
+
+#: ui/dnattributeorderconfigwidget.cpp:91
+#, kde-format
+msgid "Available attributes:"
+msgstr "Mögulegir eiginleikar:"
+
+#: ui/dnattributeorderconfigwidget.cpp:92
+#, kde-format
+msgid "Current attribute order:"
+msgstr "Núverandi röð eiginleika:"
+
+#: ui/dnattributeorderconfigwidget.cpp:112
+#, kde-format
+msgid "All others"
+msgstr "Allir aðrir"
+
+#: ui/dnattributeorderconfigwidget.cpp:129
+#, kde-format
+msgid "Move to top"
+msgstr "Færa efst"
+
+#: ui/dnattributeorderconfigwidget.cpp:130
+#, kde-format
+msgid "Move one up"
+msgstr "Færa upp um einn"
+
+#: ui/dnattributeorderconfigwidget.cpp:131
+#, kde-format
+msgid "Remove from current attribute order"
+msgstr "Fjarlægja úr núverandi röð eiginleika"
+
+#: ui/dnattributeorderconfigwidget.cpp:132
+#, kde-format
+msgid "Add to current attribute order"
+msgstr "Bæta við núverandi röð eiginleika"
+
+#: ui/dnattributeorderconfigwidget.cpp:133
+#, kde-format
+msgid "Move one down"
+msgstr "Færa niður um einn"
+
+#: ui/dnattributeorderconfigwidget.cpp:134
+#, kde-format
+msgid "Move to bottom"
+msgstr "Færa neðst"
+
+#: ui/keyapprovaldialog.cpp:87
+#, kde-kuit-format
+msgid "<placeholder>none</placeholder>"
+msgstr ""
+
+#: ui/keyapprovaldialog.cpp:88
+#, kde-format
+msgid "Never Encrypt with This Key"
+msgstr "Aldrei dulrita með þessum lykli"
+
+#: ui/keyapprovaldialog.cpp:89
+#, kde-format
+msgid "Always Encrypt with This Key"
+msgstr "Alltaf dulrita með þessum lykli"
+
+#: ui/keyapprovaldialog.cpp:90
+#, kde-format
+msgid "Encrypt Whenever Encryption is Possible"
+msgstr "Dulrita þegar dulritun er möguleg"
+
+#: ui/keyapprovaldialog.cpp:91
+#, kde-format
+msgid "Always Ask"
+msgstr "Alltaf spyrja"
+
+#: ui/keyapprovaldialog.cpp:92
+#, kde-format
+msgid "Ask Whenever Encryption is Possible"
+msgstr "Spyrja þegar dulritun er möguleg"
+
+#: ui/keyapprovaldialog.cpp:113
+#, kde-format
+msgid "Encryption Key Approval"
+msgstr "Staðfesting dulritunarlykils"
+
+#: ui/keyapprovaldialog.cpp:129
+#, kde-format
+msgid "The following keys will be used for encryption:"
+msgstr "Eftirfarandi lyklar verða notaðir til dulritunar:"
+
+#: ui/keyapprovaldialog.cpp:145
+#, kde-format
+msgid "Your keys:"
+msgstr "Þínir lyklar:"
+
+#: ui/keyapprovaldialog.cpp:157
+#, kde-format
+msgid "Recipient:"
+msgstr "Móttakandi:"
+
+#: ui/keyapprovaldialog.cpp:162
+#, kde-format
+msgid "Encryption keys:"
+msgstr "Dulritunarlyklar:"
+
+#: ui/keyapprovaldialog.cpp:169
+#, kde-format
+msgid "Encryption preference:"
+msgstr "Dulritunarstillingar:"
+
+#: ui/keyrequester.cpp:118
+#, kde-format
+msgid "Clear"
+msgstr ""
+
+#: ui/keyrequester.cpp:121
+#, kde-format
+msgid "Change..."
+msgstr "Breyta..."
+
+#: ui/keyrequester.cpp:232 ui/keyselectiondialog.cpp:256
+#, kde-kuit-format
+msgid "<placeholder>unknown</placeholder>"
+msgstr ""
+
+#: ui/keyrequester.cpp:246 ui/keyselectiondialog.cpp:657
+#, kde-format
+msgid ""
+"<qt><p>An error occurred while fetching the keys from the backend:</p><p><b>"
+"%1</b></p></qt>"
+msgstr ""
+"<qt> <p>Villa kom upp við að sækja lykla frá bakenda:</p><p><b>%1</b></p></"
+"qt>"
+
+#: ui/keyrequester.cpp:251 ui/keyrequester.cpp:283 ui/keyrequester.cpp:306
+#: ui/keyselectiondialog.cpp:630 ui/keyselectiondialog.cpp:662
+#, kde-format
+msgid "Key Listing Failed"
+msgstr "Ekki tókst að birta lyklalista"
+
+#: ui/keyrequester.cpp:281
+#, kde-format
+msgid ""
+"The OpenPGP backend does not support listing keys. Check your installation."
+msgstr "OpenPGP bakendinn styður ekki lyklalista. Athugaðu uppsetningu þína."
+
+#: ui/keyrequester.cpp:304
+#, kde-format
+msgid ""
+"The S/MIME backend does not support listing keys. Check your installation."
+msgstr "S/MIME bakendinn styður ekki lyklalista. Athugaðu uppsetningu þína."
+
+#: ui/keyrequester.cpp:426
+#, kde-format
+msgid "OpenPGP Key Selection"
+msgstr "OpenPGP lyklaval"
+
+#: ui/keyrequester.cpp:427
+#, kde-format
+msgid "Please select an OpenPGP key to use."
+msgstr "Vinsamlega veldu OpenPGP lykil til notkunar."
+
+#: ui/keyrequester.cpp:429
+#, kde-format
+msgid "S/MIME Key Selection"
+msgstr "S/MIME lyklaval"
+
+#: ui/keyrequester.cpp:430
+#, kde-format
+msgid "Please select an S/MIME key to use."
+msgstr "Vinsamlega veldu S/MIME lykil til notkunar."
+
+#: ui/keyrequester.cpp:432
+#, kde-format
+msgid "Key Selection"
+msgstr "Lyklaval"
+
+#: ui/keyrequester.cpp:433
+#, kde-format
+msgid "Please select an (OpenPGP or S/MIME) key to use."
+msgstr "Vinsamlega veldu (OpenPGP eða S/MIME) lykil til notkunar."
+
+#: ui/keyselectioncombo.cpp:195
+#, kde-format
+msgctxt "Name <email> (validity, type, created: date)"
+msgid "%1 (%2, %3, created: %4)"
+msgstr ""
+
+#: ui/keyselectioncombo.cpp:196
+#, kde-format
+msgctxt "Name <email>"
+msgid "%1 <%2>"
+msgstr ""
+
+#: ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "OpenPGP"
+msgstr "OpenPGP"
+
+#: ui/keyselectioncombo.cpp:347
+#, fuzzy, kde-format
+#| msgid "Fetching keys..."
+msgid "Loading keys ..."
+msgstr "Sæki lykla..."
+
+#: ui/keyselectiondialog.cpp:98
+#, kde-format
+msgid "The key is not valid."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:106
+#, kde-format
+msgid "The key is expired."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:110
+#, kde-format
+msgid "The key is revoked."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:114
+#, kde-format
+msgid "The key is disabled."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:122
+#, fuzzy, kde-format
+#| msgid "The following keys will be used for encryption:"
+msgid "The key is not designated for encryption."
+msgstr "Eftirfarandi lyklar verða notaðir til dulritunar:"
+
+#: ui/keyselectiondialog.cpp:128
+#, kde-format
+msgid "The key is not designated for signing."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:134
+#, kde-format
+msgid "The key is not designated for certifying."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:140
+#, kde-format
+msgid "The key is not designated for authentication."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:148
+#, kde-format
+msgid "The key is not secret."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:163
+#, kde-format
+msgid "The key is not trusted enough."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:169
+#, kde-format
+msgid "The key can be used."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:230
+#, kde-format
+msgid "Key ID"
+msgstr "Auðkenni lykils"
+
+#: ui/keyselectiondialog.cpp:231
+#, kde-format
+msgid "User ID"
+msgstr "Auðkenni notanda"
+
+#: ui/keyselectiondialog.cpp:279
+#, kde-format
+msgid "never"
+msgstr "aldrei"
+
+#: ui/keyselectiondialog.cpp:289 ui/keyselectiondialog.cpp:291
+#: ui/keyselectiondialog.cpp:300 ui/keyselectiondialog.cpp:302
+#, kde-format
+msgid "unknown"
+msgstr "óþekkt"
+
+#: ui/keyselectiondialog.cpp:289
+#, kde-format
+msgid "OpenPGP key for <b>%1</b>"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:291
+#, kde-format
+msgid "S/MIME key for <b>%1</b>"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:298
+#, kde-format
+msgctxt "Key creation date"
+msgid "Created"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:299
+#, kde-format
+msgctxt "Key Expiration date"
+msgid "Expiry"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:300
+#, kde-format
+msgctxt "Key fingerprint"
+msgid "Fingerprint"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:302
+#, kde-format
+msgctxt "Key issuer"
+msgid "Issuer"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:304
+#, kde-format
+msgctxt "Key status"
+msgid "Status"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:456
+#, kde-format
+msgid "Search for &External Certificates"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:470
+#, kde-format
+msgid "&Search for:"
+msgstr "&Leita að:"
+
+#: ui/keyselectiondialog.cpp:494
+#, kde-format
+msgid "&Remember choice"
+msgstr "&Muna val"
+
+#: ui/keyselectiondialog.cpp:497
+#, kde-format
+msgid ""
+"<qt><p>If you check this box your choice will be stored and you will not be "
+"asked again.</p></qt>"
+msgstr ""
+"<qt><p>Ef þú hakar í þetta box verður val þitt vistað og þú verður ekki "
+"spurð(ur) aftur.</p></qt>"
+
+#: ui/keyselectiondialog.cpp:509
+#, kde-format
+msgid "&Reread Keys"
+msgstr "Endur&lesa lykla"
+
+#: ui/keyselectiondialog.cpp:510
+#, kde-format
+msgid "&Start Certificate Manager"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:628
+#, kde-format
+msgid "No backends found for listing keys. Check your installation."
+msgstr "Enginn bakendi fannst fyrir lyklalista. Athugaðu uppsetningu þína."
+
+#: ui/keyselectiondialog.cpp:644
+#, kde-format
+msgid "Could not start certificate manager; please check your installation."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:646
+#, kde-format
+msgid "Certificate Manager Error"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Checking selected keys..."
+msgstr "Athuga valda lykla..."
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Fetching keys..."
+msgstr "Sæki lykla..."
+
+#: ui/keyselectiondialog.cpp:731
+#, fuzzy, kde-format
+msgid ""
+"<qt>One backend returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgid_plural ""
+"<qt>%1 backends returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgstr[0] ""
+"<qt>Einn bakendi skilaði styttu úttaki.<br>Ekki eru allir mögulegir lyklar "
+"birtir</qt>"
+msgstr[1] ""
+"<qt>%1 bakendar skiluðu styttu úttaki.<br>Ekki eru allir mögulegir lyklar "
+"birtir</qt>"
+
+#: ui/keyselectiondialog.cpp:736
+#, kde-format
+msgid "Key List Result"
+msgstr "Niðurstaða lyklalista"
+
+#: ui/keyselectiondialog.cpp:856
+#, kde-format
+msgid "Recheck Key"
+msgstr "Athuga lykil aftur"
+
+#: ui/messagebox.cpp:71
+#, kde-format
+msgid "Your system does not have support for GnuPG Audit Logs"
+msgstr ""
+
+#: ui/messagebox.cpp:72
+#, kde-format
+msgid "System Error"
+msgstr ""
+
+#: ui/messagebox.cpp:79
+#, kde-format
+msgid ""
+"An error occurred while trying to retrieve the GnuPG Audit Log:\n"
+"%1"
+msgstr ""
+
+#: ui/messagebox.cpp:81
+#, kde-format
+msgid "GnuPG Audit Log Error"
+msgstr ""
+
+#: ui/messagebox.cpp:88
+#, kde-format
+msgid "No GnuPG Audit Log available for this operation."
+msgstr ""
+
+#: ui/messagebox.cpp:89
+#, kde-format
+msgid "No GnuPG Audit Log"
+msgstr ""
+
+#: ui/messagebox.cpp:109 ui/messagebox.cpp:115
+#, kde-format
+msgid "GnuPG Audit Log Viewer"
+msgstr ""
+
+#: ui/messagebox.cpp:121
+#, kde-format
+msgid "Signing failed: %1"
+msgstr "Undirritun mistókst: %1"
+
+#: ui/messagebox.cpp:122
+#, kde-format
+msgid "Signing successful"
+msgstr ""
+
+#: ui/messagebox.cpp:133
+#, kde-format
+msgid "Encryption failed: %1"
+msgstr "Dulkóðun mistókst: %1"
+
+#: ui/messagebox.cpp:134
+#, fuzzy, kde-format
+#| msgid "Encryption keys:"
+msgid "Encryption successful"
+msgstr "Dulritunarlyklar:"
+
+#: ui/messagebox.cpp:155
+#, fuzzy, kde-format
+#| msgid "Scan Results"
+msgid "Signing Result"
+msgstr "Niðurstöður skönnunar"
+
+#: ui/messagebox.cpp:167
+#, kde-format
+msgid "Signing Error"
+msgstr ""
+
+#: ui/messagebox.cpp:179 ui/messagebox.cpp:203
+#, fuzzy, kde-format
+#| msgid "Encryption keys:"
+msgid "Encryption Result"
+msgstr "Dulritunarlyklar:"
+
+#: ui/messagebox.cpp:191 ui/messagebox.cpp:215
+#, fuzzy, kde-format
+#| msgid "Encryption keys:"
+msgid "Encryption Error"
+msgstr "Dulritunarlyklar:"
+
+#: ui/messagebox.cpp:263
+#, kde-format
+msgid "&Show Audit Log"
+msgstr ""
+
+#: ui/progressdialog.cpp:91
+#, kde-format
+msgid "%1: %2"
+msgstr "%1: %2"
+
+#, fuzzy
+#~| msgid "OpenPGP"
+#~ msgctxt "New OpenPGP Directory Server"
+#~ msgid "OpenPGP"
+#~ msgstr "OpenPGP"
+
+#, fuzzy
+#~ msgid "General"
+#~ msgstr "Almenn villa."
+
+#, fuzzy
+#~ msgid "Decryption failed: %1"
+#~ msgstr "Dulkóðun mistókst: %1"
+
+#~ msgid "GpgME"
+#~ msgstr "GpgME"
+
+#~ msgid "GPGME was compiled without support for %1."
+#~ msgstr "GPGME var vistþýtt án stuðnings fyrir %1"
+
+#~ msgid "Engine %1 is not installed properly."
+#~ msgstr "Vél %1 ekki rétt sett upp.>"
+
+#~ msgid "Engine %1 version %2 installed, but at least version %3 is required."
+#~ msgstr "Vél %1 útgáfa %2 uppsett, en útgáfu %3 er krafist."
+
+#~ msgid "Unknown problem with engine for protocol %1."
+#~ msgstr "Óþekkt vandamál með vél fyrir samskiptareglu %1"
+
+#, fuzzy
+#~| msgid "program cannot be executed"
+#~ msgid "program terminated unexpectedly"
+#~ msgstr "ekki var hægt að ræsa forrit"
+
+#, fuzzy
+#~| msgid "program cannot be executed"
+#~ msgid "program not found or cannot be started"
+#~ msgstr "ekki var hægt að ræsa forrit"
+
+#, fuzzy
+#~| msgid "<qt>Failed to execute gpgconf:<br>%1</qt>"
+#~ msgid "<qt>Failed to execute gpgconf:<p>%1</p></qt>"
+#~ msgstr "<qt>Gat ekki ræst gpgconf:<br>%1</qt>"
+
+#, fuzzy
+#~| msgid ""
+#~| "Could not start gpgconf\n"
+#~| "Check that gpgconf is in the PATH and that it can be started"
+#~ msgid ""
+#~ "Could not start gpgconf.\n"
+#~ "Check that gpgconf is in the PATH and that it can be started."
+#~ msgstr ""
+#~ "Gat ekki ræst gpgconf\n"
+#~ "Athugaðu hvort gpgconf sé í PATH og hægt sé að ræsa það"
+
+#~ msgid "Error from gpgconf while saving configuration: %1"
+#~ msgstr "Villa frá gpgconf við vistun stillinga: %1"
+
+#~ msgid "Generating DSA key..."
+#~ msgstr "Bý til DSA lykil..."
+
+#~ msgid "Generating ElGamal key..."
+#~ msgstr "Bý til ElGamal lykil..."
+
+#~ msgid "Searching for a large prime number..."
+#~ msgstr "Leita að stórri prímtölu..."
+
+#, fuzzy
+#~| msgid ""
+#~| "Waiting for new entropy from random number generator (you might want to "
+#~| "excercise the harddisks or move the mouse)..."
+#~ msgid ""
+#~ "Waiting for new entropy from random number generator (you might want to "
+#~ "exercise the harddisks or move the mouse)..."
+#~ msgstr ""
+#~ "Bíð eftir nýju gildi frá slembitöluvélinni (þú gætir vilja hreyfa músina "
+#~ "eða láta harða diskinn vinna)..."
+
+#~ msgid "Please wait..."
+#~ msgstr "Vinsamlega bíðið..."
+
+#~ msgid ""
+#~ "Starting gpg-agent (you should consider starting a global instance "
+#~ "instead)..."
+#~ msgstr ""
+#~ "Ræsi gpg-agent (þú ættir að íhuga að ræsa víðvært ferli í staðinn)..."
+
+#, fuzzy
+#~ msgid "While scanning for %1 support in backend %2:"
+#~ msgstr "Við leit að S/MIME stuðningi í bakenda %1:"
+
+#~ msgctxt "progress info: \"%1 of %2\""
+#~ msgid "%1/%2"
+#~ msgstr "%1/%2"
+
+#~ msgid ""
+#~ "OpenPGP key for %1\n"
+#~ "Created: %2\n"
+#~ "Expiry: %3\n"
+#~ "Fingerprint: %4"
+#~ msgstr ""
+#~ "OpenPGP lykill fyrir %1\n"
+#~ "Búinn til: %2\n"
+#~ "Rennur út: %3\n"
+#~ "Fingrafar: %4"
+
+#~ msgid ""
+#~ "S/MIME key for %1\n"
+#~ "Created: %2\n"
+#~ "Expiry: %3\n"
+#~ "Fingerprint: %4\n"
+#~ "Issuer: %5"
+#~ msgstr ""
+#~ "S/MIME lykill fyrir %1\n"
+#~ "Búinn til: %2\n"
+#~ "Rennur út: %3\n"
+#~ "Fingrafar: %4\n"
+#~ "Útgefandi: %5"
+
+#~ msgid "&Server name:"
+#~ msgstr "H&eiti þjóns:"
+
+#~ msgid "389"
+#~ msgstr "389"
+
+#~ msgid "&User name (optional):"
+#~ msgstr "&Notandanafn (má sleppa):"
+
+#~ msgid "Pass&word (optional):"
+#~ msgstr "L&ykilorð (má sleppa):"
+
+#~ msgid "&Base DN:"
+#~ msgstr "&Grunn DN:"
+
+#~ msgid "&Port:"
+#~ msgstr "&Gátt:"
+
+#~ msgctxt "NAME OF TRANSLATORS"
+#~ msgid "Your names"
+#~ msgstr "Richard Allen, Þröstur Svanbergsson"
+
+#~ msgctxt "EMAIL OF TRANSLATORS"
+#~ msgid "Your emails"
+#~ msgstr "ra@ra.is, throstur@bylur.net"
+
+#~ msgid "failed"
+#~ msgstr "mistókst"
+
+#~ msgid "Available Backends"
+#~ msgstr "Bakendar í boði"
+
+#~ msgid "Confi&gure..."
+#~ msgstr "S&tilla..."
+
+#~ msgid "Rescan"
+#~ msgstr "Skanna aftur"
+
+#~ msgid "The following problems where encountered during scanning:"
+#~ msgstr "Eftirfarandi vandamál komu upp við skönnun:"
+
+#, fuzzy
+#~| msgid "Scan Results"
+#~ msgctxt "@title:window Results of the scanning"
+#~ msgid "Scan Results"
+#~ msgstr "Niðurstöður skönnunar"
+
+#~ msgid "(Unknown Protocol)"
+#~ msgstr "(Óþekktur samskiptamáti)"
+
+#~ msgid "Error while initializing plugin \"%1\""
+#~ msgstr "Villa við ræsingu íforritsins \"%1\""
+
+#~ msgid ""
+#~ "You need a passphrase to unlock the secret key for user:<br/> %1 (retry)"
+#~ msgstr ""
+#~ "Þú þarft lykilorð til að aflæsa leyndarlykli notanda:<br/> %1 (reyna "
+#~ "aftur)"
+
+#~ msgid "You need a passphrase to unlock the secret key for user:<br/> %1"
+#~ msgstr "Þú þarft lykilorð til að aflæsa leyndarlykli notanda:<br/> %1"
+
+#, fuzzy
+#~ msgid ""
+#~ "This dialog will reappear every time the passphrase is needed. For a more "
+#~ "secure solution that also allows caching the passphrase, use gpg-agent."
+#~ msgstr ""
+#~ "Þessi gluggi mun birtast í hvert skipti sem þarf að slá inn lykilorðið. "
+#~ "Settu upp gpg-agent ef þú vilt öruggari lausn sem leyfir einnig geymslu "
+#~ "lykilorðsins."
+
+#~ msgid "gpg-agent is part of gnupg-%1, which you can download from %2"
+#~ msgstr "gpg-agent er hluti af gnupg-%1, sem þú getur sótt frá %2"
+
+#, fuzzy
+#~ msgid "Enter passphrase:"
+#~ msgstr "Ekkert lykilorð."
+
+#~ msgid "Passphrase Dialog"
+#~ msgstr "Lykilorðagluggi"
+
+#, fuzzy
+#~ msgid "Configure"
+#~ msgstr "S&tilla..."
+
+#~ msgid "Port"
+#~ msgstr "Gátt"
+
+#~ msgid "&Add Service..."
+#~ msgstr "&Bæta við þjónustu..."
+
+#~ msgid "&Remove Service"
+#~ msgstr "&Fjarlægja þjónustu"
+
+#~ msgid "<unnamed>"
+#~ msgstr "<nafnlaust>"
+
+#~ msgid "<none>"
+#~ msgstr "<ekkert>"
+
+#~ msgid "<unknown>"
+#~ msgstr "<óþekkt>"
+
+#~ msgid "Kpgp/gpg"
+#~ msgstr "Kpgp/gpg"
+
+#~ msgid "Kpgp/pgp v2"
+#~ msgstr "Kpgp/pgp v2"
+
+#~ msgid "Kpgp/pgp v5"
+#~ msgstr "Kpgp/pgp v5"
+
+#~ msgid "Kpgp/pgp v6"
+#~ msgstr "Kpgp/pgp v6"
+
+#~ msgid "This backend does not support S/MIME"
+#~ msgstr "Þessi bakendi styður ekki S/MIME"
+
+#~ msgid "Please enter your passphrase:"
+#~ msgstr "Vinsamlegast sláðu inn lykilorð þitt:"
--- /dev/null
+# translation of libkleopatra.po to Italian
+# Alessandro Pasotti <ale.pas@tiscalinet.it>, 2004, 2005.
+# Alessandro Astarita <aleast@capri.it>, 2004.
+# Andrea Rizzi <rizzi@kde.org>, 2004.
+# Luciano Montanaro <mikelima@cirulla.net>, 2007, 2008, 2010.
+# Federico Zenith <federico.zenith@member.fsf.org>, 2010, 2013, 2014.
+# Luigi Toscano <luigi.toscano@tiscali.it>, 2016, 2017.
+msgid ""
+msgstr ""
+"Project-Id-Version: libkleopatra\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2017-07-12 06:56+0200\n"
+"PO-Revision-Date: 2017-07-16 14:27+0100\n"
+"Last-Translator: Luigi Toscano <luigi.toscano@tiscali.it>\n"
+"Language-Team: Italian <kde-i18n-it@kde.org>\n"
+"Language: it\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Lokalize 2.0\n"
+
+#: kleo/checksumdefinition.cpp:107
+#, kde-format
+msgid "Error in checksum definition %1: %2"
+msgstr "Errore nella definizione del codice di controllo %1: %2"
+
+#: kleo/checksumdefinition.cpp:157
+#, kde-format
+msgid "Cannot use both %f and | in '%1'"
+msgstr "Impossibile usare sia %f che | in «%1»"
+
+#: kleo/checksumdefinition.cpp:167
+#, kde-format
+msgid "Quoting error in '%1' entry"
+msgstr "Errore di virgolette nella voce «%1»"
+
+#: kleo/checksumdefinition.cpp:170
+#, kde-format
+msgid "'%1' too complex (would need shell)"
+msgstr "«%1» troppo complesso (richiederebbe una shell)"
+
+#: kleo/checksumdefinition.cpp:174
+#, kde-format
+msgid "'%1' entry is empty/missing"
+msgstr "La voce «%1» è vuota o mancante"
+
+#: kleo/checksumdefinition.cpp:183
+#, kde-format
+msgid "'%1' empty or not found"
+msgstr "«%1» vuoto o non trovato"
+
+#: kleo/checksumdefinition.cpp:222
+#, kde-format
+msgid "'id' entry is empty/missing"
+msgstr "la voce «id» è vuota o mancante"
+
+#: kleo/checksumdefinition.cpp:225
+#, kde-format
+msgid "'output-file' entry is empty/missing"
+msgstr "la voce «output-file» è vuota o mancante"
+
+#: kleo/checksumdefinition.cpp:228
+#, kde-format
+msgid "'file-patterns' entry is empty/missing"
+msgstr "la voce «file-patterns» è vuota o mancante"
+
+#: kleo/checksumdefinition.cpp:395
+#, kde-format
+msgid "Caught unknown exception in group %1"
+msgstr "Ricevuta eccezione sconosciuta nel gruppo %1"
+
+#: kleo/dn.cpp:507
+#, kde-format
+msgid "Common name"
+msgstr "Nome comune"
+
+#: kleo/dn.cpp:508
+#, kde-format
+msgid "Surname"
+msgstr "Nome proprio"
+
+#: kleo/dn.cpp:509
+#, kde-format
+msgid "Given name"
+msgstr "Nome"
+
+#: kleo/dn.cpp:510
+#, kde-format
+msgid "Location"
+msgstr "Indirizzo"
+
+#: kleo/dn.cpp:511
+#, kde-format
+msgid "Title"
+msgstr "Titolo"
+
+#: kleo/dn.cpp:512
+#, kde-format
+msgid "Organizational unit"
+msgstr "Unità organizzativa"
+
+#: kleo/dn.cpp:513
+#, kde-format
+msgid "Organization"
+msgstr "Organizzazione"
+
+#: kleo/dn.cpp:514
+#, kde-format
+msgid "Postal code"
+msgstr "Codice postale"
+
+#: kleo/dn.cpp:515
+#, kde-format
+msgid "Country code"
+msgstr "Codice del paese"
+
+#: kleo/dn.cpp:516
+#, kde-format
+msgid "State or province"
+msgstr "Stato o provincia"
+
+#: kleo/dn.cpp:517
+#, kde-format
+msgid "Domain component"
+msgstr "Componente dominio"
+
+#: kleo/dn.cpp:518
+#, kde-format
+msgid "Business category"
+msgstr "Categoria lavorativa"
+
+#: kleo/dn.cpp:519
+#, kde-format
+msgid "Email address"
+msgstr "Indirizzo di posta"
+
+#: kleo/dn.cpp:520
+#, kde-format
+msgid "Mail address"
+msgstr "Indirizzo postale"
+
+#: kleo/dn.cpp:521
+#, kde-format
+msgid "Mobile phone number"
+msgstr "Telefono cellulare"
+
+#: kleo/dn.cpp:522
+#, kde-format
+msgid "Telephone number"
+msgstr "Numero di telefono"
+
+#: kleo/dn.cpp:523
+#, kde-format
+msgid "Fax number"
+msgstr "Fax"
+
+#: kleo/dn.cpp:524
+#, kde-format
+msgid "Street address"
+msgstr "Via"
+
+#: kleo/dn.cpp:525
+#, kde-format
+msgid "Unique ID"
+msgstr "ID unico"
+
+#: kleo/enum.cpp:57
+#, kde-format
+msgid "Inline OpenPGP (deprecated)"
+msgstr "OpenPGP inline (deprecato)"
+
+#: kleo/enum.cpp:62
+#, kde-format
+msgid "OpenPGP/MIME"
+msgstr "OpenPGP/MIME"
+
+#: kleo/enum.cpp:67 ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "S/MIME"
+msgstr "S/MIME"
+
+#: kleo/enum.cpp:72
+#, kde-format
+msgid "S/MIME Opaque"
+msgstr "S/MIME opaco"
+
+#: kleo/enum.cpp:104
+#, kde-format
+msgid "Any"
+msgstr "Tutti"
+
+#: kleo/enum.cpp:177
+#, kde-format
+msgid "Never Encrypt"
+msgstr "Non cifrare mai"
+
+#: kleo/enum.cpp:179
+#, kde-format
+msgid "Always Encrypt"
+msgstr "Cifra sempre"
+
+#: kleo/enum.cpp:181
+#, kde-format
+msgid "Always Encrypt If Possible"
+msgstr "Cifra sempre, se possibile"
+
+#: kleo/enum.cpp:183 kleo/enum.cpp:240
+#, kde-format
+msgid "Ask"
+msgstr "Chiedi"
+
+#: kleo/enum.cpp:185 kleo/enum.cpp:242
+#, kde-format
+msgid "Ask Whenever Possible"
+msgstr "Chiedi quando è possibile"
+
+#: kleo/enum.cpp:187
+#, kde-kuit-format
+msgctxt "no specific preference"
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>nessuna</placeholder>"
+
+#: kleo/enum.cpp:234
+#, kde-format
+msgid "Never Sign"
+msgstr "Non firmare mai"
+
+#: kleo/enum.cpp:236
+#, kde-format
+msgid "Always Sign"
+msgstr "Firma sempre"
+
+#: kleo/enum.cpp:238
+#, kde-format
+msgid "Always Sign If Possible"
+msgstr "Firma sempre, se possibile"
+
+#: kleo/enum.cpp:244
+#, kde-format
+msgctxt "no specific preference"
+msgid "<none>"
+msgstr "<none>"
+
+#: kleo/keyfiltermanager.cpp:85
+#, kde-format
+msgid "All Certificates"
+msgstr "Tutti i certificati"
+
+#: kleo/keyfiltermanager.cpp:100
+#, kde-format
+msgid "My Certificates"
+msgstr "I miei certificati"
+
+#: kleo/keyfiltermanager.cpp:118
+#, kde-format
+msgid "Trusted Certificates"
+msgstr "Certificati affidabili"
+
+#: kleo/keyfiltermanager.cpp:135
+#, kde-format
+msgid "Fully Trusted Certificates"
+msgstr "Certificati totalmente affidabili"
+
+#: kleo/keyfiltermanager.cpp:152
+#, kde-format
+msgid "Other Certificates"
+msgstr "Altri certificati"
+
+#: kleo/keyfiltermanager.cpp:166
+#, kde-format
+msgid "VS-compliant Certificates"
+msgstr "Certificati conformi allo standard (tedesco) VS"
+
+#: kleo/keyfiltermanager.cpp:184
+#, kde-format
+msgid "Not validated Certificates"
+msgstr "Certificati non validati"
+
+#: ui/auditlogviewer.cpp:49
+#, kde-format
+msgid "View GnuPG Audit Log"
+msgstr "Mostra il registro di controllo di GnuPG"
+
+#: ui/auditlogviewer.cpp:53
+#, kde-format
+msgid "&Copy to Clipboard"
+msgstr "&Copia negli appunti"
+
+#: ui/auditlogviewer.cpp:59
+#, kde-format
+msgid "&Save to Disk..."
+msgstr "&Salva su disco..."
+
+#: ui/auditlogviewer.cpp:95
+#, kde-format
+msgid "Choose File to Save GnuPG Audit Log to"
+msgstr "Scegli il file su cui salvare il registro di controllo"
+
+#: ui/auditlogviewer.cpp:118
+#, kde-format
+msgid "Could not save to file \"%1\": %2"
+msgstr "Non è stato possibile salvare il file «%1»: %2"
+
+#: ui/auditlogviewer.cpp:120
+#, kde-format
+msgid "File Save Error"
+msgstr "Errore nel salvataggio del file"
+
+#: ui/cryptoconfigdialog.cpp:44
+#, kde-format
+msgid "Configure GnuPG Backend"
+msgstr "Configura il motore GnuPG"
+
+#: ui/cryptoconfigdialog.cpp:55
+#, kde-format
+msgid "&Reset"
+msgstr "Azze&ra"
+
+#: ui/cryptoconfigmodule.cpp:160
+#, kde-format
+msgid "GpgConf Error"
+msgstr "Errore di GpgConf"
+
+#: ui/cryptoconfigmodule.cpp:216
+#, kde-format
+msgid ""
+"The gpgconf tool used to provide the information for this dialog does not "
+"seem to be installed properly. It did not return any components. Try running "
+"\"%1\" on the command line for more information."
+msgstr ""
+"Lo strumento gpgconf usato per fornire le informazioni per questa finestra "
+"non sembra installato correttamente. Non ha restituito alcun componente. "
+"Prova ad eseguire «%1» dalla riga di comando per avere maggiori informazioni."
+
+#: ui/cryptoconfigmodule.cpp:496
+#, kde-format
+msgctxt ""
+"Translate this to 'yes' or 'no' (use the English words!) depending on "
+"whether your language uses Sentence style capitalisation in GUI labels (yes) "
+"or not (no). Context: We get some backend strings in that have the wrong "
+"capitalizaion (in English, at least) so we need to force the first character "
+"to upper-case. It is this behaviour you can control for your language with "
+"this translation."
+msgid "yes"
+msgstr "yes"
+
+#: ui/cryptoconfigmodule.cpp:546
+#, kde-format
+msgid "0 - None"
+msgstr "0 – Nessuno"
+
+#: ui/cryptoconfigmodule.cpp:547
+#, kde-format
+msgid "1 - Basic"
+msgstr "1 – Base"
+
+#: ui/cryptoconfigmodule.cpp:548
+#, kde-format
+msgid "2 - Verbose"
+msgstr "2 – Verboso"
+
+#: ui/cryptoconfigmodule.cpp:549
+#, kde-format
+msgid "3 - More Verbose"
+msgstr "3 – Molto verboso"
+
+#: ui/cryptoconfigmodule.cpp:550
+#, kde-format
+msgid "4 - All"
+msgstr "4 – Completo"
+
+#: ui/cryptoconfigmodule.cpp:559
+#, kde-format
+msgid "Set the debugging level to"
+msgstr "Imposta il livello di debug a"
+
+#: ui/cryptoconfigmodule.cpp:787
+#, kde-format
+msgid "Show..."
+msgstr "Mostra..."
+
+#: ui/cryptoconfigmodule.cpp:787 ui/cryptoconfigmodule.cpp:876
+#, kde-format
+msgid "Edit..."
+msgstr "Modifica..."
+
+#: ui/cryptoconfigmodule.cpp:841
+#, kde-format
+msgid "Configure LDAP Servers"
+msgstr "Configura i server LDAP"
+
+#: ui/cryptoconfigmodule.cpp:862
+#, kde-format
+msgid "None configured"
+msgstr "Nessuno configurato"
+
+#: ui/cryptoconfigmodule.cpp:864
+#, kde-format
+msgid "1 server configured"
+msgid_plural "%1 servers configured"
+msgstr[0] "1 server configurato"
+msgstr[1] "%1 server configurati"
+
+#: ui/cryptoconfigmodule.cpp:879
+#, kde-format
+msgid "Use keyserver at"
+msgstr "Usa il server delle chiavi su"
+
+#: ui/cryptoconfigmodule.cpp:968
+#, kde-format
+msgid "Configure Keyservers"
+msgstr "Configura i server delle chiavi"
+
+#: ui/directoryserviceswidget.cpp:67
+#, kde-format
+msgctxt "default server name, keep it a valid domain name, ie. no spaces"
+msgid "server"
+msgstr "server"
+
+#: ui/directoryserviceswidget.cpp:95
+#, kde-format
+msgid "hkp"
+msgstr "hkp"
+
+#: ui/directoryserviceswidget.cpp:96
+#, kde-format
+msgid "http"
+msgstr "http"
+
+#: ui/directoryserviceswidget.cpp:97
+#, kde-format
+msgid "https"
+msgstr "https"
+
+#: ui/directoryserviceswidget.cpp:98
+#, kde-format
+msgid "ftp"
+msgstr "ftp"
+
+#: ui/directoryserviceswidget.cpp:99
+#, kde-format
+msgid "ftps"
+msgstr "ftps"
+
+#: ui/directoryserviceswidget.cpp:100
+#, kde-format
+msgid "ldap"
+msgstr "ldap"
+
+#: ui/directoryserviceswidget.cpp:101
+#, kde-format
+msgid "ldaps"
+msgstr "ldaps"
+
+#: ui/directoryserviceswidget.cpp:588
+#, kde-format
+msgid "Server Name"
+msgstr "Nome del server"
+
+#: ui/directoryserviceswidget.cpp:589
+#, kde-format
+msgid "Server Port"
+msgstr "Porta del server"
+
+#: ui/directoryserviceswidget.cpp:590
+#, kde-format
+msgid "Base DN"
+msgstr "DN base"
+
+#: ui/directoryserviceswidget.cpp:591
+#, kde-format
+msgid "User Name"
+msgstr "Nome utente"
+
+#: ui/directoryserviceswidget.cpp:592
+#, kde-format
+msgid "Password"
+msgstr "Password"
+
+#: ui/directoryserviceswidget.cpp:614
+#, kde-format
+msgid "(read-only)"
+msgstr "(sola lettura)"
+
+#: ui/directoryserviceswidget.cpp:616
+#, kde-format
+msgctxt "amended tooltip; %1: original tooltip"
+msgid "%1 (read-only)"
+msgstr "%1 (sola lettura)"
+
+#: ui/directoryserviceswidget.cpp:739
+#, kde-format
+msgid ""
+"Enter the name or IP address of the server hosting the directory service."
+msgstr ""
+"Inserisci il nome o l'indirizzo IP del server che fornisce il servizio di "
+"directory."
+
+#: ui/directoryserviceswidget.cpp:741
+#, kde-format
+msgid ""
+"<b>(Optional, the default is fine in most cases)</b> Pick the port number "
+"the directory service is listening on."
+msgstr ""
+"<b>(Facoltativo, il valore predefinito va bene per la maggior parte dei "
+"casi)</b> Scegli il numero di porta su cui è in ascolto il servizio di "
+"directory."
+
+#: ui/directoryserviceswidget.cpp:744
+#, kde-format
+msgid ""
+"<b>(Only for LDAP)</b> Enter the base DN for this LDAP server to limit "
+"searches to only that subtree of the directory."
+msgstr ""
+"<b>(Solo per LDAP)</b> Inserisci il DN base di questo server LDAP per "
+"limitare le ricerche a solo quel sottoalbero della directory."
+
+#: ui/directoryserviceswidget.cpp:747
+#, kde-format
+msgid "<b>(Optional)</b> Enter your user name here, if needed."
+msgstr "<b>(Facoltativo)</b> Inserisci qui il tuo nome utente, se necessario."
+
+#: ui/directoryserviceswidget.cpp:749
+#, kde-format
+msgid ""
+"<b>(Optional, not recommended)</b> Enter your password here, if needed. Note "
+"that the password will be saved in the clear in a config file in your home "
+"directory."
+msgstr ""
+"<b>(Facoltativa, non raccomandata)</b> Inserisci qui la tua password, se "
+"necessario. Nota che la password sarà conservata in chiaro in un file di "
+"configurazione nella tua directory home."
+
+#. i18n: ectx: property (windowTitle), widget (QWidget, DirectoryServicesWidget)
+#: ui/directoryserviceswidget.ui:14
+#, kde-format
+msgid "Directory Services Configuration"
+msgstr "Configurazione servizi di directory"
+
+#. i18n: ectx: property (text), widget (QLabel, pgpKSLabel)
+#: ui/directoryserviceswidget.ui:22
+#, kde-format
+msgid "OpenPGP Keyserver:"
+msgstr "Server delle chiave OpenPGP:"
+
+#. i18n: ectx: property (title), widget (QGroupBox, x500LA)
+#: ui/directoryserviceswidget.ui:35
+#, kde-format
+msgid "X509 Directory services:"
+msgstr "Servizi di directory X509:"
+
+#. i18n: ectx: property (whatsThis), widget (QTreeView, treeView)
+#: ui/directoryserviceswidget.ui:43
+#, kde-format
+msgid ""
+"This is a list of all directory services that are configured for use with "
+"X.509."
+msgstr ""
+"Questo è l'elenco di tutti i servizi di directory configurati per essere "
+"usati con X.509."
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:70
+#, kde-format
+msgid "Click to add a service"
+msgstr "Fai clic per aggiungere un servizio"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:73
+#, kde-format
+msgid ""
+"Click this button to create a new directory service entry as a clone of the "
+"currently selected one (or with default values, if no other is selected). "
+"You can then configure details in the table on the left hand."
+msgstr ""
+"Fai clic su questo pulsante per creare un nuovo servizio di directory come "
+"clone di quello attualmente selezionato (o con i valori predefiniti, se non "
+"ne è selezionato nessuno). In seguito potrai configurare i dettagli nella "
+"tabella sul lato sinistro."
+
+#. i18n: ectx: property (text), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:76
+#, kde-format
+msgid "New"
+msgstr "Nuovo"
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:92
+#, kde-format
+msgid "Click to remove the currently selected service"
+msgstr "Fai clic per rimuovere il servizio selezionato"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:95
+#, kde-format
+msgid ""
+"Click this button to remove the currently selected directory service. The "
+"change will only take effect once you acknowledge the main configuration "
+"dialog."
+msgstr ""
+"Fai clic su questo pulsante per rimuovere il servizio di directory "
+"attualmente selezionato. La modifica avrà effetto solo dopo la tua conferma "
+"dalla finestra principale di configurazione."
+
+#. i18n: ectx: property (text), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:98
+#, kde-format
+msgid "Delete"
+msgstr "Elimina"
+
+#. i18n: ectx: property (whatsThis), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:128
+#, kde-format
+msgid ""
+"Use this option to switch display of username and password information on or "
+"off in the above table."
+msgstr ""
+"Usa questa opzione per attivare o disattivare la visualizzazione di nome "
+"utente e password nella tabella sovrastante."
+
+#. i18n: ectx: property (text), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:131
+#, kde-format
+msgid "Show user and password information"
+msgstr "Mostra le informazioni su utente e password"
+
+#: ui/dnattributeorderconfigwidget.cpp:73
+#, kde-format
+msgid "Description"
+msgstr "Descrizione"
+
+#: ui/dnattributeorderconfigwidget.cpp:91
+#, kde-format
+msgid "Available attributes:"
+msgstr "Attributi disponibili:"
+
+#: ui/dnattributeorderconfigwidget.cpp:92
+#, kde-format
+msgid "Current attribute order:"
+msgstr "Ordine attuale degli attributi:"
+
+#: ui/dnattributeorderconfigwidget.cpp:112
+#, kde-format
+msgid "All others"
+msgstr "Tutti gli altri"
+
+#: ui/dnattributeorderconfigwidget.cpp:129
+#, kde-format
+msgid "Move to top"
+msgstr "Sposta in cima"
+
+#: ui/dnattributeorderconfigwidget.cpp:130
+#, kde-format
+msgid "Move one up"
+msgstr "Sposta in su"
+
+#: ui/dnattributeorderconfigwidget.cpp:131
+#, kde-format
+msgid "Remove from current attribute order"
+msgstr "Rimuovi dall'ordine attuale degli attributi"
+
+#: ui/dnattributeorderconfigwidget.cpp:132
+#, kde-format
+msgid "Add to current attribute order"
+msgstr "Aggiungi all'ordine attuale degli attributi"
+
+#: ui/dnattributeorderconfigwidget.cpp:133
+#, kde-format
+msgid "Move one down"
+msgstr "Sposta in giù"
+
+#: ui/dnattributeorderconfigwidget.cpp:134
+#, kde-format
+msgid "Move to bottom"
+msgstr "Sposta in fondo"
+
+#: ui/keyapprovaldialog.cpp:87
+#, kde-kuit-format
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>nessuna</placeholder>"
+
+#: ui/keyapprovaldialog.cpp:88
+#, kde-format
+msgid "Never Encrypt with This Key"
+msgstr "Non cifrare mai con questa chiave"
+
+#: ui/keyapprovaldialog.cpp:89
+#, kde-format
+msgid "Always Encrypt with This Key"
+msgstr "Cifra sempre con questa chiave"
+
+#: ui/keyapprovaldialog.cpp:90
+#, kde-format
+msgid "Encrypt Whenever Encryption is Possible"
+msgstr "Cifra ogni volta che è possibile cifrare"
+
+#: ui/keyapprovaldialog.cpp:91
+#, kde-format
+msgid "Always Ask"
+msgstr "Chiedi sempre conferma"
+
+#: ui/keyapprovaldialog.cpp:92
+#, kde-format
+msgid "Ask Whenever Encryption is Possible"
+msgstr "Chiedi conferma ogni volta che è possibile cifrare"
+
+#: ui/keyapprovaldialog.cpp:113
+#, kde-format
+msgid "Encryption Key Approval"
+msgstr "Approvazione chiave di cifratura"
+
+#: ui/keyapprovaldialog.cpp:129
+#, kde-format
+msgid "The following keys will be used for encryption:"
+msgstr "Le seguenti chiavi saranno usate per la cifratura:"
+
+#: ui/keyapprovaldialog.cpp:145
+#, kde-format
+msgid "Your keys:"
+msgstr "Le tue chiavi:"
+
+#: ui/keyapprovaldialog.cpp:157
+#, kde-format
+msgid "Recipient:"
+msgstr "Destinatario:"
+
+#: ui/keyapprovaldialog.cpp:162
+#, kde-format
+msgid "Encryption keys:"
+msgstr "Chiavi di cifratura:"
+
+#: ui/keyapprovaldialog.cpp:169
+#, kde-format
+msgid "Encryption preference:"
+msgstr "Preferenze cifratura:"
+
+#: ui/keyrequester.cpp:118
+#, kde-format
+msgid "Clear"
+msgstr "Pulisci"
+
+#: ui/keyrequester.cpp:121
+#, kde-format
+msgid "Change..."
+msgstr "Cambia..."
+
+#: ui/keyrequester.cpp:232 ui/keyselectiondialog.cpp:256
+#, kde-kuit-format
+msgid "<placeholder>unknown</placeholder>"
+msgstr "<placeholder>sconosciuta</placeholder>"
+
+#: ui/keyrequester.cpp:246 ui/keyselectiondialog.cpp:657
+#, kde-format
+msgid ""
+"<qt><p>An error occurred while fetching the keys from the backend:</p><p><b>"
+"%1</b></p></qt>"
+msgstr ""
+"<qt><p>Si è verificato un errore durante il recupero le chiavi dal motore:</"
+"p><p><b>%1</b></p></qt>"
+
+#: ui/keyrequester.cpp:251 ui/keyrequester.cpp:283 ui/keyrequester.cpp:306
+#: ui/keyselectiondialog.cpp:630 ui/keyselectiondialog.cpp:662
+#, kde-format
+msgid "Key Listing Failed"
+msgstr "Elenco delle chiavi non riuscito"
+
+#: ui/keyrequester.cpp:281
+#, kde-format
+msgid ""
+"The OpenPGP backend does not support listing keys. Check your installation."
+msgstr ""
+"Il motore OpenPGP non supporta l'elenco delle chiavi. Controlla la tua "
+"installazione."
+
+#: ui/keyrequester.cpp:304
+#, kde-format
+msgid ""
+"The S/MIME backend does not support listing keys. Check your installation."
+msgstr ""
+"Il motore S/MIME non supporta l'elenco delle chiavi. Controlla la tua "
+"installazione."
+
+#: ui/keyrequester.cpp:426
+#, kde-format
+msgid "OpenPGP Key Selection"
+msgstr "Selezione chiave OpenPGP"
+
+#: ui/keyrequester.cpp:427
+#, kde-format
+msgid "Please select an OpenPGP key to use."
+msgstr "Seleziona una chiave OpenPGP da usare."
+
+#: ui/keyrequester.cpp:429
+#, kde-format
+msgid "S/MIME Key Selection"
+msgstr "Selezione chiavi S/MIME"
+
+#: ui/keyrequester.cpp:430
+#, kde-format
+msgid "Please select an S/MIME key to use."
+msgstr "Seleziona una chiave S/MIME da usare."
+
+#: ui/keyrequester.cpp:432
+#, kde-format
+msgid "Key Selection"
+msgstr "Selezione chiavi"
+
+#: ui/keyrequester.cpp:433
+#, kde-format
+msgid "Please select an (OpenPGP or S/MIME) key to use."
+msgstr "Seleziona una chiave (OpenPGP o S/MIME) da usare."
+
+#: ui/keyselectioncombo.cpp:195
+#, kde-format
+msgctxt "Name <email> (validity, type, created: date)"
+msgid "%1 (%2, %3, created: %4)"
+msgstr "%1 (%2, %3, creazione: %4)"
+
+#: ui/keyselectioncombo.cpp:196
+#, kde-format
+msgctxt "Name <email>"
+msgid "%1 <%2>"
+msgstr "%1 <%2>"
+
+#: ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "OpenPGP"
+msgstr "OpenPGP"
+
+#: ui/keyselectioncombo.cpp:347
+#, kde-format
+msgid "Loading keys ..."
+msgstr "Caricamento chiavi..."
+
+#: ui/keyselectiondialog.cpp:98
+#, kde-format
+msgid "The key is not valid."
+msgstr "La chiave non è valida."
+
+#: ui/keyselectiondialog.cpp:106
+#, kde-format
+msgid "The key is expired."
+msgstr "La chiave è scaduta."
+
+#: ui/keyselectiondialog.cpp:110
+#, kde-format
+msgid "The key is revoked."
+msgstr "La chiave è revocata."
+
+#: ui/keyselectiondialog.cpp:114
+#, kde-format
+msgid "The key is disabled."
+msgstr "La chiave è disabilitata."
+
+#: ui/keyselectiondialog.cpp:122
+#, kde-format
+msgid "The key is not designated for encryption."
+msgstr "La chiave non è progettata per la cifratura."
+
+#: ui/keyselectiondialog.cpp:128
+#, kde-format
+msgid "The key is not designated for signing."
+msgstr "La chiave non è progettata per la firma."
+
+#: ui/keyselectiondialog.cpp:134
+#, kde-format
+msgid "The key is not designated for certifying."
+msgstr "La chiave non è progettata per la certificazione."
+
+#: ui/keyselectiondialog.cpp:140
+#, kde-format
+msgid "The key is not designated for authentication."
+msgstr "La chiave non è progettata per l'autenticazione."
+
+#: ui/keyselectiondialog.cpp:148
+#, kde-format
+msgid "The key is not secret."
+msgstr "La chiave non è segreta."
+
+#: ui/keyselectiondialog.cpp:163
+#, kde-format
+msgid "The key is not trusted enough."
+msgstr "La chiave non è sufficientemente affidabile."
+
+#: ui/keyselectiondialog.cpp:169
+#, kde-format
+msgid "The key can be used."
+msgstr "La chiave può essere usata."
+
+#: ui/keyselectiondialog.cpp:230
+#, kde-format
+msgid "Key ID"
+msgstr "ID chiave"
+
+#: ui/keyselectiondialog.cpp:231
+#, kde-format
+msgid "User ID"
+msgstr "ID utente"
+
+#: ui/keyselectiondialog.cpp:279
+#, kde-format
+msgid "never"
+msgstr "mai"
+
+#: ui/keyselectiondialog.cpp:289 ui/keyselectiondialog.cpp:291
+#: ui/keyselectiondialog.cpp:300 ui/keyselectiondialog.cpp:302
+#, kde-format
+msgid "unknown"
+msgstr "sconosciuto"
+
+#: ui/keyselectiondialog.cpp:289
+#, kde-format
+msgid "OpenPGP key for <b>%1</b>"
+msgstr "Chiave OpenPGP per <b>%1</b>"
+
+#: ui/keyselectiondialog.cpp:291
+#, kde-format
+msgid "S/MIME key for <b>%1</b>"
+msgstr "Chiave S/MIME per <b>%1</b>"
+
+#: ui/keyselectiondialog.cpp:298
+#, kde-format
+msgctxt "Key creation date"
+msgid "Created"
+msgstr "Creato"
+
+#: ui/keyselectiondialog.cpp:299
+#, kde-format
+msgctxt "Key Expiration date"
+msgid "Expiry"
+msgstr "Scadenza"
+
+#: ui/keyselectiondialog.cpp:300
+#, kde-format
+msgctxt "Key fingerprint"
+msgid "Fingerprint"
+msgstr "Impronta digitale"
+
+#: ui/keyselectiondialog.cpp:302
+#, kde-format
+msgctxt "Key issuer"
+msgid "Issuer"
+msgstr "Emittente"
+
+#: ui/keyselectiondialog.cpp:304
+#, kde-format
+msgctxt "Key status"
+msgid "Status"
+msgstr "Stato"
+
+#: ui/keyselectiondialog.cpp:456
+#, kde-format
+msgid "Search for &External Certificates"
+msgstr "Cerca certificati &esterni"
+
+#: ui/keyselectiondialog.cpp:470
+#, kde-format
+msgid "&Search for:"
+msgstr "&Cerca:"
+
+#: ui/keyselectiondialog.cpp:494
+#, kde-format
+msgid "&Remember choice"
+msgstr "&Ricordati la scelta"
+
+#: ui/keyselectiondialog.cpp:497
+#, kde-format
+msgid ""
+"<qt><p>If you check this box your choice will be stored and you will not be "
+"asked again.</p></qt>"
+msgstr ""
+"<qt><p>Se selezioni questa casella la tua scelta verrà memorizzata e non ti "
+"sarà più richiesto di scegliere.</p></qt>"
+
+#: ui/keyselectiondialog.cpp:509
+#, kde-format
+msgid "&Reread Keys"
+msgstr "&Rileggi chiavi"
+
+#: ui/keyselectiondialog.cpp:510
+#, kde-format
+msgid "&Start Certificate Manager"
+msgstr "&Avvia il gestore dei certificati"
+
+#: ui/keyselectiondialog.cpp:628
+#, kde-format
+msgid "No backends found for listing keys. Check your installation."
+msgstr ""
+"Nessun motore trovato per elencare le chiavi. Controlla la tua installazione."
+
+#: ui/keyselectiondialog.cpp:644
+#, kde-format
+msgid "Could not start certificate manager; please check your installation."
+msgstr ""
+"Non è stato possibile avviare il gestore dei certificati; verifica "
+"l'installazione."
+
+#: ui/keyselectiondialog.cpp:646
+#, kde-format
+msgid "Certificate Manager Error"
+msgstr "Errore nel gestore dei certificati"
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Checking selected keys..."
+msgstr "Controllo delle chiavi selezionate in corso..."
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Fetching keys..."
+msgstr "Recupero chiavi..."
+
+#: ui/keyselectiondialog.cpp:731
+#, kde-format
+msgid ""
+"<qt>One backend returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgid_plural ""
+"<qt>%1 backends returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgstr[0] ""
+"<qt>Un motore ha restituito dei risultati troncati.<p>Non tutti i tasti "
+"disponibili saranno mostrati</p></qt>"
+msgstr[1] ""
+"<qt>%1 motori hanno restituito dei risultati troncati.<p>Non tutti i tasti "
+"disponibili saranno mostrati</p></qt>"
+
+#: ui/keyselectiondialog.cpp:736
+#, kde-format
+msgid "Key List Result"
+msgstr "Risultati elenco chiavi"
+
+#: ui/keyselectiondialog.cpp:856
+#, kde-format
+msgid "Recheck Key"
+msgstr "Ricontrolla chiave"
+
+#: ui/messagebox.cpp:71
+#, kde-format
+msgid "Your system does not have support for GnuPG Audit Logs"
+msgstr "Il sistema non ha il supporto per il registro di controllo di GnuPG"
+
+#: ui/messagebox.cpp:72
+#, kde-format
+msgid "System Error"
+msgstr "Errore di sistema"
+
+#: ui/messagebox.cpp:79
+#, kde-format
+msgid ""
+"An error occurred while trying to retrieve the GnuPG Audit Log:\n"
+"%1"
+msgstr ""
+"Si è verificato un errore durante il recupero del registro di controllo di "
+"GnuPG:\n"
+"%1"
+
+#: ui/messagebox.cpp:81
+#, kde-format
+msgid "GnuPG Audit Log Error"
+msgstr "Errore di registro di controllo GnuPG"
+
+#: ui/messagebox.cpp:88
+#, kde-format
+msgid "No GnuPG Audit Log available for this operation."
+msgstr "Non sono disponibili i registri di controllo per questa operazione."
+
+#: ui/messagebox.cpp:89
+#, kde-format
+msgid "No GnuPG Audit Log"
+msgstr "Non ci sono registri di controllo di GnuPG"
+
+#: ui/messagebox.cpp:109 ui/messagebox.cpp:115
+#, kde-format
+msgid "GnuPG Audit Log Viewer"
+msgstr "Visore di registri di controllo GnuPG"
+
+#: ui/messagebox.cpp:121
+#, kde-format
+msgid "Signing failed: %1"
+msgstr "Firma non riuscita: %1"
+
+#: ui/messagebox.cpp:122
+#, kde-format
+msgid "Signing successful"
+msgstr "Firma apposta con successo"
+
+#: ui/messagebox.cpp:133
+#, kde-format
+msgid "Encryption failed: %1"
+msgstr "Cifratura non riuscita: %1"
+
+#: ui/messagebox.cpp:134
+#, kde-format
+msgid "Encryption successful"
+msgstr "Cifratura completata con successo"
+
+#: ui/messagebox.cpp:155
+#, kde-format
+msgid "Signing Result"
+msgstr "Risultato della firma"
+
+#: ui/messagebox.cpp:167
+#, kde-format
+msgid "Signing Error"
+msgstr "Errore di firma"
+
+#: ui/messagebox.cpp:179 ui/messagebox.cpp:203
+#, kde-format
+msgid "Encryption Result"
+msgstr "Risultato della cifratura"
+
+#: ui/messagebox.cpp:191 ui/messagebox.cpp:215
+#, kde-format
+msgid "Encryption Error"
+msgstr "Errore di cifratura"
+
+#: ui/messagebox.cpp:263
+#, kde-format
+msgid "&Show Audit Log"
+msgstr "Mo&stra il registro di controllo"
+
+#: ui/progressdialog.cpp:91
+#, kde-format
+msgid "%1: %2"
+msgstr "%1: %2"
+
+#~ msgctxt "New X.509 Directory Server"
+#~ msgid "X.509"
+#~ msgstr "X.509"
+
+#~ msgctxt "New OpenPGP Directory Server"
+#~ msgid "OpenPGP"
+#~ msgstr "OpenPGP"
+
+#~ msgid "Scheme"
+#~ msgstr "Schema"
+
+#~ msgid "X.509"
+#~ msgstr "X.509"
+
+#~ msgid ""
+#~ "Select the access scheme (scheme) that the directory service is available "
+#~ "through."
+#~ msgstr "Seleziona lo schema d'accesso usato dal servizio di directory."
+
+#~ msgid ""
+#~ "Check this column if this directory service is providing S/MIME (X.509) "
+#~ "certificates."
+#~ msgstr ""
+#~ "Marca questa colonna se questo servizio di directory fornisce certificati "
+#~ "S/MIME (X.509)."
+
+#~ msgid ""
+#~ "Check this column if this directory service is providing OpenPGP "
+#~ "certificates."
+#~ msgstr ""
+#~ "Marca questa colonna se questo servizio di directory fornisce certificati "
+#~ "OpenPGP."
+
+#~ msgid "0 - None (no debugging at all)"
+#~ msgstr "0 – Nessuno (nessun messaggio di debug)"
+
+#~ msgid "1 - Basic (some basic debug messages)"
+#~ msgstr "1 – Base (messaggi di debug base)"
+
+#~ msgid "2 - Advanced (more verbose debug messages)"
+#~ msgstr "2 – Avanzato (messaggi di debug prolissi)"
+
+#~ msgid "3 - Expert (even more detailed messages)"
+#~ msgstr "3 – Esperto (messaggi ancor più dettagliati)"
+
+#~ msgid "4 - Guru (all of the debug messages you can get)"
+#~ msgstr "4 – Guru (tutti i messaggi di debug che ci sono)"
+
+#~ msgid "General"
+#~ msgstr "Generale"
+
+#~ msgid "Chiasmus"
+#~ msgstr "Chiasmus"
+
+#~ msgid "Chiasmus command line tool"
+#~ msgstr "Strumento Chiasmus a riga di comando"
+
+#~ msgid "Unsupported protocol \"%1\""
+#~ msgstr "Protocollo non supportato «%1»"
+
+#~ msgid "File \"%1\" does not exist or is not executable."
+#~ msgstr "Il file «%1» non esiste o non è eseguibile."
+
+#~ msgid "Output from chiasmus"
+#~ msgstr "Risultati di Chiasmus"
+
+#~ msgid "Decryption failed: %1"
+#~ msgstr "Decifrazione non riuscita: %1"
+
+#~ msgid ""
+#~ "The following was received on stderr:\n"
+#~ "%1"
+#~ msgstr ""
+#~ "Sullo stderr è stato prodotto quanto segue:\n"
+#~ "%1"
+
+#~ msgid "Failed to load %1: %2"
+#~ msgstr "Impossibile caricare %1: %2"
+
+#~ msgid "Library does not contain the symbol \"Chiasmus\"."
+#~ msgstr "La libreria non contiene il simbolo «Chiasmus»."
+
+#~ msgid "Scanning directory %1..."
+#~ msgstr "Scansione della directory %1..."
+
+#~ msgid "GpgME"
+#~ msgstr "GpgME"
+
+#~ msgid "GPGME was compiled without support for %1."
+#~ msgstr "GPGME è stato compilato senza il supporto per %1."
+
+#~ msgid "Engine %1 is not installed properly."
+#~ msgstr "Il motore %1 non è installato correttamente."
+
+#~ msgid "Engine %1 version %2 installed, but at least version %3 is required."
+#~ msgstr ""
+#~ "Il motore %1 versione %2 è installato, ma è richiesta almeno la versione "
+#~ "%3."
+
+#~ msgid "Unknown problem with engine for protocol %1."
+#~ msgstr "Problema sconosciuto con il motore per il protocollo %1."
+
+#~ msgid "program terminated unexpectedly"
+#~ msgstr "il programma è terminato in modo inaspettato"
+
+#~ msgid "program not found or cannot be started"
+#~ msgstr "il programma non è stato trovato o non è eseguibile"
+
+#~ msgid "<qt>Failed to execute gpgconf:<p>%1</p></qt>"
+#~ msgstr "<qt>L'esecuzione di gpgconf non è riuscita:<p>%1</p></qt>"
+
+#~ msgid ""
+#~ "Could not start gpgconf.\n"
+#~ "Check that gpgconf is in the PATH and that it can be started."
+#~ msgstr ""
+#~ "Impossibile avviare gpgconf.\n"
+#~ "Controlla che gpgconf sia nel tuo PATH e che sia avviabile."
+
+#~ msgid "Error from gpgconf while saving configuration: %1"
+#~ msgstr "Errore da gpgconf durante il salvataggio della configurazione: %1"
+
+#~ msgid "Generating DSA key..."
+#~ msgstr "Generazione della chiave DSA in corso..."
+
+#~ msgid "Generating ElGamal key..."
+#~ msgstr "Generazione della chiave ELGamal in corso..."
+
+#~ msgid "Searching for a large prime number..."
+#~ msgstr "Ricerca per un grande numero primo in corso..."
+
+#~ msgid ""
+#~ "Waiting for new entropy from random number generator (you might want to "
+#~ "exercise the harddisks or move the mouse)..."
+#~ msgstr ""
+#~ "Attesa per nuova entropia dal generatore di numeri casuali in corso (puoi "
+#~ "muovere il mouse o accedere al disco fisso per incrementare l'entropia)..."
+
+#~ msgid "Please wait..."
+#~ msgstr "Attendere prego..."
+
+#~ msgid ""
+#~ "Starting gpg-agent (you should consider starting a global instance "
+#~ "instead)..."
+#~ msgstr ""
+#~ "Avvio di gpg-agent in corso (in alternativa potresti avviare un'istanza "
+#~ "globale)..."
+
+#~ msgid "While scanning for %1 support in backend %2:"
+#~ msgstr "Durante la ricerca per il supporto %1 nel motore %2:"
+
+#~ msgctxt "progress info: \"%1 of %2\""
+#~ msgid "%1/%2"
+#~ msgstr "%1/%2"
+
+#~ msgid ""
+#~ "OpenPGP key for %1\n"
+#~ "Created: %2\n"
+#~ "Expiry: %3\n"
+#~ "Fingerprint: %4"
+#~ msgstr ""
+#~ "Chiave OpenPGP per %1\n"
+#~ "Creata: %2\n"
+#~ "Scade: %3\n"
+#~ "Impronta digitale: %4"
+
+#~ msgid ""
+#~ "S/MIME key for %1\n"
+#~ "Created: %2\n"
+#~ "Expiry: %3\n"
+#~ "Fingerprint: %4\n"
+#~ "Issuer: %5"
+#~ msgstr ""
+#~ "Chiave S/MIME per %1\n"
+#~ "Creata: %2\n"
+#~ "Scade: %3\n"
+#~ "Impronta digitale: %4\n"
+#~ "Emittente: %5"
+
+#~ msgid "Copy Audit Log to Clipboard"
+#~ msgstr "Copia il registro di controllo negli appunti"
+
+#~ msgid "Add or Change Directory Service"
+#~ msgstr "Aggiungi o cambia servizio di directory"
+
+#~ msgid "&Server name:"
+#~ msgstr "Nome del &server:"
+
+#~ msgid "389"
+#~ msgstr "389"
+
+#~ msgid "&User name (optional):"
+#~ msgstr "Nome &utente (facoltativo):"
+
+#~ msgid "Pass&word (optional):"
+#~ msgstr "Pass&word (facoltativa):"
+
+#~ msgid "&OK"
+#~ msgstr "&OK"
+
+#~ msgid "&Cancel"
+#~ msgstr "&Annulla"
+
+#~ msgid "&Base DN:"
+#~ msgstr "DN &base:"
+
+#~ msgid "&Port:"
+#~ msgstr "&Porta:"
+
+#~ msgctxt "NAME OF TRANSLATORS"
+#~ msgid "Your names"
+#~ msgstr "Federico Zenith,Luciano Montanaro,Alessandro Pasotti"
+
+#~ msgctxt "EMAIL OF TRANSLATORS"
+#~ msgid "Your emails"
+#~ msgstr "federico.zenith@member.fsf.org,,"
+
+#~ msgid "'create-command' entry is empty/missing"
+#~ msgstr "la voce «create-command» è vuota o mancante"
+
+#~ msgid "'create-command' not found in filesystem"
+#~ msgstr "La voce «create-command» non è stata trovata nel filesystem"
+
+#~ msgid "Quoting error in 'verify-command' entry"
+#~ msgstr "Errore di virgolette nella voce «verify-command»"
+
+#~ msgid "'verify-command' too complex (would need shell)"
+#~ msgstr ""
+#~ "La voce «verify-command» è troppo complessa (richiederebbe una shell)"
+
+#~ msgid "'verify-command' entry is empty/missing"
+#~ msgstr "la voce «verify-command» è vuota o mancante"
+
+#~ msgid "'verify-command' not found in filesystem"
+#~ msgstr "La voce «verify-command» non è stata trovata nel filesystem"
+
+#~ msgid "'verify-command' empty or not found"
+#~ msgstr "La voce «verify-command» non è stata trovata nel filesystem"
+
+#~ msgid "(Unknown Protocol)"
+#~ msgstr "(Protocollo sconosciuto)"
+
+#~ msgid "Error while initializing plugin \"%1\""
+#~ msgstr "Errore durante l'inizializzazione del plugin «%1»"
+
+#~ msgid "failed"
+#~ msgstr "fallito"
+
+#~ msgctxt ""
+#~ "Items in Kleo::BackendConfigWidget listview (1: protocol; 2: "
+#~ "implementation name)"
+#~ msgid "%1 (%2)"
+#~ msgstr "%1 (%2)"
+
+#~ msgid "Available Backends"
+#~ msgstr "Backend disponibili"
+
+#~ msgid "Confi&gure..."
+#~ msgstr "Confi&gura..."
+
+#~ msgid "Rescan"
+#~ msgstr "Riesegui scansione"
+
+#~ msgid "The following problems where encountered during scanning:"
+#~ msgstr "Durante la scansione si sono verificati i seguenti problemi:"
+
+#~ msgctxt "@title:window Results of the scanning"
+#~ msgid "Scan Results"
+#~ msgstr "Risultati scansione"
--- /dev/null
+# Translation of libkleopatra into Japanese.
+# This file is distributed under the same license as the kdepim package.
+# Toyohiro Asukai <toyohiro@ksmplus.com>, 2004.
+# Shinichi Tsunoda <tsuno@ngy.1st.ne.jp>, 2005.
+# Yukiko Bando <ybando@k6.dion.ne.jp>, 2006, 2007, 2008, 2009.
+# Fumiaki Okushi <okushi@kde.gr.jp>, 2011, 2012.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: libkleopatra\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2017-07-12 06:56+0200\n"
+"PO-Revision-Date: 2012-01-28 16:20-0800\n"
+"Last-Translator: Fumiaki Okushi <okushi@kde.gr.jp>\n"
+"Language-Team: Japanese <kde-jp@kde.org>\n"
+"Language: ja\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.10.2\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Accelerator-Marker: &\n"
+"X-Text-Markup: kde4\n"
+
+#: kleo/checksumdefinition.cpp:107
+#, kde-format
+msgid "Error in checksum definition %1: %2"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:157
+#, kde-format
+msgid "Cannot use both %f and | in '%1'"
+msgstr "「%1」で %f と | の両方を使用することはできません"
+
+#: kleo/checksumdefinition.cpp:167
+#, kde-format
+msgid "Quoting error in '%1' entry"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:170
+#, kde-format
+msgid "'%1' too complex (would need shell)"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:174
+#, kde-format
+msgid "'%1' entry is empty/missing"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:183
+#, kde-format
+msgid "'%1' empty or not found"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:222
+#, kde-format
+msgid "'id' entry is empty/missing"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:225
+#, kde-format
+msgid "'output-file' entry is empty/missing"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:228
+#, kde-format
+msgid "'file-patterns' entry is empty/missing"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:395
+#, kde-format
+msgid "Caught unknown exception in group %1"
+msgstr ""
+
+#: kleo/dn.cpp:507
+#, kde-format
+msgid "Common name"
+msgstr "一般名"
+
+#: kleo/dn.cpp:508
+#, kde-format
+msgid "Surname"
+msgstr "姓"
+
+#: kleo/dn.cpp:509
+#, kde-format
+msgid "Given name"
+msgstr "名"
+
+#: kleo/dn.cpp:510
+#, kde-format
+msgid "Location"
+msgstr "場所"
+
+#: kleo/dn.cpp:511
+#, kde-format
+msgid "Title"
+msgstr "タイトル"
+
+#: kleo/dn.cpp:512
+#, kde-format
+msgid "Organizational unit"
+msgstr "組織単位"
+
+#: kleo/dn.cpp:513
+#, kde-format
+msgid "Organization"
+msgstr "組織"
+
+#: kleo/dn.cpp:514
+#, kde-format
+msgid "Postal code"
+msgstr "郵便番号"
+
+#: kleo/dn.cpp:515
+#, kde-format
+msgid "Country code"
+msgstr "国コード"
+
+#: kleo/dn.cpp:516
+#, kde-format
+msgid "State or province"
+msgstr "都道府県"
+
+#: kleo/dn.cpp:517
+#, kde-format
+msgid "Domain component"
+msgstr "ドメインコンポーネント"
+
+#: kleo/dn.cpp:518
+#, kde-format
+msgid "Business category"
+msgstr "ビジネスカテゴリ"
+
+#: kleo/dn.cpp:519
+#, kde-format
+msgid "Email address"
+msgstr "メールアドレス"
+
+#: kleo/dn.cpp:520
+#, kde-format
+msgid "Mail address"
+msgstr "郵便の宛先"
+
+#: kleo/dn.cpp:521
+#, kde-format
+msgid "Mobile phone number"
+msgstr "携帯電話番号"
+
+#: kleo/dn.cpp:522
+#, kde-format
+msgid "Telephone number"
+msgstr "電話番号"
+
+#: kleo/dn.cpp:523
+#, kde-format
+msgid "Fax number"
+msgstr "ファクス番号"
+
+#: kleo/dn.cpp:524
+#, kde-format
+msgid "Street address"
+msgstr "番地"
+
+#: kleo/dn.cpp:525
+#, kde-format
+msgid "Unique ID"
+msgstr "一意の識別子"
+
+#: kleo/enum.cpp:57
+#, kde-format
+msgid "Inline OpenPGP (deprecated)"
+msgstr "インライン OpenPGP (廃止予定)"
+
+#: kleo/enum.cpp:62
+#, kde-format
+msgid "OpenPGP/MIME"
+msgstr "OpenPGP/MIME"
+
+#: kleo/enum.cpp:67 ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "S/MIME"
+msgstr "S/MIME"
+
+#: kleo/enum.cpp:72
+#, kde-format
+msgid "S/MIME Opaque"
+msgstr "S/MIME オペイク (Opaque)"
+
+#: kleo/enum.cpp:104
+#, kde-format
+msgid "Any"
+msgstr "任意の"
+
+#: kleo/enum.cpp:177
+#, kde-format
+msgid "Never Encrypt"
+msgstr "暗号化しない"
+
+#: kleo/enum.cpp:179
+#, kde-format
+msgid "Always Encrypt"
+msgstr "常に暗号化する"
+
+#: kleo/enum.cpp:181
+#, kde-format
+msgid "Always Encrypt If Possible"
+msgstr "可能な場合、常に暗号化する"
+
+#: kleo/enum.cpp:183 kleo/enum.cpp:240
+#, kde-format
+msgid "Ask"
+msgstr "確認する"
+
+#: kleo/enum.cpp:185 kleo/enum.cpp:242
+#, kde-format
+msgid "Ask Whenever Possible"
+msgstr "可能な場合、常に確認する"
+
+#: kleo/enum.cpp:187
+#, kde-kuit-format
+msgctxt "no specific preference"
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>設定なし</placeholder>"
+
+#: kleo/enum.cpp:234
+#, kde-format
+msgid "Never Sign"
+msgstr "署名しない"
+
+#: kleo/enum.cpp:236
+#, kde-format
+msgid "Always Sign"
+msgstr "常に署名する"
+
+#: kleo/enum.cpp:238
+#, kde-format
+msgid "Always Sign If Possible"
+msgstr "可能な場合、常に署名する"
+
+#: kleo/enum.cpp:244
+#, kde-format
+msgctxt "no specific preference"
+msgid "<none>"
+msgstr "<設定なし>"
+
+#: kleo/keyfiltermanager.cpp:85
+#, kde-format
+msgid "All Certificates"
+msgstr "すべての証明書"
+
+#: kleo/keyfiltermanager.cpp:100
+#, kde-format
+msgid "My Certificates"
+msgstr "自分の証明書"
+
+#: kleo/keyfiltermanager.cpp:118
+#, kde-format
+msgid "Trusted Certificates"
+msgstr "信頼された証明書"
+
+#: kleo/keyfiltermanager.cpp:135
+#, fuzzy, kde-format
+#| msgid "Trusted Certificates"
+msgid "Fully Trusted Certificates"
+msgstr "信頼された証明書"
+
+#: kleo/keyfiltermanager.cpp:152
+#, kde-format
+msgid "Other Certificates"
+msgstr "その他の証明書"
+
+#: kleo/keyfiltermanager.cpp:166
+#, fuzzy, kde-format
+#| msgid "All Certificates"
+msgid "VS-compliant Certificates"
+msgstr "すべての証明書"
+
+#: kleo/keyfiltermanager.cpp:184
+#, fuzzy, kde-format
+#| msgid "Trusted Certificates"
+msgid "Not validated Certificates"
+msgstr "信頼された証明書"
+
+#: ui/auditlogviewer.cpp:49
+#, kde-format
+msgid "View GnuPG Audit Log"
+msgstr "GnuPG 監査ログを表示"
+
+#: ui/auditlogviewer.cpp:53
+#, kde-format
+msgid "&Copy to Clipboard"
+msgstr "クリップボードにコピー(&C)"
+
+#: ui/auditlogviewer.cpp:59
+#, kde-format
+msgid "&Save to Disk..."
+msgstr "ディスクに保存(&S)..."
+
+#: ui/auditlogviewer.cpp:95
+#, kde-format
+msgid "Choose File to Save GnuPG Audit Log to"
+msgstr "GnuPG 監査ログを保存するファイルを選択"
+
+#: ui/auditlogviewer.cpp:118
+#, kde-format
+msgid "Could not save to file \"%1\": %2"
+msgstr "ファイル ‘%1’ に保存できませんでした: %2"
+
+#: ui/auditlogviewer.cpp:120
+#, kde-format
+msgid "File Save Error"
+msgstr "ファイルの保存エラー"
+
+#: ui/cryptoconfigdialog.cpp:44
+#, kde-format
+msgid "Configure GnuPG Backend"
+msgstr "GnuPG バックエンドを設定"
+
+#: ui/cryptoconfigdialog.cpp:55
+#, kde-format
+msgid "&Reset"
+msgstr "リセット(&R)"
+
+#: ui/cryptoconfigmodule.cpp:160
+#, kde-format
+msgid "GpgConf Error"
+msgstr "GpgConf エラー"
+
+#: ui/cryptoconfigmodule.cpp:216
+#, kde-format
+msgid ""
+"The gpgconf tool used to provide the information for this dialog does not "
+"seem to be installed properly. It did not return any components. Try running "
+"\"%1\" on the command line for more information."
+msgstr ""
+"このダイアログに情報を提供する gpgconf ツールがコンポーネントを返しませんでし"
+"た。正しくインストールされていないようです。コマンドラインで %1 を実行して詳"
+"細を確認してください。"
+
+#: ui/cryptoconfigmodule.cpp:496
+#, kde-format
+msgctxt ""
+"Translate this to 'yes' or 'no' (use the English words!) depending on "
+"whether your language uses Sentence style capitalisation in GUI labels (yes) "
+"or not (no). Context: We get some backend strings in that have the wrong "
+"capitalizaion (in English, at least) so we need to force the first character "
+"to upper-case. It is this behaviour you can control for your language with "
+"this translation."
+msgid "yes"
+msgstr "no"
+
+#: ui/cryptoconfigmodule.cpp:546
+#, kde-format
+msgid "0 - None"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:547
+#, kde-format
+msgid "1 - Basic"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:548
+#, kde-format
+msgid "2 - Verbose"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:549
+#, kde-format
+msgid "3 - More Verbose"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:550
+#, kde-format
+msgid "4 - All"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:559
+#, kde-format
+msgid "Set the debugging level to"
+msgstr "デバッグレベルを指定"
+
+#: ui/cryptoconfigmodule.cpp:787
+#, kde-format
+msgid "Show..."
+msgstr "表示..."
+
+#: ui/cryptoconfigmodule.cpp:787 ui/cryptoconfigmodule.cpp:876
+#, kde-format
+msgid "Edit..."
+msgstr "編集..."
+
+#: ui/cryptoconfigmodule.cpp:841
+#, kde-format
+msgid "Configure LDAP Servers"
+msgstr "LDAP サーバを設定"
+
+#: ui/cryptoconfigmodule.cpp:862
+#, fuzzy, kde-format
+#| msgid "No server configured yet"
+msgid "None configured"
+msgstr "設定済みのサーバがありません"
+
+#: ui/cryptoconfigmodule.cpp:864
+#, kde-format
+msgid "1 server configured"
+msgid_plural "%1 servers configured"
+msgstr[0] "設定済みのサーバ 1 個"
+msgstr[1] "設定済みのサーバ %1 個"
+
+#: ui/cryptoconfigmodule.cpp:879
+#, kde-format
+msgid "Use keyserver at"
+msgstr "使用する鍵サーバ"
+
+#: ui/cryptoconfigmodule.cpp:968
+#, kde-format
+msgid "Configure Keyservers"
+msgstr "鍵サーバを設定"
+
+#: ui/directoryserviceswidget.cpp:67
+#, kde-format
+msgctxt "default server name, keep it a valid domain name, ie. no spaces"
+msgid "server"
+msgstr "server"
+
+#: ui/directoryserviceswidget.cpp:95
+#, kde-format
+msgid "hkp"
+msgstr "hkp"
+
+#: ui/directoryserviceswidget.cpp:96
+#, kde-format
+msgid "http"
+msgstr "http"
+
+#: ui/directoryserviceswidget.cpp:97
+#, kde-format
+msgid "https"
+msgstr "https"
+
+#: ui/directoryserviceswidget.cpp:98
+#, kde-format
+msgid "ftp"
+msgstr "ftp"
+
+#: ui/directoryserviceswidget.cpp:99
+#, kde-format
+msgid "ftps"
+msgstr "ftps"
+
+#: ui/directoryserviceswidget.cpp:100
+#, kde-format
+msgid "ldap"
+msgstr "ldap"
+
+#: ui/directoryserviceswidget.cpp:101
+#, kde-format
+msgid "ldaps"
+msgstr "ldaps"
+
+#: ui/directoryserviceswidget.cpp:588
+#, kde-format
+msgid "Server Name"
+msgstr "サーバ名"
+
+#: ui/directoryserviceswidget.cpp:589
+#, kde-format
+msgid "Server Port"
+msgstr "サーバのポート"
+
+#: ui/directoryserviceswidget.cpp:590
+#, kde-format
+msgid "Base DN"
+msgstr "ベース DN"
+
+#: ui/directoryserviceswidget.cpp:591
+#, kde-format
+msgid "User Name"
+msgstr "ユーザ名"
+
+#: ui/directoryserviceswidget.cpp:592
+#, kde-format
+msgid "Password"
+msgstr "パスワード"
+
+#: ui/directoryserviceswidget.cpp:614
+#, kde-format
+msgid "(read-only)"
+msgstr "(読み取り専用)"
+
+#: ui/directoryserviceswidget.cpp:616
+#, kde-format
+msgctxt "amended tooltip; %1: original tooltip"
+msgid "%1 (read-only)"
+msgstr "%1 (読み取り専用)"
+
+#: ui/directoryserviceswidget.cpp:739
+#, kde-format
+msgid ""
+"Enter the name or IP address of the server hosting the directory service."
+msgstr ""
+"ディレクトリサービスを提供しているサーバの名前または IP アドレスを入力しま"
+"す。"
+
+#: ui/directoryserviceswidget.cpp:741
+#, kde-format
+msgid ""
+"<b>(Optional, the default is fine in most cases)</b> Pick the port number "
+"the directory service is listening on."
+msgstr ""
+"ディレクトリサービスが待ち受けしているポート番号を指定します (オプション、た"
+"いていの場合は標準の値で問題ありません)。"
+
+#: ui/directoryserviceswidget.cpp:744
+#, kde-format
+msgid ""
+"<b>(Only for LDAP)</b> Enter the base DN for this LDAP server to limit "
+"searches to only that subtree of the directory."
+msgstr ""
+"LDAP サーバのベース DN を入力して検索をそのディレクトリのサブツリーに限定しま"
+"す (LDAP の場合のみ)。"
+
+#: ui/directoryserviceswidget.cpp:747
+#, kde-format
+msgid "<b>(Optional)</b> Enter your user name here, if needed."
+msgstr "必要であればユーザ名を入力します (オプション)。"
+
+#: ui/directoryserviceswidget.cpp:749
+#, kde-format
+msgid ""
+"<b>(Optional, not recommended)</b> Enter your password here, if needed. Note "
+"that the password will be saved in the clear in a config file in your home "
+"directory."
+msgstr ""
+"必要であればパスワードを入力します (オプション、非推奨)。パスワードはあなたの"
+"ホームディレクトリの設定ファイルにクリアテキストで保存されるので注意してくだ"
+"さい。"
+
+#. i18n: ectx: property (windowTitle), widget (QWidget, DirectoryServicesWidget)
+#: ui/directoryserviceswidget.ui:14
+#, kde-format
+msgid "Directory Services Configuration"
+msgstr "ディレクトリサービスの設定"
+
+#. i18n: ectx: property (text), widget (QLabel, pgpKSLabel)
+#: ui/directoryserviceswidget.ui:22
+#, fuzzy, kde-format
+#| msgid "OpenPGP Key Selection"
+msgid "OpenPGP Keyserver:"
+msgstr "OpenPGP 鍵の選択"
+
+#. i18n: ectx: property (title), widget (QGroupBox, x500LA)
+#: ui/directoryserviceswidget.ui:35
+#, fuzzy, kde-format
+#| msgid "Directory services:"
+msgid "X509 Directory services:"
+msgstr "ディレクトリサービス:"
+
+#. i18n: ectx: property (whatsThis), widget (QTreeView, treeView)
+#: ui/directoryserviceswidget.ui:43
+#, fuzzy, kde-format
+#| msgid ""
+#| "This is a list of all directory services that are configured for use with "
+#| "X.509 and OpenPGP."
+msgid ""
+"This is a list of all directory services that are configured for use with "
+"X.509."
+msgstr ""
+"X.509 と OpenPGP で使用するために設定されているディレクトリサービスの一覧で"
+"す。"
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:70
+#, kde-format
+msgid "Click to add a service"
+msgstr "クリックしてサービスを追加"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:73
+#, kde-format
+msgid ""
+"Click this button to create a new directory service entry as a clone of the "
+"currently selected one (or with default values, if no other is selected). "
+"You can then configure details in the table on the left hand."
+msgstr ""
+"このボタンをクリックすると、現在選択されているエントリの複製が新しいディレク"
+"トリサービスとして作成されます (何も選択されていない場合は標準の値がセットさ"
+"れます)。詳細は左側のテーブルで設定し直すことができます。"
+
+#. i18n: ectx: property (text), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:76
+#, kde-format
+msgid "New"
+msgstr "新規"
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:92
+#, kde-format
+msgid "Click to remove the currently selected service"
+msgstr "クリックして現在選択されているサービスを削除"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:95
+#, kde-format
+msgid ""
+"Click this button to remove the currently selected directory service. The "
+"change will only take effect once you acknowledge the main configuration "
+"dialog."
+msgstr ""
+"このボタンを押して選択したディレクトリサービスを削除します。変更はこの設定ダ"
+"イアログの「適用」または「OK」ボタンを押して初めて有効になります。"
+
+#. i18n: ectx: property (text), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:98
+#, kde-format
+msgid "Delete"
+msgstr "削除"
+
+#. i18n: ectx: property (whatsThis), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:128
+#, kde-format
+msgid ""
+"Use this option to switch display of username and password information on or "
+"off in the above table."
+msgstr ""
+"このオプションで上のテーブルのユーザ名とパスワードの表示/非表示を切り替えま"
+"す。"
+
+#. i18n: ectx: property (text), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:131
+#, kde-format
+msgid "Show user and password information"
+msgstr "ユーザとパスワードの情報を表示する"
+
+#: ui/dnattributeorderconfigwidget.cpp:73
+#, kde-format
+msgid "Description"
+msgstr "説明"
+
+#: ui/dnattributeorderconfigwidget.cpp:91
+#, kde-format
+msgid "Available attributes:"
+msgstr "利用可能な属性:"
+
+#: ui/dnattributeorderconfigwidget.cpp:92
+#, kde-format
+msgid "Current attribute order:"
+msgstr "現在の属性順位:"
+
+#: ui/dnattributeorderconfigwidget.cpp:112
+#, kde-format
+msgid "All others"
+msgstr "他のすべて"
+
+#: ui/dnattributeorderconfigwidget.cpp:129
+#, kde-format
+msgid "Move to top"
+msgstr "最上位へ移動"
+
+#: ui/dnattributeorderconfigwidget.cpp:130
+#, kde-format
+msgid "Move one up"
+msgstr "一つ上へ移動"
+
+#: ui/dnattributeorderconfigwidget.cpp:131
+#, kde-format
+msgid "Remove from current attribute order"
+msgstr "現在の属性順位から削除"
+
+#: ui/dnattributeorderconfigwidget.cpp:132
+#, kde-format
+msgid "Add to current attribute order"
+msgstr "現在の属性順位に追加"
+
+#: ui/dnattributeorderconfigwidget.cpp:133
+#, kde-format
+msgid "Move one down"
+msgstr "一つ下へ移動"
+
+#: ui/dnattributeorderconfigwidget.cpp:134
+#, kde-format
+msgid "Move to bottom"
+msgstr "最下位へ移動"
+
+#: ui/keyapprovaldialog.cpp:87
+#, kde-kuit-format
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>なし</placeholder>"
+
+#: ui/keyapprovaldialog.cpp:88
+#, kde-format
+msgid "Never Encrypt with This Key"
+msgstr "この鍵では暗号化しない"
+
+#: ui/keyapprovaldialog.cpp:89
+#, kde-format
+msgid "Always Encrypt with This Key"
+msgstr "常にこの鍵で暗号化する"
+
+#: ui/keyapprovaldialog.cpp:90
+#, kde-format
+msgid "Encrypt Whenever Encryption is Possible"
+msgstr "暗号化が可能なときは常に暗号化する"
+
+#: ui/keyapprovaldialog.cpp:91
+#, kde-format
+msgid "Always Ask"
+msgstr "常に確認する"
+
+#: ui/keyapprovaldialog.cpp:92
+#, kde-format
+msgid "Ask Whenever Encryption is Possible"
+msgstr "暗号化が可能なときは常に確認する"
+
+#: ui/keyapprovaldialog.cpp:113
+#, kde-format
+msgid "Encryption Key Approval"
+msgstr "暗号化鍵の承認"
+
+#: ui/keyapprovaldialog.cpp:129
+#, kde-format
+msgid "The following keys will be used for encryption:"
+msgstr "以下の鍵を暗号化に使用します:"
+
+#: ui/keyapprovaldialog.cpp:145
+#, kde-format
+msgid "Your keys:"
+msgstr "あなたの鍵:"
+
+#: ui/keyapprovaldialog.cpp:157
+#, kde-format
+msgid "Recipient:"
+msgstr "受信者:"
+
+#: ui/keyapprovaldialog.cpp:162
+#, kde-format
+msgid "Encryption keys:"
+msgstr "暗号化鍵:"
+
+#: ui/keyapprovaldialog.cpp:169
+#, kde-format
+msgid "Encryption preference:"
+msgstr "暗号化の設定:"
+
+#: ui/keyrequester.cpp:118
+#, kde-format
+msgid "Clear"
+msgstr "クリア"
+
+#: ui/keyrequester.cpp:121
+#, kde-format
+msgid "Change..."
+msgstr "変更..."
+
+#: ui/keyrequester.cpp:232 ui/keyselectiondialog.cpp:256
+#, kde-kuit-format
+msgid "<placeholder>unknown</placeholder>"
+msgstr "<placeholder>不明</placeholder>"
+
+#: ui/keyrequester.cpp:246 ui/keyselectiondialog.cpp:657
+#, kde-format
+msgid ""
+"<qt><p>An error occurred while fetching the keys from the backend:</p><p><b>"
+"%1</b></p></qt>"
+msgstr ""
+"<qt><p>バックエンドから鍵を取得中にエラーが発生しました:</p><p>%1</p></qt>"
+
+#: ui/keyrequester.cpp:251 ui/keyrequester.cpp:283 ui/keyrequester.cpp:306
+#: ui/keyselectiondialog.cpp:630 ui/keyselectiondialog.cpp:662
+#, kde-format
+msgid "Key Listing Failed"
+msgstr "鍵の一覧表示に失敗しました"
+
+#: ui/keyrequester.cpp:281
+#, kde-format
+msgid ""
+"The OpenPGP backend does not support listing keys. Check your installation."
+msgstr ""
+"OpenPGP バックエンドは鍵の一覧表示をサポートしていません。インストールを確認"
+"してください。"
+
+#: ui/keyrequester.cpp:304
+#, kde-format
+msgid ""
+"The S/MIME backend does not support listing keys. Check your installation."
+msgstr ""
+"S/MIME バックエンドは鍵の一覧表示をサポートしていません。インストールを確認し"
+"てください。"
+
+#: ui/keyrequester.cpp:426
+#, kde-format
+msgid "OpenPGP Key Selection"
+msgstr "OpenPGP 鍵の選択"
+
+#: ui/keyrequester.cpp:427
+#, kde-format
+msgid "Please select an OpenPGP key to use."
+msgstr "使用する OpenPGP 鍵を選択してください。"
+
+#: ui/keyrequester.cpp:429
+#, kde-format
+msgid "S/MIME Key Selection"
+msgstr "S/MIME 鍵の選択"
+
+#: ui/keyrequester.cpp:430
+#, kde-format
+msgid "Please select an S/MIME key to use."
+msgstr "使用する S/MIME 鍵を選択してください。"
+
+#: ui/keyrequester.cpp:432
+#, kde-format
+msgid "Key Selection"
+msgstr "鍵の選択"
+
+#: ui/keyrequester.cpp:433
+#, kde-format
+msgid "Please select an (OpenPGP or S/MIME) key to use."
+msgstr "使用する (OpenPGP or S/MIME) 鍵を選択してください。"
+
+#: ui/keyselectioncombo.cpp:195
+#, kde-format
+msgctxt "Name <email> (validity, type, created: date)"
+msgid "%1 (%2, %3, created: %4)"
+msgstr ""
+
+#: ui/keyselectioncombo.cpp:196
+#, kde-format
+msgctxt "Name <email>"
+msgid "%1 <%2>"
+msgstr ""
+
+#: ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "OpenPGP"
+msgstr "OpenPGP"
+
+#: ui/keyselectioncombo.cpp:347
+#, fuzzy, kde-format
+#| msgid "Fetching keys..."
+msgid "Loading keys ..."
+msgstr "鍵を取得中..."
+
+#: ui/keyselectiondialog.cpp:98
+#, kde-format
+msgid "The key is not valid."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:106
+#, kde-format
+msgid "The key is expired."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:110
+#, kde-format
+msgid "The key is revoked."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:114
+#, kde-format
+msgid "The key is disabled."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:122
+#, fuzzy, kde-format
+#| msgid "The following keys will be used for encryption:"
+msgid "The key is not designated for encryption."
+msgstr "以下の鍵を暗号化に使用します:"
+
+#: ui/keyselectiondialog.cpp:128
+#, kde-format
+msgid "The key is not designated for signing."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:134
+#, kde-format
+msgid "The key is not designated for certifying."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:140
+#, kde-format
+msgid "The key is not designated for authentication."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:148
+#, kde-format
+msgid "The key is not secret."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:163
+#, kde-format
+msgid "The key is not trusted enough."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:169
+#, kde-format
+msgid "The key can be used."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:230
+#, kde-format
+msgid "Key ID"
+msgstr "鍵 ID"
+
+#: ui/keyselectiondialog.cpp:231
+#, kde-format
+msgid "User ID"
+msgstr "ユーザ ID"
+
+#: ui/keyselectiondialog.cpp:279
+#, kde-format
+msgid "never"
+msgstr "しない"
+
+#: ui/keyselectiondialog.cpp:289 ui/keyselectiondialog.cpp:291
+#: ui/keyselectiondialog.cpp:300 ui/keyselectiondialog.cpp:302
+#, kde-format
+msgid "unknown"
+msgstr "不明"
+
+#: ui/keyselectiondialog.cpp:289
+#, kde-format
+msgid "OpenPGP key for <b>%1</b>"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:291
+#, kde-format
+msgid "S/MIME key for <b>%1</b>"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:298
+#, kde-format
+msgctxt "Key creation date"
+msgid "Created"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:299
+#, kde-format
+msgctxt "Key Expiration date"
+msgid "Expiry"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:300
+#, kde-format
+msgctxt "Key fingerprint"
+msgid "Fingerprint"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:302
+#, kde-format
+msgctxt "Key issuer"
+msgid "Issuer"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:304
+#, kde-format
+msgctxt "Key status"
+msgid "Status"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:456
+#, kde-format
+msgid "Search for &External Certificates"
+msgstr "外部証明書を検索(&E)"
+
+#: ui/keyselectiondialog.cpp:470
+#, kde-format
+msgid "&Search for:"
+msgstr "検索対象(&S):"
+
+#: ui/keyselectiondialog.cpp:494
+#, kde-format
+msgid "&Remember choice"
+msgstr "選択を記憶する(&R)"
+
+#: ui/keyselectiondialog.cpp:497
+#, kde-format
+msgid ""
+"<qt><p>If you check this box your choice will be stored and you will not be "
+"asked again.</p></qt>"
+msgstr ""
+"<qt><p>このボックスをチェックすると、あなたの選択が記憶され、次回からは質問さ"
+"れなくなります。</p></qt>"
+
+#: ui/keyselectiondialog.cpp:509
+#, kde-format
+msgid "&Reread Keys"
+msgstr "鍵を再読み込み(&R)"
+
+# ACCELERATOR changed by translator
+#: ui/keyselectiondialog.cpp:510
+#, kde-format
+msgid "&Start Certificate Manager"
+msgstr "証明書マネージャを起動(&M)"
+
+#: ui/keyselectiondialog.cpp:628
+#, kde-format
+msgid "No backends found for listing keys. Check your installation."
+msgstr ""
+"鍵の一覧表示のためのバックエンドが見つかりません。インストールを確認してくだ"
+"さい。"
+
+#: ui/keyselectiondialog.cpp:644
+#, kde-format
+msgid "Could not start certificate manager; please check your installation."
+msgstr ""
+"証明書マネージャを起動できませんでした。インストールを確認してください。"
+
+#: ui/keyselectiondialog.cpp:646
+#, kde-format
+msgid "Certificate Manager Error"
+msgstr "証明書マネージャのエラー"
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Checking selected keys..."
+msgstr "選択された鍵を確認中..."
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Fetching keys..."
+msgstr "鍵を取得中..."
+
+#: ui/keyselectiondialog.cpp:731
+#, kde-format
+msgid ""
+"<qt>One backend returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgid_plural ""
+"<qt>%1 backends returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgstr[0] ""
+"<qt>1 個のバックエンドの出力は一部切り捨てられています。<p>すべての利用可能な"
+"鍵は表示されていません。</p></qt>"
+msgstr[1] ""
+"<qt><p>%1 個のバックエンドの出力は一部切り捨てられています。</p><p>すべての利"
+"用可能な鍵は表示されていません。</p></qt>"
+
+#: ui/keyselectiondialog.cpp:736
+#, kde-format
+msgid "Key List Result"
+msgstr "鍵リストの結果"
+
+#: ui/keyselectiondialog.cpp:856
+#, kde-format
+msgid "Recheck Key"
+msgstr "鍵を再チェック"
+
+#: ui/messagebox.cpp:71
+#, kde-format
+msgid "Your system does not have support for GnuPG Audit Logs"
+msgstr "あなたのシステムは GnuPG 監査ログをサポートしていません"
+
+#: ui/messagebox.cpp:72
+#, kde-format
+msgid "System Error"
+msgstr "システムエラー"
+
+#: ui/messagebox.cpp:79
+#, kde-format
+msgid ""
+"An error occurred while trying to retrieve the GnuPG Audit Log:\n"
+"%1"
+msgstr ""
+"GnuPG 監査ログの取得中にエラーが発生しました:\n"
+"%1"
+
+#: ui/messagebox.cpp:81
+#, kde-format
+msgid "GnuPG Audit Log Error"
+msgstr "GnuPG 監査ログのエラー"
+
+#: ui/messagebox.cpp:88
+#, kde-format
+msgid "No GnuPG Audit Log available for this operation."
+msgstr "この操作には GnuPG 監査ログはありません。"
+
+#: ui/messagebox.cpp:89
+#, kde-format
+msgid "No GnuPG Audit Log"
+msgstr "GnuPG 監査ログがありません"
+
+#: ui/messagebox.cpp:109 ui/messagebox.cpp:115
+#, kde-format
+msgid "GnuPG Audit Log Viewer"
+msgstr "GnuPG 監査ログビューア"
+
+#: ui/messagebox.cpp:121
+#, kde-format
+msgid "Signing failed: %1"
+msgstr "署名に失敗しました: %1"
+
+#: ui/messagebox.cpp:122
+#, kde-format
+msgid "Signing successful"
+msgstr "署名成功"
+
+#: ui/messagebox.cpp:133
+#, kde-format
+msgid "Encryption failed: %1"
+msgstr "暗号化に失敗しました: %1"
+
+#: ui/messagebox.cpp:134
+#, kde-format
+msgid "Encryption successful"
+msgstr "暗号化成功"
+
+#: ui/messagebox.cpp:155
+#, kde-format
+msgid "Signing Result"
+msgstr "署名の結果"
+
+#: ui/messagebox.cpp:167
+#, kde-format
+msgid "Signing Error"
+msgstr "署名のエラー"
+
+#: ui/messagebox.cpp:179 ui/messagebox.cpp:203
+#, kde-format
+msgid "Encryption Result"
+msgstr "暗号化の結果"
+
+#: ui/messagebox.cpp:191 ui/messagebox.cpp:215
+#, kde-format
+msgid "Encryption Error"
+msgstr "暗号化のエラー"
+
+#: ui/messagebox.cpp:263
+#, kde-format
+msgid "&Show Audit Log"
+msgstr "監査ログを表示(&S)"
+
+#: ui/progressdialog.cpp:91
+#, kde-format
+msgid "%1: %2"
+msgstr "%1: %2"
--- /dev/null
+# translation of libkleopatra.po to Kazakh
+#
+# Sairan Kikkarin <sairan@computer.org>, 2007, 2011.
+# Sairan Kikkarin <sairan(at)computer.org>, 2010.
+msgid ""
+msgstr ""
+"Project-Id-Version: libkleopatra\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2017-07-12 06:56+0200\n"
+"PO-Revision-Date: 2011-08-28 06:43+0600\n"
+"Last-Translator: Sairan Kikkarin <sairan@computer.org>\n"
+"Language-Team: Kazakh <kde-i18n-doc@kde.org>\n"
+"Language: kk\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Lokalize 1.1\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"\n"
+
+#: kleo/checksumdefinition.cpp:107
+#, kde-format
+msgid "Error in checksum definition %1: %2"
+msgstr "%1 дегеннің бақылау қосындысын анықтау қатесі: %2"
+
+#: kleo/checksumdefinition.cpp:157
+#, kde-format
+msgid "Cannot use both %f and | in '%1'"
+msgstr "Бірден %f және | '%1' дегендегіні пайдалануға болмайды"
+
+#: kleo/checksumdefinition.cpp:167
+#, kde-format
+msgid "Quoting error in '%1' entry"
+msgstr "'%1' - жазуында тырнақшалау қатесі"
+
+#: kleo/checksumdefinition.cpp:170
+#, kde-format
+msgid "'%1' too complex (would need shell)"
+msgstr "'%1' - тым күрделі (қоршау-орта керек)"
+
+#: kleo/checksumdefinition.cpp:174
+#, kde-format
+msgid "'%1' entry is empty/missing"
+msgstr "'%1' - жазуы бос/жоқ"
+
+#: kleo/checksumdefinition.cpp:183
+#, kde-format
+msgid "'%1' empty or not found"
+msgstr "'%1' - бос немесе жоқ"
+
+#: kleo/checksumdefinition.cpp:222
+#, kde-format
+msgid "'id' entry is empty/missing"
+msgstr "'id' жазуы бос/жоқ"
+
+#: kleo/checksumdefinition.cpp:225
+#, kde-format
+msgid "'output-file' entry is empty/missing"
+msgstr "'output-file' жазуы бос/жоқ"
+
+#: kleo/checksumdefinition.cpp:228
+#, kde-format
+msgid "'file-patterns' entry is empty/missing"
+msgstr "'file-patterns' жазуы бос/жоқ"
+
+#: kleo/checksumdefinition.cpp:395
+#, kde-format
+msgid "Caught unknown exception in group %1"
+msgstr "%1 тобында беймәлім жағдай орын алды"
+
+#: kleo/dn.cpp:507
+#, kde-format
+msgid "Common name"
+msgstr "Аты-жөні"
+
+#: kleo/dn.cpp:508
+#, kde-format
+msgid "Surname"
+msgstr "Тегі"
+
+#: kleo/dn.cpp:509
+#, kde-format
+msgid "Given name"
+msgstr "Аты"
+
+#: kleo/dn.cpp:510
+#, kde-format
+msgid "Location"
+msgstr "Орыны"
+
+#: kleo/dn.cpp:511
+#, kde-format
+msgid "Title"
+msgstr "Атағы"
+
+#: kleo/dn.cpp:512
+#, kde-format
+msgid "Organizational unit"
+msgstr "Бөлімі"
+
+#: kleo/dn.cpp:513
+#, kde-format
+msgid "Organization"
+msgstr "Ұйымы"
+
+#: kleo/dn.cpp:514
+#, kde-format
+msgid "Postal code"
+msgstr "Пошта индексі"
+
+#: kleo/dn.cpp:515
+#, kde-format
+msgid "Country code"
+msgstr "Елінің коды"
+
+#: kleo/dn.cpp:516
+#, kde-format
+msgid "State or province"
+msgstr "Облыс/уалаяты"
+
+#: kleo/dn.cpp:517
+#, kde-format
+msgid "Domain component"
+msgstr "Домен компоненті"
+
+#: kleo/dn.cpp:518
+#, kde-format
+msgid "Business category"
+msgstr "Іскерлік санаты"
+
+#: kleo/dn.cpp:519
+#, kde-format
+msgid "Email address"
+msgstr "Эл.пошта адресі"
+
+#: kleo/dn.cpp:520
+#, kde-format
+msgid "Mail address"
+msgstr "Пошта адресі"
+
+#: kleo/dn.cpp:521
+#, kde-format
+msgid "Mobile phone number"
+msgstr "Қалта телефоны"
+
+#: kleo/dn.cpp:522
+#, kde-format
+msgid "Telephone number"
+msgstr "Телефоны"
+
+#: kleo/dn.cpp:523
+#, kde-format
+msgid "Fax number"
+msgstr "Факс нөмірі"
+
+#: kleo/dn.cpp:524
+#, kde-format
+msgid "Street address"
+msgstr "Көшесі"
+
+#: kleo/dn.cpp:525
+#, kde-format
+msgid "Unique ID"
+msgstr "Бірегей ID"
+
+#: kleo/enum.cpp:57
+#, kde-format
+msgid "Inline OpenPGP (deprecated)"
+msgstr "Ендірілген OpenPGP (ескірген тәсіл)"
+
+#: kleo/enum.cpp:62
+#, kde-format
+msgid "OpenPGP/MIME"
+msgstr "OpenPGP/MIME"
+
+#: kleo/enum.cpp:67 ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "S/MIME"
+msgstr "S/MIME"
+
+#: kleo/enum.cpp:72
+#, kde-format
+msgid "S/MIME Opaque"
+msgstr "Мөлдір S/MIME"
+
+#: kleo/enum.cpp:104
+#, kde-format
+msgid "Any"
+msgstr "Кез келген"
+
+#: kleo/enum.cpp:177
+#, kde-format
+msgid "Never Encrypt"
+msgstr "Ешқашан шифрланбасын"
+
+#: kleo/enum.cpp:179
+#, kde-format
+msgid "Always Encrypt"
+msgstr "Әрқашан шифрлансын"
+
+#: kleo/enum.cpp:181
+#, kde-format
+msgid "Always Encrypt If Possible"
+msgstr "Мейілінше шифрлансын"
+
+#: kleo/enum.cpp:183 kleo/enum.cpp:240
+#, kde-format
+msgid "Ask"
+msgstr "Сұралсын"
+
+#: kleo/enum.cpp:185 kleo/enum.cpp:242
+#, kde-format
+msgid "Ask Whenever Possible"
+msgstr "Мейілінше сұрап"
+
+#: kleo/enum.cpp:187
+#, kde-kuit-format
+msgctxt "no specific preference"
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>жоқ</placeholder>"
+
+#: kleo/enum.cpp:234
+#, kde-format
+msgid "Never Sign"
+msgstr "Ешқашан қолтаңбаламау"
+
+#: kleo/enum.cpp:236
+#, kde-format
+msgid "Always Sign"
+msgstr "Әрқашан қолтаңбалау"
+
+#: kleo/enum.cpp:238
+#, kde-format
+msgid "Always Sign If Possible"
+msgstr "Мейілінше қолтаңбалау"
+
+#: kleo/enum.cpp:244
+#, kde-format
+msgctxt "no specific preference"
+msgid "<none>"
+msgstr "<жоқ>"
+
+#: kleo/keyfiltermanager.cpp:85
+#, kde-format
+msgid "All Certificates"
+msgstr "Бүкіл куәліктер"
+
+#: kleo/keyfiltermanager.cpp:100
+#, kde-format
+msgid "My Certificates"
+msgstr "Менің куәліктерм"
+
+#: kleo/keyfiltermanager.cpp:118
+#, kde-format
+msgid "Trusted Certificates"
+msgstr "Сенімді куәліктер"
+
+#: kleo/keyfiltermanager.cpp:135
+#, fuzzy, kde-format
+#| msgid "Trusted Certificates"
+msgid "Fully Trusted Certificates"
+msgstr "Сенімді куәліктер"
+
+#: kleo/keyfiltermanager.cpp:152
+#, kde-format
+msgid "Other Certificates"
+msgstr "Басқа куәліктер"
+
+#: kleo/keyfiltermanager.cpp:166
+#, fuzzy, kde-format
+#| msgid "All Certificates"
+msgid "VS-compliant Certificates"
+msgstr "Бүкіл куәліктер"
+
+#: kleo/keyfiltermanager.cpp:184
+#, fuzzy, kde-format
+#| msgid "Trusted Certificates"
+msgid "Not validated Certificates"
+msgstr "Сенімді куәліктер"
+
+#: ui/auditlogviewer.cpp:49
+#, kde-format
+msgid "View GnuPG Audit Log"
+msgstr "GnuPG аудит журналын көру"
+
+#: ui/auditlogviewer.cpp:53
+#, kde-format
+msgid "&Copy to Clipboard"
+msgstr "Алма&су буферіне көшіріп алу"
+
+#: ui/auditlogviewer.cpp:59
+#, kde-format
+msgid "&Save to Disk..."
+msgstr "Дискіне &сақтау..."
+
+#: ui/auditlogviewer.cpp:95
+#, kde-format
+msgid "Choose File to Save GnuPG Audit Log to"
+msgstr "GnuPG аудит журналын сақтайтын файлын таңдау"
+
+#: ui/auditlogviewer.cpp:118
+#, kde-format
+msgid "Could not save to file \"%1\": %2"
+msgstr "\"%1\" файлына сақтау болмайды: %2"
+
+#: ui/auditlogviewer.cpp:120
+#, kde-format
+msgid "File Save Error"
+msgstr "Файлды сақтау қатесі"
+
+#: ui/cryptoconfigdialog.cpp:44
+#, kde-format
+msgid "Configure GnuPG Backend"
+msgstr "GnuPG тетігін баптау"
+
+#: ui/cryptoconfigdialog.cpp:55
+#, kde-format
+msgid "&Reset"
+msgstr "&Ысырып тастау"
+
+#: ui/cryptoconfigmodule.cpp:160
+#, kde-format
+msgid "GpgConf Error"
+msgstr "GpgConf қатесі"
+
+#: ui/cryptoconfigmodule.cpp:216
+#, kde-format
+msgid ""
+"The gpgconf tool used to provide the information for this dialog does not "
+"seem to be installed properly. It did not return any components. Try running "
+"\"%1\" on the command line for more information."
+msgstr ""
+"Бұл диаог үшін ақпарат беретін \"gpgconf\" құралы бірдебір керек компонентін "
+"қайтарған жоқ. Бәлкім, ол дұрыс орнатылмаған шығар. Анықтау үшін команда "
+"жолынан \"%1\" деп көріңіз."
+
+#: ui/cryptoconfigmodule.cpp:496
+#, kde-format
+msgctxt ""
+"Translate this to 'yes' or 'no' (use the English words!) depending on "
+"whether your language uses Sentence style capitalisation in GUI labels (yes) "
+"or not (no). Context: We get some backend strings in that have the wrong "
+"capitalizaion (in English, at least) so we need to force the first character "
+"to upper-case. It is this behaviour you can control for your language with "
+"this translation."
+msgid "yes"
+msgstr "yes"
+
+#: ui/cryptoconfigmodule.cpp:546
+#, kde-format
+msgid "0 - None"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:547
+#, kde-format
+msgid "1 - Basic"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:548
+#, kde-format
+msgid "2 - Verbose"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:549
+#, kde-format
+msgid "3 - More Verbose"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:550
+#, kde-format
+msgid "4 - All"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:559
+#, kde-format
+msgid "Set the debugging level to"
+msgstr "Жөндеу деңгейі:"
+
+#: ui/cryptoconfigmodule.cpp:787
+#, kde-format
+msgid "Show..."
+msgstr "Көрсету..."
+
+#: ui/cryptoconfigmodule.cpp:787 ui/cryptoconfigmodule.cpp:876
+#, kde-format
+msgid "Edit..."
+msgstr "Өзгерту..."
+
+#: ui/cryptoconfigmodule.cpp:841
+#, kde-format
+msgid "Configure LDAP Servers"
+msgstr "LDAP серверлерін баптау"
+
+#: ui/cryptoconfigmodule.cpp:862
+#, fuzzy, kde-format
+#| msgid "No server configured yet"
+msgid "None configured"
+msgstr "Бапталған сервер жоқ"
+
+#: ui/cryptoconfigmodule.cpp:864
+#, kde-format
+msgid "1 server configured"
+msgid_plural "%1 servers configured"
+msgstr[0] "%1 сервер бапталған"
+
+#: ui/cryptoconfigmodule.cpp:879
+#, kde-format
+msgid "Use keyserver at"
+msgstr "Пайдаланатын кілт сервері:"
+
+#: ui/cryptoconfigmodule.cpp:968
+#, kde-format
+msgid "Configure Keyservers"
+msgstr "Кілт серверлерін баптау"
+
+#: ui/directoryserviceswidget.cpp:67
+#, kde-format
+msgctxt "default server name, keep it a valid domain name, ie. no spaces"
+msgid "server"
+msgstr "server"
+
+#: ui/directoryserviceswidget.cpp:95
+#, kde-format
+msgid "hkp"
+msgstr "hkp"
+
+#: ui/directoryserviceswidget.cpp:96
+#, kde-format
+msgid "http"
+msgstr "http"
+
+#: ui/directoryserviceswidget.cpp:97
+#, kde-format
+msgid "https"
+msgstr "https"
+
+#: ui/directoryserviceswidget.cpp:98
+#, kde-format
+msgid "ftp"
+msgstr "ftp"
+
+#: ui/directoryserviceswidget.cpp:99
+#, kde-format
+msgid "ftps"
+msgstr "ftps"
+
+#: ui/directoryserviceswidget.cpp:100
+#, kde-format
+msgid "ldap"
+msgstr "ldap"
+
+#: ui/directoryserviceswidget.cpp:101
+#, kde-format
+msgid "ldaps"
+msgstr "ldaps"
+
+#: ui/directoryserviceswidget.cpp:588
+#, kde-format
+msgid "Server Name"
+msgstr "Сервер атауы"
+
+#: ui/directoryserviceswidget.cpp:589
+#, kde-format
+msgid "Server Port"
+msgstr "Сервер порты"
+
+#: ui/directoryserviceswidget.cpp:590
+#, kde-format
+msgid "Base DN"
+msgstr "Негізгі DN"
+
+#: ui/directoryserviceswidget.cpp:591
+#, kde-format
+msgid "User Name"
+msgstr "Пайдаланушысы"
+
+#: ui/directoryserviceswidget.cpp:592
+#, kde-format
+msgid "Password"
+msgstr "Паролі"
+
+#: ui/directoryserviceswidget.cpp:614
+#, kde-format
+msgid "(read-only)"
+msgstr "(тек оқу үшін)"
+
+#: ui/directoryserviceswidget.cpp:616
+#, kde-format
+msgctxt "amended tooltip; %1: original tooltip"
+msgid "%1 (read-only)"
+msgstr "%1 (тек оқу үшін)"
+
+#: ui/directoryserviceswidget.cpp:739
+#, kde-format
+msgid ""
+"Enter the name or IP address of the server hosting the directory service."
+msgstr "Каталог қызметі сервер хостының атауын не IP-адресін келтіріңіз."
+
+#: ui/directoryserviceswidget.cpp:741
+#, kde-format
+msgid ""
+"<b>(Optional, the default is fine in most cases)</b> Pick the port number "
+"the directory service is listening on."
+msgstr ""
+"<b>(Міндетті емес, көбінде әдеттегісі жарайды)</b> Каталог қызметі қай порты "
+"арқылы істейтінің таңдаңыз."
+
+#: ui/directoryserviceswidget.cpp:744
+#, kde-format
+msgid ""
+"<b>(Only for LDAP)</b> Enter the base DN for this LDAP server to limit "
+"searches to only that subtree of the directory."
+msgstr ""
+"<b>(Тек LDAP үшін)</b> Бұл LDAP серверінде іздеуді каталогтың тек осы "
+"тармағымен шектеу үшін негізгі DN-нің келтіріңіз."
+
+#: ui/directoryserviceswidget.cpp:747
+#, kde-format
+msgid "<b>(Optional)</b> Enter your user name here, if needed."
+msgstr ""
+"<b>(Міндетті емес)</b> Керек болса, мұнда пайдаланушы атауыңызды келтіріңіз."
+
+#: ui/directoryserviceswidget.cpp:749
+#, kde-format
+msgid ""
+"<b>(Optional, not recommended)</b> Enter your password here, if needed. Note "
+"that the password will be saved in the clear in a config file in your home "
+"directory."
+msgstr ""
+"<b>(Міндетті емес, және қауіпті)</b> Керек болса, мұнда пароліңізді "
+"келтіріңіз. Абайлаңыз, ол ашық түрде, мекен каталогыңыздағы баптау файлында "
+"саталады."
+
+#. i18n: ectx: property (windowTitle), widget (QWidget, DirectoryServicesWidget)
+#: ui/directoryserviceswidget.ui:14
+#, kde-format
+msgid "Directory Services Configuration"
+msgstr "Каталог қызметтерін баптау"
+
+#. i18n: ectx: property (text), widget (QLabel, pgpKSLabel)
+#: ui/directoryserviceswidget.ui:22
+#, fuzzy, kde-format
+#| msgid "OpenPGP Key Selection"
+msgid "OpenPGP Keyserver:"
+msgstr "OpenPGP кілтін таңдау"
+
+#. i18n: ectx: property (title), widget (QGroupBox, x500LA)
+#: ui/directoryserviceswidget.ui:35
+#, fuzzy, kde-format
+#| msgid "Directory services:"
+msgid "X509 Directory services:"
+msgstr "Каталог қызметтері:"
+
+#. i18n: ectx: property (whatsThis), widget (QTreeView, treeView)
+#: ui/directoryserviceswidget.ui:43
+#, fuzzy, kde-format
+#| msgid ""
+#| "This is a list of all directory services that are configured for use with "
+#| "X.509 and OpenPGP."
+msgid ""
+"This is a list of all directory services that are configured for use with "
+"X.509."
+msgstr ""
+"Бапталған X.509 және OpenPGP бойынша істейтін барлық каталог қызметтерінің "
+"тізімі."
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:70
+#, kde-format
+msgid "Click to add a service"
+msgstr "Қызметті қосу үшін түртіңіз"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:73
+#, kde-format
+msgid ""
+"Click this button to create a new directory service entry as a clone of the "
+"currently selected one (or with default values, if no other is selected). "
+"You can then configure details in the table on the left hand."
+msgstr ""
+"Таңдалған каталог қызметінің жазуының жаңа көшірмесін (ештеңе таңдалмаса "
+"әдетті параметрілерімен) жасау үшін осы батырмсын басыңыз. Кейін, кестенің "
+"сол жағында егжей-тегжейін баптай аласыз."
+
+#. i18n: ectx: property (text), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:76
+#, kde-format
+msgid "New"
+msgstr "Жаңа"
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:92
+#, kde-format
+msgid "Click to remove the currently selected service"
+msgstr "Таңдалған қызметті өшіру үшін түртіңіз"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:95
+#, kde-format
+msgid ""
+"Click this button to remove the currently selected directory service. The "
+"change will only take effect once you acknowledge the main configuration "
+"dialog."
+msgstr ""
+"Таңдалған каталог қызметінің жазуының өшіру үшін осы батырмсын басыңыз. "
+"Өзгерісі тек жалпы диалогынан айнымай шыққанда ғана іске асырылады."
+
+#. i18n: ectx: property (text), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:98
+#, kde-format
+msgid "Delete"
+msgstr "Өшіру"
+
+#. i18n: ectx: property (whatsThis), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:128
+#, kde-format
+msgid ""
+"Use this option to switch display of username and password information on or "
+"off in the above table."
+msgstr ""
+"Бұл параметрін, жоғардағы кестеде айдаланушы мен паролі туралы мәліметі болу-"
+"болмауын басқарады."
+
+#. i18n: ectx: property (text), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:131
+#, kde-format
+msgid "Show user and password information"
+msgstr "Пайдаланушы мен паролі көрсетілсін"
+
+#: ui/dnattributeorderconfigwidget.cpp:73
+#, kde-format
+msgid "Description"
+msgstr "Сипаттамасы"
+
+#: ui/dnattributeorderconfigwidget.cpp:91
+#, kde-format
+msgid "Available attributes:"
+msgstr "Қол жеткізер атрибуттары:"
+
+#: ui/dnattributeorderconfigwidget.cpp:92
+#, kde-format
+msgid "Current attribute order:"
+msgstr "Қазіргі атрибут реті:"
+
+#: ui/dnattributeorderconfigwidget.cpp:112
+#, kde-format
+msgid "All others"
+msgstr "Барлық басқалар"
+
+#: ui/dnattributeorderconfigwidget.cpp:129
+#, kde-format
+msgid "Move to top"
+msgstr "Ең жоғарыға"
+
+#: ui/dnattributeorderconfigwidget.cpp:130
+#, kde-format
+msgid "Move one up"
+msgstr "Бір қадам жоғары"
+
+#: ui/dnattributeorderconfigwidget.cpp:131
+#, kde-format
+msgid "Remove from current attribute order"
+msgstr "Қазіргі атрибут ретінен шығару"
+
+#: ui/dnattributeorderconfigwidget.cpp:132
+#, kde-format
+msgid "Add to current attribute order"
+msgstr "Қазіргі атрибут ретіне кіргізу"
+
+#: ui/dnattributeorderconfigwidget.cpp:133
+#, kde-format
+msgid "Move one down"
+msgstr "Бір қадам төмен"
+
+#: ui/dnattributeorderconfigwidget.cpp:134
+#, kde-format
+msgid "Move to bottom"
+msgstr "Ең төмеге"
+
+#: ui/keyapprovaldialog.cpp:87
+#, kde-kuit-format
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>жоқ</placeholder>"
+
+#: ui/keyapprovaldialog.cpp:88
+#, kde-format
+msgid "Never Encrypt with This Key"
+msgstr "Бұл кілтпен ешқашан шифрламау"
+
+#: ui/keyapprovaldialog.cpp:89
+#, kde-format
+msgid "Always Encrypt with This Key"
+msgstr "Әрқашан осы кілтпен шифрлау"
+
+#: ui/keyapprovaldialog.cpp:90
+#, kde-format
+msgid "Encrypt Whenever Encryption is Possible"
+msgstr "Шифрлау мүмкін болса - шифрлау"
+
+#: ui/keyapprovaldialog.cpp:91
+#, kde-format
+msgid "Always Ask"
+msgstr "Әрқашанда сұрап"
+
+#: ui/keyapprovaldialog.cpp:92
+#, kde-format
+msgid "Ask Whenever Encryption is Possible"
+msgstr "Шифрлау мүмкін болса - сұрау"
+
+#: ui/keyapprovaldialog.cpp:113
+#, kde-format
+msgid "Encryption Key Approval"
+msgstr "Шифрлау кілтті мақұлдау"
+
+#: ui/keyapprovaldialog.cpp:129
+#, kde-format
+msgid "The following keys will be used for encryption:"
+msgstr "Шифрлауға келесі кілттер қолданылсын:"
+
+#: ui/keyapprovaldialog.cpp:145
+#, kde-format
+msgid "Your keys:"
+msgstr "Кілттеріңіз:"
+
+#: ui/keyapprovaldialog.cpp:157
+#, kde-format
+msgid "Recipient:"
+msgstr "Қабылдаушы:"
+
+#: ui/keyapprovaldialog.cpp:162
+#, kde-format
+msgid "Encryption keys:"
+msgstr "Шифрлау кілттері:"
+
+#: ui/keyapprovaldialog.cpp:169
+#, kde-format
+msgid "Encryption preference:"
+msgstr "Шифрлау таңдаулары:"
+
+#: ui/keyrequester.cpp:118
+#, kde-format
+msgid "Clear"
+msgstr "Тазалау"
+
+#: ui/keyrequester.cpp:121
+#, kde-format
+msgid "Change..."
+msgstr "Өзгерту..."
+
+#: ui/keyrequester.cpp:232 ui/keyselectiondialog.cpp:256
+#, kde-kuit-format
+msgid "<placeholder>unknown</placeholder>"
+msgstr "<placeholder>беймәлім</placeholder>"
+
+#: ui/keyrequester.cpp:246 ui/keyselectiondialog.cpp:657
+#, kde-format
+msgid ""
+"<qt><p>An error occurred while fetching the keys from the backend:</p><p><b>"
+"%1</b></p></qt>"
+msgstr ""
+"<qt><p>Бағдарламадан кілттерді алу кезінде қате пайда болды:</p><p><b>%1</"
+"b></p></qt>"
+
+#: ui/keyrequester.cpp:251 ui/keyrequester.cpp:283 ui/keyrequester.cpp:306
+#: ui/keyselectiondialog.cpp:630 ui/keyselectiondialog.cpp:662
+#, kde-format
+msgid "Key Listing Failed"
+msgstr "Кілттерді тізімдеу жаңылысы"
+
+#: ui/keyrequester.cpp:281
+#, kde-format
+msgid ""
+"The OpenPGP backend does not support listing keys. Check your installation."
+msgstr ""
+"OpenPGP бағдарламасы кілттерді тізімдеуді қолдамайды. Орнатуын тексеріңіз."
+
+#: ui/keyrequester.cpp:304
+#, kde-format
+msgid ""
+"The S/MIME backend does not support listing keys. Check your installation."
+msgstr ""
+"S/MIME бағдарламасы кілттерді тізімдеуді қолдамайды. Орнатуын тексеріңіз."
+
+#: ui/keyrequester.cpp:426
+#, kde-format
+msgid "OpenPGP Key Selection"
+msgstr "OpenPGP кілтін таңдау"
+
+#: ui/keyrequester.cpp:427
+#, kde-format
+msgid "Please select an OpenPGP key to use."
+msgstr "Қолданатын OpenPGP кілтін таңдаңыз."
+
+#: ui/keyrequester.cpp:429
+#, kde-format
+msgid "S/MIME Key Selection"
+msgstr "S/MIME кілтін таңдау"
+
+#: ui/keyrequester.cpp:430
+#, kde-format
+msgid "Please select an S/MIME key to use."
+msgstr "Қолданатын S/MIME кілтін таңдаңыз."
+
+#: ui/keyrequester.cpp:432
+#, kde-format
+msgid "Key Selection"
+msgstr "Кілтті таңдау"
+
+#: ui/keyrequester.cpp:433
+#, kde-format
+msgid "Please select an (OpenPGP or S/MIME) key to use."
+msgstr "Қолданатын (OpenPGP не S/MIME) кілтін таңдаңыз."
+
+#: ui/keyselectioncombo.cpp:195
+#, kde-format
+msgctxt "Name <email> (validity, type, created: date)"
+msgid "%1 (%2, %3, created: %4)"
+msgstr ""
+
+#: ui/keyselectioncombo.cpp:196
+#, kde-format
+msgctxt "Name <email>"
+msgid "%1 <%2>"
+msgstr ""
+
+#: ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "OpenPGP"
+msgstr "OpenPGP"
+
+#: ui/keyselectioncombo.cpp:347
+#, fuzzy, kde-format
+#| msgid "Fetching keys..."
+msgid "Loading keys ..."
+msgstr "Кілттерді қабылдау..."
+
+#: ui/keyselectiondialog.cpp:98
+#, kde-format
+msgid "The key is not valid."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:106
+#, kde-format
+msgid "The key is expired."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:110
+#, kde-format
+msgid "The key is revoked."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:114
+#, kde-format
+msgid "The key is disabled."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:122
+#, fuzzy, kde-format
+#| msgid "The following keys will be used for encryption:"
+msgid "The key is not designated for encryption."
+msgstr "Шифрлауға келесі кілттер қолданылсын:"
+
+#: ui/keyselectiondialog.cpp:128
+#, kde-format
+msgid "The key is not designated for signing."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:134
+#, kde-format
+msgid "The key is not designated for certifying."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:140
+#, kde-format
+msgid "The key is not designated for authentication."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:148
+#, kde-format
+msgid "The key is not secret."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:163
+#, kde-format
+msgid "The key is not trusted enough."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:169
+#, kde-format
+msgid "The key can be used."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:230
+#, kde-format
+msgid "Key ID"
+msgstr "Кілттің ID-і"
+
+#: ui/keyselectiondialog.cpp:231
+#, kde-format
+msgid "User ID"
+msgstr "Пайдаланушының ID-і"
+
+#: ui/keyselectiondialog.cpp:279
+#, kde-format
+msgid "never"
+msgstr "ешқашан"
+
+#: ui/keyselectiondialog.cpp:289 ui/keyselectiondialog.cpp:291
+#: ui/keyselectiondialog.cpp:300 ui/keyselectiondialog.cpp:302
+#, kde-format
+msgid "unknown"
+msgstr "беймәлім"
+
+#: ui/keyselectiondialog.cpp:289
+#, kde-format
+msgid "OpenPGP key for <b>%1</b>"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:291
+#, kde-format
+msgid "S/MIME key for <b>%1</b>"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:298
+#, kde-format
+msgctxt "Key creation date"
+msgid "Created"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:299
+#, kde-format
+msgctxt "Key Expiration date"
+msgid "Expiry"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:300
+#, kde-format
+msgctxt "Key fingerprint"
+msgid "Fingerprint"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:302
+#, kde-format
+msgctxt "Key issuer"
+msgid "Issuer"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:304
+#, kde-format
+msgctxt "Key status"
+msgid "Status"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:456
+#, kde-format
+msgid "Search for &External Certificates"
+msgstr "С&ыртқы куәліктерді іздеу"
+
+#: ui/keyselectiondialog.cpp:470
+#, kde-format
+msgid "&Search for:"
+msgstr "&Іздейтіні:"
+
+#: ui/keyselectiondialog.cpp:494
+#, kde-format
+msgid "&Remember choice"
+msgstr "Таңдау &жатталсын"
+
+#: ui/keyselectiondialog.cpp:497
+#, kde-format
+msgid ""
+"<qt><p>If you check this box your choice will be stored and you will not be "
+"asked again.</p></qt>"
+msgstr ""
+"<qt><p>Бұл көзді белгілеп қойсаңыз - таңдау жаттап алынады да, ендігәрі "
+"сұралмайды.</p></qt>"
+
+#: ui/keyselectiondialog.cpp:509
+#, kde-format
+msgid "&Reread Keys"
+msgstr "&Кілтерді қайта оқып шығу"
+
+#: ui/keyselectiondialog.cpp:510
+#, kde-format
+msgid "&Start Certificate Manager"
+msgstr "Куәліктер менеджерін ж&егу"
+
+#: ui/keyselectiondialog.cpp:628
+#, kde-format
+msgid "No backends found for listing keys. Check your installation."
+msgstr "Кілттерді тізімдейтін бағдарламалар табылмады. Орнатуын тексеріңіз."
+
+#: ui/keyselectiondialog.cpp:644
+#, kde-format
+msgid "Could not start certificate manager; please check your installation."
+msgstr "Куәліктер менеджері жегілмеді; орнатылғанын тексеріңіз."
+
+#: ui/keyselectiondialog.cpp:646
+#, kde-format
+msgid "Certificate Manager Error"
+msgstr "Куәліктер менеджерінің қатесі"
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Checking selected keys..."
+msgstr "Таңдалған кілттерді тексеру..."
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Fetching keys..."
+msgstr "Кілттерді қабылдау..."
+
+#: ui/keyselectiondialog.cpp:731
+#, kde-format
+msgid ""
+"<qt>One backend returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgid_plural ""
+"<qt>%1 backends returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgstr[0] ""
+"<qt>%1 бағдарламаның шығысы келтеленген.<p>Сондықтан көрсетілген кілттер "
+"тізімі толық емес</p></qt>"
+
+#: ui/keyselectiondialog.cpp:736
+#, kde-format
+msgid "Key List Result"
+msgstr "Нәтижелі кілт тізімі"
+
+#: ui/keyselectiondialog.cpp:856
+#, kde-format
+msgid "Recheck Key"
+msgstr "Кілтті қайта тексеру"
+
+#: ui/messagebox.cpp:71
+#, kde-format
+msgid "Your system does not have support for GnuPG Audit Logs"
+msgstr "Жүйеңіз GnuPG аудит журналыдарын жургізу дегенді білмейді."
+
+#: ui/messagebox.cpp:72
+#, kde-format
+msgid "System Error"
+msgstr "Жүйелік қате"
+
+#: ui/messagebox.cpp:79
+#, kde-format
+msgid ""
+"An error occurred while trying to retrieve the GnuPG Audit Log:\n"
+"%1"
+msgstr ""
+"GnuPG аудит журналын көру әрекеті кезінде бір қате орын алды:\n"
+"%1"
+
+#: ui/messagebox.cpp:81
+#, kde-format
+msgid "GnuPG Audit Log Error"
+msgstr "GnuPG аудит журнал қатесі"
+
+#: ui/messagebox.cpp:88
+#, kde-format
+msgid "No GnuPG Audit Log available for this operation."
+msgstr "Бұндай әрекет істетін GnuPG аудит журналы жоқ."
+
+#: ui/messagebox.cpp:89
+#, kde-format
+msgid "No GnuPG Audit Log"
+msgstr "GnuPG аудит журналы жоқ"
+
+#: ui/messagebox.cpp:109 ui/messagebox.cpp:115
+#, kde-format
+msgid "GnuPG Audit Log Viewer"
+msgstr "GnuPG аудит журналын қарау"
+
+#: ui/messagebox.cpp:121
+#, kde-format
+msgid "Signing failed: %1"
+msgstr "Қолтаңбалау жаңылысы: %1"
+
+#: ui/messagebox.cpp:122
+#, kde-format
+msgid "Signing successful"
+msgstr "Қолтаңбалау сәтті өтті"
+
+#: ui/messagebox.cpp:133
+#, kde-format
+msgid "Encryption failed: %1"
+msgstr "Шифрлау жаңылысы: %1"
+
+#: ui/messagebox.cpp:134
+#, kde-format
+msgid "Encryption successful"
+msgstr "Шифрлау сәтті өтті"
+
+#: ui/messagebox.cpp:155
+#, kde-format
+msgid "Signing Result"
+msgstr "Қолтаңбалау нәтижелері"
+
+#: ui/messagebox.cpp:167
+#, kde-format
+msgid "Signing Error"
+msgstr "Қолтаңбалау қатесі"
+
+#: ui/messagebox.cpp:179 ui/messagebox.cpp:203
+#, kde-format
+msgid "Encryption Result"
+msgstr "Шифрлау нәтижесі"
+
+#: ui/messagebox.cpp:191 ui/messagebox.cpp:215
+#, kde-format
+msgid "Encryption Error"
+msgstr "Шифрлау қатесі"
+
+#: ui/messagebox.cpp:263
+#, kde-format
+msgid "&Show Audit Log"
+msgstr "Аудит журналы &көрсетілсін"
+
+#: ui/progressdialog.cpp:91
+#, kde-format
+msgid "%1: %2"
+msgstr "%1: %2"
+
+#~ msgctxt "New X.509 Directory Server"
+#~ msgid "X.509"
+#~ msgstr "X.509"
+
+#~ msgctxt "New OpenPGP Directory Server"
+#~ msgid "OpenPGP"
+#~ msgstr "OpenPGP"
+
+#~ msgid "Scheme"
+#~ msgstr "Протоколы"
+
+#~ msgid "X.509"
+#~ msgstr "X.509"
+
+#, fuzzy
+#~| msgid ""
+#~| "Select the access protocol (scheme) that the directory service is "
+#~| "available through."
+#~ msgid ""
+#~ "Select the access scheme (scheme) that the directory service is available "
+#~ "through."
+#~ msgstr "Каталог қызметі қай протокол бойынша қатынайтының таңдаңыз."
+
+#~ msgid ""
+#~ "Check this column if this directory service is providing S/MIME (X.509) "
+#~ "certificates."
+#~ msgstr ""
+#~ "Бұл каталог қызметі S/MIME (X.509) куәліктерін беретін болса осы бағанды "
+#~ "белгілеп қосыңыз."
+
+#~ msgid ""
+#~ "Check this column if this directory service is providing OpenPGP "
+#~ "certificates."
+#~ msgstr ""
+#~ "Бұл каталог қызметі OpenPGP куәліктерін беретін болса осы бағанды "
+#~ "белгілеп қосыңыз."
+
+#~ msgid "0 - None (no debugging at all)"
+#~ msgstr "0 - Жоқ (мүлдем керегі жоқ)"
+
+#~ msgid "1 - Basic (some basic debug messages)"
+#~ msgstr "1 - Негізгі (кейбір негізгі жөндеу хабарламалар)"
+
+#~ msgid "2 - Advanced (more verbose debug messages)"
+#~ msgstr "1 - Кеңейтілген (толығрақ жөндеу хабарламалар)"
+
+#~ msgid "3 - Expert (even more detailed messages)"
+#~ msgstr "3 - Жетелеген (одан да толық жөндеу хабарламалар)"
+
+#~ msgid "4 - Guru (all of the debug messages you can get)"
+#~ msgstr "4 \"Гуру\" үшін (мейілінше толық жөндеу хабарламалар)"
+
+#~ msgid "General"
+#~ msgstr "Жалпы"
+
+#~ msgid "Chiasmus"
+#~ msgstr "Chiasmus"
+
+#~ msgid "Chiasmus command line tool"
+#~ msgstr "Chiasmus команда жолының құралы"
+
+#~ msgid "Unsupported protocol \"%1\""
+#~ msgstr "\"%1\" - танымайтын протокол"
+
+#~ msgid "File \"%1\" does not exist or is not executable."
+#~ msgstr "\"%1\" деген жоқ не орындалмайтын файл."
+
+#~ msgid "Output from chiasmus"
+#~ msgstr "Chiasmus-тың шығысы"
+
+#~ msgid "Decryption failed: %1"
+#~ msgstr "Шифрды шешу жаңылысы: %1"
+
+#~ msgid ""
+#~ "The following was received on stderr:\n"
+#~ "%1"
+#~ msgstr ""
+#~ "Қате туралы (stderr) хабарламасы:\n"
+#~ "%1"
+
+#~ msgid "Failed to load %1: %2"
+#~ msgstr "%1 жүктеу жаңылысы: %2"
+
+#~ msgid "Library does not contain the symbol \"Chiasmus\"."
+#~ msgstr "Жиында \"Chiasmus\" деген жоқ."
+
+#~ msgid "Scanning directory %1..."
+#~ msgstr "%1 каталогын қарау..."
+
+#~ msgid "GpgME"
+#~ msgstr "GpgME"
+
+#~ msgid "GPGME was compiled without support for %1."
+#~ msgstr "GPGME бағдарламасы %1 қолдаусыз жинақталған."
+
+#~ msgid "Engine %1 is not installed properly."
+#~ msgstr "%1 тетігі дұрыс орнатылмаған."
+
+#~ msgid "Engine %1 version %2 installed, but at least version %3 is required."
+#~ msgstr "%1 тетіктің %2 нұсқасы орнатылған, алайда керек нұсқасы - %3."
+
+#~ msgid "Unknown problem with engine for protocol %1."
+#~ msgstr "%1 протоколы тетігіне мәселе туғызды."
+
+#~ msgid "program terminated unexpectedly"
+#~ msgstr "бағдарлама күтпенде үзілді"
+
+#~ msgid "program not found or cannot be started"
+#~ msgstr "бағдарлама жоқ не орындауға келмейді"
+
+#~ msgid "<qt>Failed to execute gpgconf:<p>%1</p></qt>"
+#~ msgstr "<qt>gpgconf-ты орындау жаңылысы:<p>%1</p></qt>"
+
+#~ msgid ""
+#~ "Could not start gpgconf.\n"
+#~ "Check that gpgconf is in the PATH and that it can be started."
+#~ msgstr ""
+#~ "gpgconf жегілмейді\n"
+#~ "gpgconf бағдарламасы PATH жолында екенін тексеріңіз."
+
+#~ msgid "Error from gpgconf while saving configuration: %1"
+#~ msgstr "Баптауларды сақтағанда gpgconf қатеге тап болды: %1"
+
+#~ msgid "Generating DSA key..."
+#~ msgstr "DSA кілтін жасау..."
+
+#~ msgid "Generating ElGamal key..."
+#~ msgstr "ElGamal кілтін жасау..."
+
+#~ msgid "Searching for a large prime number..."
+#~ msgstr "Қарапайым санның үлкенін іздеу..."
+
+#~ msgid ""
+#~ "Waiting for new entropy from random number generator (you might want to "
+#~ "exercise the harddisks or move the mouse)..."
+#~ msgstr ""
+#~ "Кездейсоқ сан генераторынан жаңа энтропияны күту (дискіні не тышқанды "
+#~ "қимылдатқан көмектеседі)..."
+
+#~ msgid "Please wait..."
+#~ msgstr "Күте тұрыңыз..."
+
+#~ msgid ""
+#~ "Starting gpg-agent (you should consider starting a global instance "
+#~ "instead)..."
+#~ msgstr ""
+#~ "gpg-agent дегенді жегу (бұның орнына жалпы жүйелік данасын жегуді "
+#~ "қарастырыңыз)..."
+
+#~ msgid "While scanning for %1 support in backend %2:"
+#~ msgstr "%2 бағдарламасы %1 қолдауын қарау кезінде:"
+
+#~ msgctxt "progress info: \"%1 of %2\""
+#~ msgid "%1/%2"
+#~ msgstr "%1/%2"
+
+#~ msgid ""
+#~ "OpenPGP key for %1\n"
+#~ "Created: %2\n"
+#~ "Expiry: %3\n"
+#~ "Fingerprint: %4"
+#~ msgstr ""
+#~ "%1 үшін OpenPGP кілті\n"
+#~ "Жасалған кезі: %2\n"
+#~ "Мерзімі: %3 дейін\n"
+#~ "Бақылау тізбегі: %4"
+
+#~ msgid ""
+#~ "S/MIME key for %1\n"
+#~ "Created: %2\n"
+#~ "Expiry: %3\n"
+#~ "Fingerprint: %4\n"
+#~ "Issuer: %5"
+#~ msgstr ""
+#~ "%1 үшін S/MIME кілті\n"
+#~ "Жасалған кезі: %2\n"
+#~ "Мерзімі: %3 дейін\n"
+#~ "Бақылау тізбегі: %4\n"
+#~ "Иесі: %5"
+
+#~ msgid "Copy Audit Log to Clipboard"
+#~ msgstr "Аудит журналын алмасу буферіне көшіріп алу"
+
+#~ msgid "Add or Change Directory Service"
+#~ msgstr "Каталог қызметін қосу не өзгерту"
+
+#~ msgid "&Server name:"
+#~ msgstr "&Сервердің атауы:"
+
+#~ msgid "389"
+#~ msgstr "389"
+
+#~ msgid "&User name (optional):"
+#~ msgstr "&Пайдаланушысы (міндетті емес):"
+
+#~ msgid "Pass&word (optional):"
+#~ msgstr "Па&ролі (міндетті емес):"
+
+#~ msgid "&OK"
+#~ msgstr "&ОК"
+
+#~ msgid "&Cancel"
+#~ msgstr "Қ&айту"
+
+#~ msgid "&Base DN:"
+#~ msgstr "&Негізгі DN:"
+
+#~ msgid "&Port:"
+#~ msgstr "&Порты:"
+
+#~ msgctxt "NAME OF TRANSLATORS"
+#~ msgid "Your names"
+#~ msgstr "Сайран Киккарин"
+
+#~ msgctxt "EMAIL OF TRANSLATORS"
+#~ msgid "Your emails"
+#~ msgstr "sairan@computer.org"
+
+#~ msgid "'create-command' entry is empty/missing"
+#~ msgstr "'create-command' жазуы бос/жоқ"
+
+#~ msgid "'create-command' not found in filesystem"
+#~ msgstr "'create-command' файлдық жүйесінде жоқ"
+
+#~ msgid "Quoting error in 'verify-command' entry"
+#~ msgstr "'verify-command' жазуында тырнақшалау қатесі"
+
+#~ msgid "'verify-command' too complex (would need shell)"
+#~ msgstr "'verify-command' тым күрделі (қоршау-орта керек)"
+
+#~ msgid "'verify-command' entry is empty/missing"
+#~ msgstr "'verify-command' жазуы бос/жоқ"
+
+#~ msgid "'verify-command' not found in filesystem"
+#~ msgstr "'verify-command' файлдық жүйесінде жоқ"
+
+#~ msgid "'verify-command' empty or not found"
+#~ msgstr "'verify-command' бос немесе жоқ"
+
+#~ msgid "failed"
+#~ msgstr "жаңылды"
+
+#~ msgctxt ""
+#~ "Items in Kleo::BackendConfigWidget listview (1: protocol; 2: "
+#~ "implementation name)"
+#~ msgid "%1 (%2)"
+#~ msgstr "%1 (%2)"
+
+#~ msgid "Available Backends"
+#~ msgstr "Бар бағдарламалар"
+
+#~ msgid "Confi&gure..."
+#~ msgstr "Ба&птау..."
+
+#~ msgid "Rescan"
+#~ msgstr "Қайта қарап-шығу"
+
+#~ msgid "The following problems where encountered during scanning:"
+#~ msgstr "Қарап-шығу кезінде тап болған мәселелер:"
+
+#, fuzzy
+#~| msgid "Scan Results"
+#~ msgctxt "@title:window Results of the scanning"
+#~ msgid "Scan Results"
+#~ msgstr "Қарап-шығу нәтижелері"
+
+#~ msgid "(Unknown Protocol)"
+#~ msgstr "(Беймәлім протоколы)"
+
+#~ msgid "Error while initializing plugin \"%1\""
+#~ msgstr "\"%1\" плагин модулінің инициализация қатесі"
+
+#~ msgid ""
+#~ "You need a passphrase to unlock the secret key for user:<br/> %1 (retry)"
+#~ msgstr ""
+#~ "Құпия кілтті келесі пайдаланушы үшін ашатын паролі керек:<br/> %1 "
+#~ "(қайталау)"
+
+#~ msgid "You need a passphrase to unlock the secret key for user:<br/> %1"
+#~ msgstr "Құпия кілтті келесі пайдаланушы үшін ашатын паролі керек:<br/> %1"
+
+#~ msgid ""
+#~ "This dialog will reappear every time the passphrase is needed. For a more "
+#~ "secure solution that also allows caching the passphrase, use gpg-agent."
+#~ msgstr ""
+#~ "Бұл диалог паролі керек болған сайын шығарылады. Қауіпсіздікті арттыру "
+#~ "үшін gpg-agent дегенді қолданыңыз - оның паролін де жаттап алу мүмкіндігі "
+#~ "де бар."
+
+#~ msgid "gpg-agent was found in %1, but does not appear to be running."
+#~ msgstr "gpg-agent %1 дегенде табылды, бірақ жегілмеген сияқты."
+
+#~ msgid "gpg-agent is part of gnupg-%1, which you can download from %2"
+#~ msgstr ""
+#~ "gpg-agent деген gnupg-%1 бағдарламасының бөлшегі, оны %2 дегеннен жүктеп "
+#~ "алуға болады"
+
+#~ msgid "For information on how to set up gpg-agent, see %1"
+#~ msgstr "gpg-agent дегенді орнату туралы мәліметті %1 дегеннен қараңыз"
+
+#~ msgid "Enter passphrase:"
+#~ msgstr "Паролін келтіріңіз:"
+
+#~ msgid "Passphrase Dialog"
+#~ msgstr "Пароль диалогы"
+
+#~ msgid "Configure"
+#~ msgstr "Баптау"
+
+#~ msgid "Select Directory Services to Use Here"
+#~ msgstr "Колданатын каталог қызметтері"
+
+#~ msgid ""
+#~ "<qt>\n"
+#~ "<h1>X.500 Directory Services</h1>\n"
+#~ "You can use X.500 directory services to retrieve certificates and "
+#~ "certificate revocation lists that are not saved locally. Ask your local "
+#~ "administrator if you want to make use of this feature and are unsure "
+#~ "which directory service you can use.\n"
+#~ "<p>\n"
+#~ "If you do not use a directory service, you can still use local "
+#~ "certificates.\n"
+#~ "</qt>"
+#~ msgstr ""
+#~ "<qt>\n"
+#~ "<h1>X.500 каталог қызметтері</h1>\n"
+#~ "Жергілікті сақталмаған куәліктерді және олардың күші жойылғандарының "
+#~ "тізімдерін алу үшін X.500 каталог қызметтерін қолдануға болады. Осы "
+#~ "қызметтерді қалап, олардың қайсысын таңдауын білмесеңіз - жергілікті "
+#~ "әкімшісінен сұраңыз.\n"
+#~ "<p>\n"
+#~ "Каталог қызметісіз тек жергілікті сақталған куәліктерді пайдалануға да "
+#~ "болады.\n"
+#~ "</qt>"
+
+#~ msgid "Port"
+#~ msgstr "Порты"
+
+#~ msgid ""
+#~ "<qt>\n"
+#~ "<h1>Add a Directory Service</h1>\n"
+#~ "By clicking this button, you can select a new directory service to be "
+#~ "used for retrieving certificates and CRLs. You will be asked for the "
+#~ "server name and an optional description.\n"
+#~ "</qt>"
+#~ msgstr ""
+#~ "<qt>\n"
+#~ "<h1>Каталог қызметін қосу</h1>\n"
+#~ "Бұл батырмасын түртіп куәліктерді және олардың күші жойылғандарының "
+#~ "тізімдерін (CRL) алу үшін жаңа каталог қызметін таңдауға болады. "
+#~ "Сервердің атауы мен (міндетті емес) түсініктемесін келтіруі керек "
+#~ "болады.\n"
+#~ "</qt>"
+
+#~ msgid "&Add Service..."
+#~ msgstr "Қызметті қ&осу..."
+
+#~ msgid ""
+#~ "<qt>\n"
+#~ "<h1>Remove Directory Service</h1>\n"
+#~ "By clicking this button, you can remove the currently selected directory "
+#~ "service in the list above. You will have a chance to rethink your "
+#~ "decision before the entry is deleted from the list.\n"
+#~ "</qt>"
+#~ msgstr ""
+#~ "<qt>\n"
+#~ "<h1>Каталог қызметін өшіру</h1>\n"
+#~ "Бұл батырманы түртіп жоғардағы тізімінен таңдалған каталог қызметін "
+#~ "өшіруге болады. Өшіру алдында айнуға бір мүміндік беріледі.\n"
+#~ "</qt>"
+
+#~ msgid "&Remove Service"
+#~ msgstr "Қызметті ө&шіру"
+
+#~ msgid "<unnamed>"
+#~ msgstr "<аталмаған>"
+
+#~ msgid "<none>"
+#~ msgstr "<жоқ>"
+
+#~ msgid "<unknown>"
+#~ msgstr "<беймәлім>"
+
+#~ msgid "program not found"
+#~ msgstr "бағдарлама табылмады"
+
+#~ msgid "Kpgp/gpg"
+#~ msgstr "Kpgp/gpg"
+
+#~ msgid "Kpgp/pgp v2"
+#~ msgstr "Kpgp/pgp v2"
+
+#~ msgid "Kpgp/pgp v5"
+#~ msgstr "Kpgp/pgp v5"
+
+#~ msgid "Kpgp/pgp v6"
+#~ msgstr "Kpgp/pgp v6"
+
+#~ msgid "This backend does not support S/MIME"
+#~ msgstr "Бұл бағдарлама S/MIME-ді қолдамайды"
--- /dev/null
+# translation of libkleopatra.po to Khmer
+# Khoem Sokhem <khoemsokhem@khmeros.info>, 2008, 2010, 2012.
+msgid ""
+msgstr ""
+"Project-Id-Version: libkleopatra\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2017-07-12 06:56+0200\n"
+"PO-Revision-Date: 2012-07-09 10:59+0700\n"
+"Last-Translator: Khoem Sokhem <khoemsokhem@khmeros.info>\n"
+"Language-Team: Khmer <support@khmeros.info>\n"
+"Language: km\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: KBabel 1.11.4\n"
+"X-Language: km_KH\n"
+
+#: kleo/checksumdefinition.cpp:107
+#, kde-format
+msgid "Error in checksum definition %1: %2"
+msgstr "កំហុសក្នុងការកំណត់ឆេកសាំ %1 ៖ %2"
+
+#: kleo/checksumdefinition.cpp:157
+#, kde-format
+msgid "Cannot use both %f and | in '%1'"
+msgstr "មិនអាចប្រើទាំង %f និង | ក្នុង '%1'"
+
+#: kleo/checksumdefinition.cpp:167
+#, kde-format
+msgid "Quoting error in '%1' entry"
+msgstr "កំហុសក្នុងការស្រង់នៅក្នុងធាតុ '%1'"
+
+#: kleo/checksumdefinition.cpp:170
+#, kde-format
+msgid "'%1' too complex (would need shell)"
+msgstr "'%1' ស្មុគស្មាញពេក (ត្រូវការសែល)"
+
+#: kleo/checksumdefinition.cpp:174
+#, kde-format
+msgid "'%1' entry is empty/missing"
+msgstr "'%1' ធាតុ បាត់/សម្អាត"
+
+#: kleo/checksumdefinition.cpp:183
+#, kde-format
+msgid "'%1' empty or not found"
+msgstr "'%1' ធាតុ ឬរកមិនឃើញ"
+
+#: kleo/checksumdefinition.cpp:222
+#, kde-format
+msgid "'id' entry is empty/missing"
+msgstr "'id' ធាតុ បាត់/សម្អាត"
+
+#: kleo/checksumdefinition.cpp:225
+#, kde-format
+msgid "'output-file' entry is empty/missing"
+msgstr "ធាតុ 'output-file' គឺទទេ/បាត់"
+
+#: kleo/checksumdefinition.cpp:228
+#, kde-format
+msgid "'file-patterns' entry is empty/missing"
+msgstr "ធាតុ 'file-patterns' គឺទទេ/បាត់"
+
+#: kleo/checksumdefinition.cpp:395
+#, kde-format
+msgid "Caught unknown exception in group %1"
+msgstr "មិនស្គាល់ការចាប់យកលើកលែងតែនៅក្នុងក្រុម %1"
+
+#: kleo/dn.cpp:507
+#, kde-format
+msgid "Common name"
+msgstr "ឈ្មោះធម្មតា"
+
+#: kleo/dn.cpp:508
+#, kde-format
+msgid "Surname"
+msgstr "នាមត្រកូល"
+
+#: kleo/dn.cpp:509
+#, kde-format
+msgid "Given name"
+msgstr "នាមខ្លួន"
+
+#: kleo/dn.cpp:510
+#, kde-format
+msgid "Location"
+msgstr "ទីតាំង"
+
+#: kleo/dn.cpp:511
+#, kde-format
+msgid "Title"
+msgstr "ចំណងជើង"
+
+#: kleo/dn.cpp:512
+#, kde-format
+msgid "Organizational unit"
+msgstr "ផ្នែកនៃអង្គការ"
+
+#: kleo/dn.cpp:513
+#, kde-format
+msgid "Organization"
+msgstr "អង្គការ"
+
+#: kleo/dn.cpp:514
+#, kde-format
+msgid "Postal code"
+msgstr "កូដប្រៃសណីយ៍"
+
+#: kleo/dn.cpp:515
+#, kde-format
+msgid "Country code"
+msgstr "កូដប្រទេស"
+
+#: kleo/dn.cpp:516
+#, kde-format
+msgid "State or province"
+msgstr "រដ្ឋ ឬខេត្ត"
+
+#: kleo/dn.cpp:517
+#, kde-format
+msgid "Domain component"
+msgstr "សមាសភាគដែន"
+
+#: kleo/dn.cpp:518
+#, kde-format
+msgid "Business category"
+msgstr "ប្រភេទអាជីវកម្ម"
+
+#: kleo/dn.cpp:519
+#, kde-format
+msgid "Email address"
+msgstr "អាសយដ្ឋានអ៊ីមែល"
+
+#: kleo/dn.cpp:520
+#, kde-format
+msgid "Mail address"
+msgstr "អាសយដ្ឋានសំបុត្រ"
+
+#: kleo/dn.cpp:521
+#, kde-format
+msgid "Mobile phone number"
+msgstr "លេខទូរស័ព្ទចល័ត"
+
+#: kleo/dn.cpp:522
+#, kde-format
+msgid "Telephone number"
+msgstr "លេខទូរស័ព្ទ"
+
+#: kleo/dn.cpp:523
+#, kde-format
+msgid "Fax number"
+msgstr "លេខទូរសារ"
+
+#: kleo/dn.cpp:524
+#, kde-format
+msgid "Street address"
+msgstr "អាសយដ្ឋានផ្លូវ"
+
+#: kleo/dn.cpp:525
+#, kde-format
+msgid "Unique ID"
+msgstr "លេខសម្គាល់តែមួយ"
+
+#: kleo/enum.cpp:57
+#, kde-format
+msgid "Inline OpenPGP (deprecated)"
+msgstr "OpenPGP ក្នុងតួ (បានបង្កវិនាសកម្ម)"
+
+#: kleo/enum.cpp:62
+#, kde-format
+msgid "OpenPGP/MIME"
+msgstr "OpenPGP/MIME"
+
+#: kleo/enum.cpp:67 ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "S/MIME"
+msgstr "S/MIME"
+
+#: kleo/enum.cpp:72
+#, kde-format
+msgid "S/MIME Opaque"
+msgstr "S/MIME ស្រអាប់"
+
+#: kleo/enum.cpp:104
+#, kde-format
+msgid "Any"
+msgstr "ណាមួយ"
+
+#: kleo/enum.cpp:177
+#, kde-format
+msgid "Never Encrypt"
+msgstr "កុំអ៊ិនគ្រីប"
+
+#: kleo/enum.cpp:179
+#, kde-format
+msgid "Always Encrypt"
+msgstr "អ៊ិនគ្រីបជានិច្ច"
+
+#: kleo/enum.cpp:181
+#, kde-format
+msgid "Always Encrypt If Possible"
+msgstr "អ៊ិនគ្រីបជានិច្ច បើអាចធ្វើបាន"
+
+#: kleo/enum.cpp:183 kleo/enum.cpp:240
+#, kde-format
+msgid "Ask"
+msgstr "សួរ"
+
+#: kleo/enum.cpp:185 kleo/enum.cpp:242
+#, kde-format
+msgid "Ask Whenever Possible"
+msgstr "សួរនៅពេលណាដែលអាចធ្វើទៅបាន"
+
+#: kleo/enum.cpp:187
+#, kde-kuit-format
+msgctxt "no specific preference"
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>គ្មាន</placeholder>"
+
+#: kleo/enum.cpp:234
+#, kde-format
+msgid "Never Sign"
+msgstr "កុំចុះហត្ថលេខា"
+
+#: kleo/enum.cpp:236
+#, kde-format
+msgid "Always Sign"
+msgstr "ចុះហត្ថលេខាជានិច្ច"
+
+#: kleo/enum.cpp:238
+#, kde-format
+msgid "Always Sign If Possible"
+msgstr "ចុះហត្ថលេខាជានិច្ចបើអាចធ្វើបាន"
+
+#: kleo/enum.cpp:244
+#, kde-format
+msgctxt "no specific preference"
+msgid "<none>"
+msgstr "<គ្មាន>"
+
+#: kleo/keyfiltermanager.cpp:85
+#, kde-format
+msgid "All Certificates"
+msgstr "វិញ្ញាបនបត្រទាំងអស់"
+
+#: kleo/keyfiltermanager.cpp:100
+#, kde-format
+msgid "My Certificates"
+msgstr "វិញ្ញាបនបត្ររបស់ខ្ញុំ"
+
+#: kleo/keyfiltermanager.cpp:118
+#, kde-format
+msgid "Trusted Certificates"
+msgstr "វិញ្ញាបនបត្រដែលទុកចិត្ត"
+
+#: kleo/keyfiltermanager.cpp:135
+#, fuzzy, kde-format
+#| msgid "Trusted Certificates"
+msgid "Fully Trusted Certificates"
+msgstr "វិញ្ញាបនបត្រដែលទុកចិត្ត"
+
+#: kleo/keyfiltermanager.cpp:152
+#, kde-format
+msgid "Other Certificates"
+msgstr "វិញ្ញាបនបត្រផ្សេងៗ"
+
+#: kleo/keyfiltermanager.cpp:166
+#, fuzzy, kde-format
+#| msgid "All Certificates"
+msgid "VS-compliant Certificates"
+msgstr "វិញ្ញាបនបត្រទាំងអស់"
+
+#: kleo/keyfiltermanager.cpp:184
+#, fuzzy, kde-format
+#| msgid "Trusted Certificates"
+msgid "Not validated Certificates"
+msgstr "វិញ្ញាបនបត្រដែលទុកចិត្ត"
+
+#: ui/auditlogviewer.cpp:49
+#, kde-format
+msgid "View GnuPG Audit Log"
+msgstr "មើលកំណត់ហេតុត្រួតពិនិត្យ GnuPG"
+
+#: ui/auditlogviewer.cpp:53
+#, kde-format
+msgid "&Copy to Clipboard"
+msgstr "ចម្លងទៅក្ដារតម្បៀតខ្ទាស់"
+
+#: ui/auditlogviewer.cpp:59
+#, kde-format
+msgid "&Save to Disk..."
+msgstr "រក្សាទុកទៅថាស..."
+
+#: ui/auditlogviewer.cpp:95
+#, kde-format
+msgid "Choose File to Save GnuPG Audit Log to"
+msgstr "ជ្រើសឯកសារត្រូវរក្សាទុកកំណត់ហេតុ GnuPG Audit"
+
+#: ui/auditlogviewer.cpp:118
+#, kde-format
+msgid "Could not save to file \"%1\": %2"
+msgstr "មិនអាចរក្សាទុកឯកសារទៅកាន់ឯកសារ \"%1\" ៖ %2"
+
+#: ui/auditlogviewer.cpp:120
+#, kde-format
+msgid "File Save Error"
+msgstr "កំហុសក្នុងការរក្សាទុកឯកសារ"
+
+#: ui/cryptoconfigdialog.cpp:44
+#, kde-format
+msgid "Configure GnuPG Backend"
+msgstr "កំណត់រចនាសម្ព័ន្ធផ្នែកខាងក្រោយរបស់ GnuPG"
+
+#: ui/cryptoconfigdialog.cpp:55
+#, kde-format
+msgid "&Reset"
+msgstr "កំណត់ឡើងវិញ"
+
+#: ui/cryptoconfigmodule.cpp:160
+#, kde-format
+msgid "GpgConf Error"
+msgstr "កំហុស GpgConf"
+
+#: ui/cryptoconfigmodule.cpp:216
+#, kde-format
+msgid ""
+"The gpgconf tool used to provide the information for this dialog does not "
+"seem to be installed properly. It did not return any components. Try running "
+"\"%1\" on the command line for more information."
+msgstr ""
+"ឧបករណ៍ gpgconf ត្រូវបានប្រើដើម្បីផ្ដល់ព័ត៌មានដល់ប្រអប់នេះ ដែលមិនទំនងជាបានដំឡើងត្រឹមត្រូវឡើយ ។ វា"
+"មិនត្រឡប់សមាសភាគណាមួយទេ ។ ចំពោះព័ត៌មានបន្ថែម ព្យាយាមដំណើរការ \"%1\" នៅលើបន្ទាត់ពាក្យបញ្ជា ។"
+
+#: ui/cryptoconfigmodule.cpp:496
+#, kde-format
+msgctxt ""
+"Translate this to 'yes' or 'no' (use the English words!) depending on "
+"whether your language uses Sentence style capitalisation in GUI labels (yes) "
+"or not (no). Context: We get some backend strings in that have the wrong "
+"capitalizaion (in English, at least) so we need to force the first character "
+"to upper-case. It is this behaviour you can control for your language with "
+"this translation."
+msgid "yes"
+msgstr "no"
+
+#: ui/cryptoconfigmodule.cpp:546
+#, kde-format
+msgid "0 - None"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:547
+#, kde-format
+msgid "1 - Basic"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:548
+#, kde-format
+msgid "2 - Verbose"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:549
+#, kde-format
+msgid "3 - More Verbose"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:550
+#, kde-format
+msgid "4 - All"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:559
+#, kde-format
+msgid "Set the debugging level to"
+msgstr "កំណត់កម្រិតបំបាត់កំហុសទៅ"
+
+#: ui/cryptoconfigmodule.cpp:787
+#, kde-format
+msgid "Show..."
+msgstr "បង្ហាញ..."
+
+#: ui/cryptoconfigmodule.cpp:787 ui/cryptoconfigmodule.cpp:876
+#, kde-format
+msgid "Edit..."
+msgstr "កែសម្រួល..."
+
+#: ui/cryptoconfigmodule.cpp:841
+#, kde-format
+msgid "Configure LDAP Servers"
+msgstr "កំណត់រចនាសម្ព័ន្ធម៉ាស៊ីនបម្រើ LDAP"
+
+#: ui/cryptoconfigmodule.cpp:862
+#, fuzzy, kde-format
+#| msgid "No server configured yet"
+msgid "None configured"
+msgstr "គ្មានម៉ាស៊ីនបម្រើដែលបានកំណត់រចនាសម្ព័ន្ធនៅឡើយទេ"
+
+#: ui/cryptoconfigmodule.cpp:864
+#, kde-format
+msgid "1 server configured"
+msgid_plural "%1 servers configured"
+msgstr[0] "បានកំណត់រចនាសម្ព័ន្ធម៉ាស៊ីនបម្រើ %1"
+
+#: ui/cryptoconfigmodule.cpp:879
+#, kde-format
+msgid "Use keyserver at"
+msgstr "ប្រើម៉ាស៊ីនបម្រើសោនៅ"
+
+#: ui/cryptoconfigmodule.cpp:968
+#, kde-format
+msgid "Configure Keyservers"
+msgstr "កំណត់រចនាសម្ព័ន្ធ Keyservers"
+
+#: ui/directoryserviceswidget.cpp:67
+#, kde-format
+msgctxt "default server name, keep it a valid domain name, ie. no spaces"
+msgid "server"
+msgstr "ម៉ាស៊ីនបម្រើ"
+
+#: ui/directoryserviceswidget.cpp:95
+#, kde-format
+msgid "hkp"
+msgstr "hkp"
+
+#: ui/directoryserviceswidget.cpp:96
+#, kde-format
+msgid "http"
+msgstr "http"
+
+#: ui/directoryserviceswidget.cpp:97
+#, kde-format
+msgid "https"
+msgstr "https"
+
+#: ui/directoryserviceswidget.cpp:98
+#, kde-format
+msgid "ftp"
+msgstr "ftp"
+
+#: ui/directoryserviceswidget.cpp:99
+#, kde-format
+msgid "ftps"
+msgstr "ftps"
+
+#: ui/directoryserviceswidget.cpp:100
+#, kde-format
+msgid "ldap"
+msgstr "ldap"
+
+#: ui/directoryserviceswidget.cpp:101
+#, kde-format
+msgid "ldaps"
+msgstr "ldaps"
+
+#: ui/directoryserviceswidget.cpp:588
+#, kde-format
+msgid "Server Name"
+msgstr "ឈ្មោះម៉ាស៊ីនបម្រើ"
+
+#: ui/directoryserviceswidget.cpp:589
+#, kde-format
+msgid "Server Port"
+msgstr "ច្រកម៉ាស៊ីនបម្រើ"
+
+#: ui/directoryserviceswidget.cpp:590
+#, kde-format
+msgid "Base DN"
+msgstr "គោល DN"
+
+#: ui/directoryserviceswidget.cpp:591
+#, kde-format
+msgid "User Name"
+msgstr "ឈ្មោះអ្នកប្រើ"
+
+#: ui/directoryserviceswidget.cpp:592
+#, kde-format
+msgid "Password"
+msgstr "ពាក្យសម្ងាត់"
+
+#: ui/directoryserviceswidget.cpp:614
+#, kde-format
+msgid "(read-only)"
+msgstr "(បានតែអាន)"
+
+#: ui/directoryserviceswidget.cpp:616
+#, kde-format
+msgctxt "amended tooltip; %1: original tooltip"
+msgid "%1 (read-only)"
+msgstr "%1 (បានតែអាន)"
+
+#: ui/directoryserviceswidget.cpp:739
+#, kde-format
+msgid ""
+"Enter the name or IP address of the server hosting the directory service."
+msgstr "បញ្ចូលឈ្មោះ ឬអាសយដ្ឋាន IP របស់ម៉ាស៊ីនបម្រើដែលបង្ហោះសេវាថត ។"
+
+#: ui/directoryserviceswidget.cpp:741
+#, kde-format
+msgid ""
+"<b>(Optional, the default is fine in most cases)</b> Pick the port number "
+"the directory service is listening on."
+msgstr ""
+"<b>(ស្រេចចិត្ត លំនាំដើមគឺត្រឹមត្រូវសម្រាប់ករណីភាគច្រើន)</b> រើសលេខច្រក ដែលសេវាថតស្ដាប់ ។"
+
+#: ui/directoryserviceswidget.cpp:744
+#, kde-format
+msgid ""
+"<b>(Only for LDAP)</b> Enter the base DN for this LDAP server to limit "
+"searches to only that subtree of the directory."
+msgstr ""
+"<b>(សម្រាប់តែ LDAP)</b> បញ្ចូលឈ្មោះដែនមូលដ្ឋានសម្រាប់ម៉ាស៊ីនបម្រើ LDAP នេះដើម្បីកំណត់ការស្វែងរក"
+"មែកធាងថត ។"
+
+#: ui/directoryserviceswidget.cpp:747
+#, kde-format
+msgid "<b>(Optional)</b> Enter your user name here, if needed."
+msgstr "<b>(ស្រេចចិត្ត)</b> បញ្ចូលឈ្មោះអ្នកប្រើរបស់អ្នក ប្រសិនបើត្រូវការ ។"
+
+#: ui/directoryserviceswidget.cpp:749
+#, kde-format
+msgid ""
+"<b>(Optional, not recommended)</b> Enter your password here, if needed. Note "
+"that the password will be saved in the clear in a config file in your home "
+"directory."
+msgstr ""
+"<b>(ស្រេចចិត្ត មិនត្រូវបានផ្ដល់អានុសាសន៍ទេ)</b> បញ្ចូលពាក្យសម្ងាត់នៅទីនេះ ប្រសិនបើត្រូវការ ។ "
+"ចំណាំថា ពាក្យសម្ងាត់នឹងត្រូវបានរក្សាទុកនៅក្នុងឯកសារកំណត់រចនាសម្ព័ន្ធនៅក្នុងថតផ្ទះរបស់អ្នក ។"
+
+#. i18n: ectx: property (windowTitle), widget (QWidget, DirectoryServicesWidget)
+#: ui/directoryserviceswidget.ui:14
+#, kde-format
+msgid "Directory Services Configuration"
+msgstr "ការកំណត់រចនាសម្ព័ន្ធសេវាថត"
+
+#. i18n: ectx: property (text), widget (QLabel, pgpKSLabel)
+#: ui/directoryserviceswidget.ui:22
+#, fuzzy, kde-format
+#| msgid "OpenPGP Key Selection"
+msgid "OpenPGP Keyserver:"
+msgstr "ជម្រើសកូនសោ OpenPGP"
+
+#. i18n: ectx: property (title), widget (QGroupBox, x500LA)
+#: ui/directoryserviceswidget.ui:35
+#, fuzzy, kde-format
+#| msgid "Directory services:"
+msgid "X509 Directory services:"
+msgstr "សេវាថត ៖"
+
+#. i18n: ectx: property (whatsThis), widget (QTreeView, treeView)
+#: ui/directoryserviceswidget.ui:43
+#, fuzzy, kde-format
+#| msgid ""
+#| "This is a list of all directory services that are configured for use with "
+#| "X.509 and OpenPGP."
+msgid ""
+"This is a list of all directory services that are configured for use with "
+"X.509."
+msgstr ""
+"នេះជាបញ្ជីសេវាថតទាំងអស់ដែលត្រូវបានកំណត់រចនាសម្ព័ន្ធសម្រាប់ការប្រើប្រាស់ជាមួយ X.509 និង OpenPGP "
+"។"
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:70
+#, kde-format
+msgid "Click to add a service"
+msgstr "ចុចដើម្បីបន្ថែមសេវា"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:73
+#, kde-format
+msgid ""
+"Click this button to create a new directory service entry as a clone of the "
+"currently selected one (or with default values, if no other is selected). "
+"You can then configure details in the table on the left hand."
+msgstr ""
+"ចុចប៊ូតុងនេះ ដើម្បីបង្កើតធាតុសេវាថតថ្មីជាក្លូននៃធាតុមួយដែលបានជ្រើសបច្ចុប្បន្ន (ឬមានតម្លៃលំនាំដើម "
+"ប្រសិនបើមិនបានជ្រើសធាតុផ្សេងទៀត). បន្ទាប់មកអ្នកអាចកំណត់រចនាសម្ព័ន្ធសេចក្ដីលម្អិតនៅក្នុងតារាងនៅខាង"
+"ឆ្វេងដៃ ។"
+
+#. i18n: ectx: property (text), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:76
+#, kde-format
+msgid "New"
+msgstr "ថ្មី"
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:92
+#, kde-format
+msgid "Click to remove the currently selected service"
+msgstr "ចុចដើម្បីយកសេវាដែលបានជ្រើសបច្ចុប្បន្នចេញ"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:95
+#, kde-format
+msgid ""
+"Click this button to remove the currently selected directory service. The "
+"change will only take effect once you acknowledge the main configuration "
+"dialog."
+msgstr ""
+"ចុចប៊ូតុងនេះ ដើម្បីយកសេវាថតដែលបានជ្រើសបច្ចុប្បន្នចេញ ។ ការផ្លាស់ប្ដូរ នឹងមានប្រសិទ្ធិភាព នៅពេលដែល"
+"អ្នកទទួលបានប្រអប់កំណត់រចនាសម្ព័ន្ធចម្បង ។"
+
+#. i18n: ectx: property (text), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:98
+#, kde-format
+msgid "Delete"
+msgstr "លុប"
+
+#. i18n: ectx: property (whatsThis), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:128
+#, kde-format
+msgid ""
+"Use this option to switch display of username and password information on or "
+"off in the above table."
+msgstr "ប្រើជម្រើសនេះដើម្បីបិទ/បើកបង្ហាញព័ត៌មានឈ្មោះអ្នកប្រើ និងពាក្យសម្ងាត់នៅក្នុងតារាងខាងលើ ។"
+
+#. i18n: ectx: property (text), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:131
+#, kde-format
+msgid "Show user and password information"
+msgstr "បង្ហាញព័ត៌មានអ្នកប្រើ និងពាក្យសម្ងាត់"
+
+#: ui/dnattributeorderconfigwidget.cpp:73
+#, kde-format
+msgid "Description"
+msgstr "សេចក្ដីពិពណ៌នា"
+
+#: ui/dnattributeorderconfigwidget.cpp:91
+#, kde-format
+msgid "Available attributes:"
+msgstr "គុណលក្ខណៈដែលមាន ៖"
+
+#: ui/dnattributeorderconfigwidget.cpp:92
+#, kde-format
+msgid "Current attribute order:"
+msgstr "លំដាប់គុណលក្ខណៈបច្ចុប្បន្ន ៖"
+
+#: ui/dnattributeorderconfigwidget.cpp:112
+#, kde-format
+msgid "All others"
+msgstr "ផ្សេងទៀតទាំងអស់"
+
+#: ui/dnattributeorderconfigwidget.cpp:129
+#, kde-format
+msgid "Move to top"
+msgstr "ផ្លាស់ទីទៅកំពូល"
+
+#: ui/dnattributeorderconfigwidget.cpp:130
+#, kde-format
+msgid "Move one up"
+msgstr "ផ្លាស់ទីទៅលើមួយ"
+
+#: ui/dnattributeorderconfigwidget.cpp:131
+#, kde-format
+msgid "Remove from current attribute order"
+msgstr "យកចេញពីលំដាប់គុណលក្ខណៈបច្ចុប្បន្ន"
+
+#: ui/dnattributeorderconfigwidget.cpp:132
+#, kde-format
+msgid "Add to current attribute order"
+msgstr "បន្ថែមទៅលំដាប់គុណលក្ខណៈបច្ចុប្បន្ន"
+
+#: ui/dnattributeorderconfigwidget.cpp:133
+#, kde-format
+msgid "Move one down"
+msgstr "ផ្លាស់ទីចុះក្រោមមួយ"
+
+#: ui/dnattributeorderconfigwidget.cpp:134
+#, kde-format
+msgid "Move to bottom"
+msgstr "ផ្លាស់ទីទៅបាត"
+
+#: ui/keyapprovaldialog.cpp:87
+#, kde-kuit-format
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>គ្មាន</placeholder>"
+
+#: ui/keyapprovaldialog.cpp:88
+#, kde-format
+msgid "Never Encrypt with This Key"
+msgstr "កុំអ៊ិនគ្រីបជាមួយសោនេះ"
+
+#: ui/keyapprovaldialog.cpp:89
+#, kde-format
+msgid "Always Encrypt with This Key"
+msgstr "អ៊ិនគ្រីបជាមួយសោនេះជានិច្ច"
+
+#: ui/keyapprovaldialog.cpp:90
+#, kde-format
+msgid "Encrypt Whenever Encryption is Possible"
+msgstr "អ៊ិនគ្រីបនៅពេលណាដែលអាចអ៊ិនគ្រីបបាន"
+
+#: ui/keyapprovaldialog.cpp:91
+#, kde-format
+msgid "Always Ask"
+msgstr "សួរជានិច្ច"
+
+#: ui/keyapprovaldialog.cpp:92
+#, kde-format
+msgid "Ask Whenever Encryption is Possible"
+msgstr "សួរនៅពេលណាដែលអាចអ៊ិនគ្រីបបាន"
+
+#: ui/keyapprovaldialog.cpp:113
+#, kde-format
+msgid "Encryption Key Approval"
+msgstr "ការអនុញ្ញាតកូនសោអ៊ិនគ្រីប"
+
+#: ui/keyapprovaldialog.cpp:129
+#, kde-format
+msgid "The following keys will be used for encryption:"
+msgstr "កូនសោដូចខាងក្រោមនឹងត្រូវបានប្រើសម្រាប់អ៊ិនគ្រីប ៖"
+
+#: ui/keyapprovaldialog.cpp:145
+#, kde-format
+msgid "Your keys:"
+msgstr "សោរបស់អ្នក ៖"
+
+#: ui/keyapprovaldialog.cpp:157
+#, kde-format
+msgid "Recipient:"
+msgstr "អ្នកទទួល ៖"
+
+#: ui/keyapprovaldialog.cpp:162
+#, kde-format
+msgid "Encryption keys:"
+msgstr "សោអ៊ិនគ្រីប ៖"
+
+#: ui/keyapprovaldialog.cpp:169
+#, kde-format
+msgid "Encryption preference:"
+msgstr "ចំណង់ចំណូលចិត្តអ៊ិនគ្រីប ៖"
+
+#: ui/keyrequester.cpp:118
+#, kde-format
+msgid "Clear"
+msgstr "ជម្រះ"
+
+#: ui/keyrequester.cpp:121
+#, kde-format
+msgid "Change..."
+msgstr "ផ្លាស់ប្ដូរ..."
+
+#: ui/keyrequester.cpp:232 ui/keyselectiondialog.cpp:256
+#, kde-kuit-format
+msgid "<placeholder>unknown</placeholder>"
+msgstr "<placeholder>មិនស្គាល់</placeholder>"
+
+#: ui/keyrequester.cpp:246 ui/keyselectiondialog.cpp:657
+#, kde-format
+msgid ""
+"<qt><p>An error occurred while fetching the keys from the backend:</p><p><b>"
+"%1</b></p></qt>"
+msgstr ""
+"<qt><p>កំហុសមួយបានកើតឡើងនៅពេលទៅយកសោពីកម្មវិធីខាងក្រោយ ៖</p><p><b>%1</b></p></qt>"
+
+#: ui/keyrequester.cpp:251 ui/keyrequester.cpp:283 ui/keyrequester.cpp:306
+#: ui/keyselectiondialog.cpp:630 ui/keyselectiondialog.cpp:662
+#, kde-format
+msgid "Key Listing Failed"
+msgstr "ការរាយកូនសោបានបរាជ័យ"
+
+#: ui/keyrequester.cpp:281
+#, kde-format
+msgid ""
+"The OpenPGP backend does not support listing keys. Check your installation."
+msgstr "កមវិធីខាងក្រោយ OpenPGP មិនគាំទ្រការរាយកូនសោទេ ។ ពិនិត្យការដំឡើងរបស់អ្នក ។"
+
+#: ui/keyrequester.cpp:304
+#, kde-format
+msgid ""
+"The S/MIME backend does not support listing keys. Check your installation."
+msgstr "កម្មវិធីខាងក្រោយ S/MIME មិនគាំទ្រការរាយកូនសោ ។ ពិនិត្យការដំឡើងរបស់អ្នក ។"
+
+#: ui/keyrequester.cpp:426
+#, kde-format
+msgid "OpenPGP Key Selection"
+msgstr "ជម្រើសកូនសោ OpenPGP"
+
+#: ui/keyrequester.cpp:427
+#, kde-format
+msgid "Please select an OpenPGP key to use."
+msgstr "សូមជ្រើសកូនសោ OpenPGP ដើម្បីប្រើប្រាស់ ។"
+
+#: ui/keyrequester.cpp:429
+#, kde-format
+msgid "S/MIME Key Selection"
+msgstr "ជម្រើសកូនសោ S/MIME"
+
+#: ui/keyrequester.cpp:430
+#, kde-format
+msgid "Please select an S/MIME key to use."
+msgstr "សូមជ្រើសកូនសោ S/MIME ដើម្បីប្រើប្រាស់ ។"
+
+#: ui/keyrequester.cpp:432
+#, kde-format
+msgid "Key Selection"
+msgstr "ជម្រើសកូនសោ"
+
+#: ui/keyrequester.cpp:433
+#, kde-format
+msgid "Please select an (OpenPGP or S/MIME) key to use."
+msgstr "សូមជ្រើសកូនសោ (OpenPGP ឬ S/MIME) ដើម្បីប្រើប្រាស់ ។"
+
+#: ui/keyselectioncombo.cpp:195
+#, kde-format
+msgctxt "Name <email> (validity, type, created: date)"
+msgid "%1 (%2, %3, created: %4)"
+msgstr ""
+
+#: ui/keyselectioncombo.cpp:196
+#, kde-format
+msgctxt "Name <email>"
+msgid "%1 <%2>"
+msgstr ""
+
+#: ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "OpenPGP"
+msgstr "OpenPGP"
+
+#: ui/keyselectioncombo.cpp:347
+#, fuzzy, kde-format
+#| msgid "Fetching keys..."
+msgid "Loading keys ..."
+msgstr "កំពុងទៅយកសោ..."
+
+#: ui/keyselectiondialog.cpp:98
+#, kde-format
+msgid "The key is not valid."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:106
+#, kde-format
+msgid "The key is expired."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:110
+#, kde-format
+msgid "The key is revoked."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:114
+#, kde-format
+msgid "The key is disabled."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:122
+#, fuzzy, kde-format
+#| msgid "The following keys will be used for encryption:"
+msgid "The key is not designated for encryption."
+msgstr "កូនសោដូចខាងក្រោមនឹងត្រូវបានប្រើសម្រាប់អ៊ិនគ្រីប ៖"
+
+#: ui/keyselectiondialog.cpp:128
+#, kde-format
+msgid "The key is not designated for signing."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:134
+#, kde-format
+msgid "The key is not designated for certifying."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:140
+#, kde-format
+msgid "The key is not designated for authentication."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:148
+#, kde-format
+msgid "The key is not secret."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:163
+#, kde-format
+msgid "The key is not trusted enough."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:169
+#, kde-format
+msgid "The key can be used."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:230
+#, kde-format
+msgid "Key ID"
+msgstr "លេខសម្គាល់កូនសោ"
+
+#: ui/keyselectiondialog.cpp:231
+#, kde-format
+msgid "User ID"
+msgstr "លេខសម្គាល់អ្នកប្រើ"
+
+#: ui/keyselectiondialog.cpp:279
+#, kde-format
+msgid "never"
+msgstr "កុំ"
+
+#: ui/keyselectiondialog.cpp:289 ui/keyselectiondialog.cpp:291
+#: ui/keyselectiondialog.cpp:300 ui/keyselectiondialog.cpp:302
+#, kde-format
+msgid "unknown"
+msgstr "មិនស្គាល់"
+
+#: ui/keyselectiondialog.cpp:289
+#, kde-format
+msgid "OpenPGP key for <b>%1</b>"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:291
+#, kde-format
+msgid "S/MIME key for <b>%1</b>"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:298
+#, kde-format
+msgctxt "Key creation date"
+msgid "Created"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:299
+#, kde-format
+msgctxt "Key Expiration date"
+msgid "Expiry"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:300
+#, kde-format
+msgctxt "Key fingerprint"
+msgid "Fingerprint"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:302
+#, kde-format
+msgctxt "Key issuer"
+msgid "Issuer"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:304
+#, kde-format
+msgctxt "Key status"
+msgid "Status"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:456
+#, kde-format
+msgid "Search for &External Certificates"
+msgstr "ស្វែងរកវិញ្ញាបនបត្រខាងក្រៅ"
+
+#: ui/keyselectiondialog.cpp:470
+#, kde-format
+msgid "&Search for:"
+msgstr "ស្វែងរក ៖"
+
+#: ui/keyselectiondialog.cpp:494
+#, kde-format
+msgid "&Remember choice"
+msgstr "ចងចាំជម្រើស"
+
+#: ui/keyselectiondialog.cpp:497
+#, kde-format
+msgid ""
+"<qt><p>If you check this box your choice will be stored and you will not be "
+"asked again.</p></qt>"
+msgstr ""
+"<qt><p>ប្រសិនបើអ្នកធីកប្រអប់នេះ ជម្រើសរបស់អ្នកនឹងត្រូវបានរក្សាទុក ហើយអ្នកនឹងមិនត្រូវបានសួរម្ដងទៀត"
+"ឡើយ ។</p></qt>"
+
+#: ui/keyselectiondialog.cpp:509
+#, kde-format
+msgid "&Reread Keys"
+msgstr "អានកូនសោឡើងវិញ"
+
+#: ui/keyselectiondialog.cpp:510
+#, kde-format
+msgid "&Start Certificate Manager"
+msgstr "ចាប់ផ្ដើមកម្មវិធីគ្រប់គ្រងវិញ្ញាបនបត្រ"
+
+#: ui/keyselectiondialog.cpp:628
+#, kde-format
+msgid "No backends found for listing keys. Check your installation."
+msgstr "រកមិនមានកម្មវិធីខាងក្រោយសម្រាប់ការរាយកូនសោទេ ។ ពិនិត្យការដំឡើងរបស់អ្នក ។"
+
+#: ui/keyselectiondialog.cpp:644
+#, kde-format
+msgid "Could not start certificate manager; please check your installation."
+msgstr "មិនអាចចាប់ផ្ដើមអ្នកគ្រប់គ្រងវិញ្ញាបនបត្របានឡើយ ។ សូមពិនិត្យមើលការដំឡើងរបស់អ្នក ។"
+
+#: ui/keyselectiondialog.cpp:646
+#, kde-format
+msgid "Certificate Manager Error"
+msgstr "កំហុសកម្មវិធីគ្រប់គ្រងវិញ្ញាបនបត្រ"
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Checking selected keys..."
+msgstr "កំពុងពិនិត្យកូនសោដែលបានជ្រើស..."
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Fetching keys..."
+msgstr "កំពុងទៅយកសោ..."
+
+#: ui/keyselectiondialog.cpp:731
+#, kde-format
+msgid ""
+"<qt>One backend returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgid_plural ""
+"<qt>%1 backends returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgstr[0] ""
+"<qt>កម្មវិធីខាងក្រោយ %1 បានត្រឡប់លទ្ធផលដែលបានកាត់ឲ្យខ្លី ។<p>គ្មានសោដែលមានត្រូវបានបង្ហាញ</"
+"p></qt>"
+
+#: ui/keyselectiondialog.cpp:736
+#, kde-format
+msgid "Key List Result"
+msgstr "លទ្ធផលនៃបញ្ជីកូនសោ"
+
+#: ui/keyselectiondialog.cpp:856
+#, kde-format
+msgid "Recheck Key"
+msgstr "ពិនិត្យកូនសោឡើងវិញ"
+
+#: ui/messagebox.cpp:71
+#, kde-format
+msgid "Your system does not have support for GnuPG Audit Logs"
+msgstr "ប្រព័ន្ធរបស់អ្នកមិនមានការគាំទ្រសម្រាប់កំណត់ហេតុ GnuPG Audit"
+
+#: ui/messagebox.cpp:72
+#, kde-format
+msgid "System Error"
+msgstr "កំហុសប្រព័ន្ធ"
+
+#: ui/messagebox.cpp:79
+#, kde-format
+msgid ""
+"An error occurred while trying to retrieve the GnuPG Audit Log:\n"
+"%1"
+msgstr ""
+"មានកំហុស បានកើតឡើងនៅពេលទៅប្រមូលយកកំណត់ហេតុត្រួតពិនិត្យ GnuPG ៖\n"
+"%1"
+
+#: ui/messagebox.cpp:81
+#, kde-format
+msgid "GnuPG Audit Log Error"
+msgstr "កំហុសកំណត់ហេតុត្រួតពិនិត្យ GnuPG"
+
+#: ui/messagebox.cpp:88
+#, kde-format
+msgid "No GnuPG Audit Log available for this operation."
+msgstr "មិនមានកំណត់ហេតុ GnuPG Audit សម្រាប់ប្រតិបត្តិការនេះ ។"
+
+#: ui/messagebox.cpp:89
+#, kde-format
+msgid "No GnuPG Audit Log"
+msgstr "គ្មានកំណត់ហេតុ GnuPG Audit"
+
+#: ui/messagebox.cpp:109 ui/messagebox.cpp:115
+#, kde-format
+msgid "GnuPG Audit Log Viewer"
+msgstr "កម្មវិធីមើលកំណត់ហេតុ GnuPG Audit"
+
+#: ui/messagebox.cpp:121
+#, kde-format
+msgid "Signing failed: %1"
+msgstr "ការចុះហត្ថលេខាបានបរាជ័យ ៖ %1"
+
+#: ui/messagebox.cpp:122
+#, kde-format
+msgid "Signing successful"
+msgstr "ចុះហត្ថលេខាដោយជោគជ័យ"
+
+#: ui/messagebox.cpp:133
+#, kde-format
+msgid "Encryption failed: %1"
+msgstr "ការអ៊ិនគ្រីបបានបរាជ័យ ៖ %1"
+
+#: ui/messagebox.cpp:134
+#, kde-format
+msgid "Encryption successful"
+msgstr "អ៊ិគ្រីបដោយជោគជ័យ"
+
+#: ui/messagebox.cpp:155
+#, kde-format
+msgid "Signing Result"
+msgstr "ចុះហត្ថលេខាលទ្ធផល"
+
+#: ui/messagebox.cpp:167
+#, kde-format
+msgid "Signing Error"
+msgstr "កំហុសក្នុងការចុះហត្ថលេខា"
+
+#: ui/messagebox.cpp:179 ui/messagebox.cpp:203
+#, kde-format
+msgid "Encryption Result"
+msgstr "លទ្ធផលអ៊ិនគ្រីប"
+
+#: ui/messagebox.cpp:191 ui/messagebox.cpp:215
+#, kde-format
+msgid "Encryption Error"
+msgstr "កំហុសអ៊ិនគ្រីប"
+
+#: ui/messagebox.cpp:263
+#, kde-format
+msgid "&Show Audit Log"
+msgstr "បង្ហាញកំណត់ហេតុត្រួតពិនិត្យ"
+
+#: ui/progressdialog.cpp:91
+#, kde-format
+msgid "%1: %2"
+msgstr "%1 ៖ %2"
+
+#~ msgctxt "New X.509 Directory Server"
+#~ msgid "X.509"
+#~ msgstr "X.509"
+
+#~ msgctxt "New OpenPGP Directory Server"
+#~ msgid "OpenPGP"
+#~ msgstr "OpenPGP"
+
+#~ msgid "Scheme"
+#~ msgstr "គ្រោងការណ៍"
+
+#~ msgid "X.509"
+#~ msgstr "X.509"
+
+#, fuzzy
+#~| msgid ""
+#~| "Select the access protocol (scheme) that the directory service is "
+#~| "available through."
+#~ msgid ""
+#~ "Select the access scheme (scheme) that the directory service is available "
+#~ "through."
+#~ msgstr "ជ្រើសពិធីការចូលដំណើរការ (គ្រោងការណ៍) ដែលសេវាថតមានសម្រាប់វា ។"
+
+#~ msgid ""
+#~ "Check this column if this directory service is providing S/MIME (X.509) "
+#~ "certificates."
+#~ msgstr "ពិនិត្យជួរឈរនេះ ថាតើសេវាថតនេះផ្ដល់វិញ្ញាបនបត្រ S/MIME (X.509) ឬអត់ ។"
+
+#~ msgid ""
+#~ "Check this column if this directory service is providing OpenPGP "
+#~ "certificates."
+#~ msgstr "ពិនិត្យមើលជួរឈរនេះ ថាតើសេវាថតផ្ដល់វិញ្ញាបនបត្រ OpenPGP ឬអត់ ។"
+
+#~ msgid "0 - None (no debugging at all)"
+#~ msgstr "០ - គ្មាន (គ្មានការបំបាត់កំហុសទាល់តែសោះ)"
+
+#~ msgid "1 - Basic (some basic debug messages)"
+#~ msgstr "១ - មូលដ្ឋាន (សារបំបាត់កំហុសមូលដ្ឋានមួយចំនួន)"
+
+#~ msgid "2 - Advanced (more verbose debug messages)"
+#~ msgstr "២ - កម្រិតខ្ពស់ (សារបំបាត់កំហុសដែលមានការបរិយាយច្រើន)"
+
+#~ msgid "3 - Expert (even more detailed messages)"
+#~ msgstr "៣ - ជំនាញ (សារដែលមានសេចក្ដីលម្អិត)"
+
+#~ msgid "4 - Guru (all of the debug messages you can get)"
+#~ msgstr "៤ - Guru (សារបំបាត់កំហុសទាំងអស់ដែលអ្នកអាចយកបាន)"
+
+#~ msgid "General"
+#~ msgstr "ទូទៅ"
+
+#~ msgid "Chiasmus"
+#~ msgstr "Chiasmus"
+
+#~ msgid "Chiasmus command line tool"
+#~ msgstr "ឧបករណ៍បន្ទាត់ពាក្យបញ្ជា Chiasmus"
+
+#~ msgid "Unsupported protocol \"%1\""
+#~ msgstr "ពិធីការ \"%1\" ដែលមិនបានគាំទ្រ"
+
+#~ msgid "File \"%1\" does not exist or is not executable."
+#~ msgstr "មិនមានឯកសារ \"%1\" ឬមិនអាចប្រតិបត្តិវាបាន ។"
+
+#~ msgid "Output from chiasmus"
+#~ msgstr "លទ្ធផលពី chiasmus"
+
+#~ msgid "Decryption failed: %1"
+#~ msgstr "ការឌិគ្រីបបានបរាជ័យ ៖ %1"
+
+#~ msgid ""
+#~ "The following was received on stderr:\n"
+#~ "%1"
+#~ msgstr ""
+#~ "ខាងក្រោមគឺត្រូវបានទទួលនៅលើ stderr ៖\n"
+#~ "%1"
+
+#~ msgid "Failed to load %1: %2"
+#~ msgstr "បរាជ័យក្នុងការផ្ទុក %1 ៖ %2"
+
+#~ msgid "Library does not contain the symbol \"Chiasmus\"."
+#~ msgstr "បណ្ណាល័យមិនមាននិមិត្តសញ្ញា \"Chiasmus\" ទេ ។"
+
+#~ msgid "Scanning directory %1..."
+#~ msgstr "កំពុងវិភាគថត %1..."
+
+#~ msgid "GpgME"
+#~ msgstr "GpgME"
+
+#~ msgid "GPGME was compiled without support for %1."
+#~ msgstr "GPGME ត្រូវបានចងក្រងដោយមិនមានការគាំទ្រសម្រាប់ %1 ទេ ។"
+
+#~ msgid "Engine %1 is not installed properly."
+#~ msgstr "ម៉ាស៊ីន %1 គឺមិនបានដំឡើងត្រឹមត្រូវទេ ។"
+
+#~ msgid "Engine %1 version %2 installed, but at least version %3 is required."
+#~ msgstr "បានដំឡើងម៉ាស៊ីន %1 កំណែ %2 ប៉ុន្តែវាត្រូវការយ៉ាងហោចណាស់ក៏កំណែ %3 ។"
+
+#~ msgid "Unknown problem with engine for protocol %1."
+#~ msgstr "មិនស្គាល់បញ្ហាជាមួយម៉ាស៊ីនសម្រាប់ពិធីការ %1 ទេ ។"
+
+#~ msgid "program terminated unexpectedly"
+#~ msgstr "កម្មវិធីបានបញ្ចប់ដោយមិនបានរំពឹងទុក"
+
+#~ msgid "program not found or cannot be started"
+#~ msgstr "រកមិនឃើញកម្មវិធី ឬមិនអាចចាប់ផ្ដើមបានទេ"
+
+#~ msgid "<qt>Failed to execute gpgconf:<p>%1</p></qt>"
+#~ msgstr "<qt>បានបរាជ័យក្នុងការប្រតិបត្តិ gpgconf ៖<p>%1</p></qt>"
+
+#~ msgid ""
+#~ "Could not start gpgconf.\n"
+#~ "Check that gpgconf is in the PATH and that it can be started."
+#~ msgstr ""
+#~ "មិនអាចចាប់ផ្ដើម gpgconf ។\n"
+#~ "ពិនិត្យមើលថា gpgconf នៅក្នុងផ្លូវ និងវាអាចត្រូវបានចាប់ផ្ដើម ។"
+
+#~ msgid "Error from gpgconf while saving configuration: %1"
+#~ msgstr "មានកំហុសពី gpgconf នៅពេលដែលរក្សាទុកការកំណត់រចនាសម្ព័ន្ធ ៖ %1"
+
+#~ msgid "Generating DSA key..."
+#~ msgstr "កំពុងបង្កើតកូនសោ DSA..."
+
+#~ msgid "Generating ElGamal key..."
+#~ msgstr "កំពុងបង្កើតកូនសោ ElGamal..."
+
+#~ msgid "Searching for a large prime number..."
+#~ msgstr "កំពុងស្វែងរកចំនួនធំដំបូង..."
+
+#~ msgid ""
+#~ "Waiting for new entropy from random number generator (you might want to "
+#~ "exercise the harddisks or move the mouse)..."
+#~ msgstr "កំពុងរង់ចាំធាតុថ្មីពីកម្មវិធីបង្កើតលេខចៃដន្យ (អ្នកអាចចង់ហាត់ប្រើថាសរឹង ឬផ្លាស់ទីកណ្ដុរ)..."
+
+#~ msgid "Please wait..."
+#~ msgstr "សូមរង់ចាំ..."
+
+#~ msgid ""
+#~ "Starting gpg-agent (you should consider starting a global instance "
+#~ "instead)..."
+#~ msgstr "កំពុងចាប់ផ្ដើមភ្នាក់ងារ gpg (អ្នកគួរតែចាត់ទុកការចាប់ផ្ដើមវត្ថុជាសកលជំនួសវិញ)..."
+
+#~ msgid "While scanning for %1 support in backend %2:"
+#~ msgstr "នៅពេលកំពុងវិភាគរកការគាំទ្រ %1 នៅក្នុងផ្ទៃខាងក្រោយ %2 ៖"
+
+#~ msgctxt "progress info: \"%1 of %2\""
+#~ msgid "%1/%2"
+#~ msgstr "%1/%2"
+
+#~ msgid ""
+#~ "OpenPGP key for %1\n"
+#~ "Created: %2\n"
+#~ "Expiry: %3\n"
+#~ "Fingerprint: %4"
+#~ msgstr ""
+#~ "កូនសោ OpenPGP សម្រាប់ %1\n"
+#~ "បានបង្កើត ៖ %2\n"
+#~ "ផុតកំណត់ ៖ %3\n"
+#~ "ស្នាមផ្ដិតម្រាមដៃ ៖ %4"
+
+#~ msgid ""
+#~ "S/MIME key for %1\n"
+#~ "Created: %2\n"
+#~ "Expiry: %3\n"
+#~ "Fingerprint: %4\n"
+#~ "Issuer: %5"
+#~ msgstr ""
+#~ "កូនសោ S/MIME សម្រាប់ %1\n"
+#~ "បានបង្កើត ៖ %2\n"
+#~ "ផុតកំណត់ ៖ %3\n"
+#~ "ស្នាមផ្ដិតម្រាមដៃ ៖ %4\n"
+#~ "អ្នកចេញផ្សាយ ៖ %5"
+
+#~ msgid "Copy Audit Log to Clipboard"
+#~ msgstr "ចម្លងកំណត់ហេតុត្រួតពិនិត្យទៅក្ដារតម្បៀតខ្ទាស់"
+
+#~ msgid "Add or Change Directory Service"
+#~ msgstr "បន្ថែម ឬផ្លាស់ប្តូរសេវាថត"
+
+#~ msgid "&Server name:"
+#~ msgstr "ឈ្មោះម៉ាស៊ីនបម្រើ ៖"
+
+#~ msgid "389"
+#~ msgstr "៣៨៩"
+
+#~ msgid "&User name (optional):"
+#~ msgstr "ឈ្មោះអ្នកប្រើ (ជាជម្រើស) ៖"
+
+#~ msgid "Pass&word (optional):"
+#~ msgstr "ពាក្យសម្ងាត់ (ជាជម្រើស) ៖"
+
+#~ msgid "&OK"
+#~ msgstr "យល់ព្រម"
+
+#~ msgid "&Cancel"
+#~ msgstr "បោះបង់"
+
+#~ msgid "&Base DN:"
+#~ msgstr "គោល DN ៖"
+
+#~ msgid "&Port:"
+#~ msgstr "ច្រក ៖"
--- /dev/null
+# Translation of libkleopatra.po to Korean.
+#
+#
+# Kyuhyong Yoo<master@aerobuster.com>, 2004.
+# Kyungho Lee <leedos@hanmail.net>, 2004.
+# Shinjo Park <kde@peremen.name>, 2013, 2014, 2015.
+msgid ""
+msgstr ""
+"Project-Id-Version: libkleopatra\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2017-07-12 06:56+0200\n"
+"PO-Revision-Date: 2015-07-30 16:02+0200\n"
+"Last-Translator: Shinjo Park <kde@peremen.name>\n"
+"Language-Team: Korean <kde@peremen.name>\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 1.5\n"
+
+#: kleo/checksumdefinition.cpp:107
+#, kde-format
+msgid "Error in checksum definition %1: %2"
+msgstr "체크섬 정의 %1에 오류 발생: %2"
+
+#: kleo/checksumdefinition.cpp:157
+#, kde-format
+msgid "Cannot use both %f and | in '%1'"
+msgstr "'%1'에서 %f 및 | 문자를 동시에 사용할 수 없음"
+
+#: kleo/checksumdefinition.cpp:167
+#, kde-format
+msgid "Quoting error in '%1' entry"
+msgstr "항목 '%1'에서 인용 부호 오류"
+
+#: kleo/checksumdefinition.cpp:170
+#, kde-format
+msgid "'%1' too complex (would need shell)"
+msgstr "'%1'이(가) 너무 복잡함 (셸이 필요할 수도 있음)"
+
+#: kleo/checksumdefinition.cpp:174
+#, kde-format
+msgid "'%1' entry is empty/missing"
+msgstr "항목 '%1'이(가) 비어 있거나 빠졌음"
+
+#: kleo/checksumdefinition.cpp:183
+#, kde-format
+msgid "'%1' empty or not found"
+msgstr "'%1'이(가) 비어 있거나 찾을 수 없음"
+
+#: kleo/checksumdefinition.cpp:222
+#, kde-format
+msgid "'id' entry is empty/missing"
+msgstr "'id' 항목이 비어 있거나 빠졌음"
+
+#: kleo/checksumdefinition.cpp:225
+#, kde-format
+msgid "'output-file' entry is empty/missing"
+msgstr "'output-file' 항목이 비어 있거나 빠졌음"
+
+#: kleo/checksumdefinition.cpp:228
+#, kde-format
+msgid "'file-patterns' entry is empty/missing"
+msgstr "'file-patterns' 항목이 비어 있거나 빠졌음"
+
+#: kleo/checksumdefinition.cpp:395
+#, kde-format
+msgid "Caught unknown exception in group %1"
+msgstr "그룹 %1에서 알 수 없는 예외 발생"
+
+#: kleo/dn.cpp:507
+#, kde-format
+msgid "Common name"
+msgstr "보통 이름"
+
+#: kleo/dn.cpp:508
+#, kde-format
+msgid "Surname"
+msgstr "성"
+
+#: kleo/dn.cpp:509
+#, kde-format
+msgid "Given name"
+msgstr "이름"
+
+#: kleo/dn.cpp:510
+#, kde-format
+msgid "Location"
+msgstr "위치"
+
+#: kleo/dn.cpp:511
+#, kde-format
+msgid "Title"
+msgstr "직위"
+
+#: kleo/dn.cpp:512
+#, kde-format
+msgid "Organizational unit"
+msgstr "조직 단위"
+
+#: kleo/dn.cpp:513
+#, kde-format
+msgid "Organization"
+msgstr "조직"
+
+#: kleo/dn.cpp:514
+#, kde-format
+msgid "Postal code"
+msgstr "우편 번호"
+
+#: kleo/dn.cpp:515
+#, kde-format
+msgid "Country code"
+msgstr "국가 번호"
+
+#: kleo/dn.cpp:516
+#, kde-format
+msgid "State or province"
+msgstr "도 및 주"
+
+#: kleo/dn.cpp:517
+#, kde-format
+msgid "Domain component"
+msgstr "도메인 구성 요소"
+
+#: kleo/dn.cpp:518
+#, kde-format
+msgid "Business category"
+msgstr "사업 카테고리"
+
+#: kleo/dn.cpp:519
+#, kde-format
+msgid "Email address"
+msgstr "이메일 주소"
+
+#: kleo/dn.cpp:520
+#, kde-format
+msgid "Mail address"
+msgstr "편지 주소"
+
+#: kleo/dn.cpp:521
+#, kde-format
+msgid "Mobile phone number"
+msgstr "휴대폰 번호"
+
+#: kleo/dn.cpp:522
+#, kde-format
+msgid "Telephone number"
+msgstr "전화 번호"
+
+#: kleo/dn.cpp:523
+#, kde-format
+msgid "Fax number"
+msgstr "팩스 번호"
+
+#: kleo/dn.cpp:524
+#, kde-format
+msgid "Street address"
+msgstr "도로명 주소"
+
+#: kleo/dn.cpp:525
+#, kde-format
+msgid "Unique ID"
+msgstr "유일 ID"
+
+#: kleo/enum.cpp:57
+#, kde-format
+msgid "Inline OpenPGP (deprecated)"
+msgstr "인라인 OpenPGP (권장하지 않음)"
+
+#: kleo/enum.cpp:62
+#, kde-format
+msgid "OpenPGP/MIME"
+msgstr "OpenPGP/MIME"
+
+#: kleo/enum.cpp:67 ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "S/MIME"
+msgstr "S/MIME"
+
+#: kleo/enum.cpp:72
+#, kde-format
+msgid "S/MIME Opaque"
+msgstr "S/MIME 불투명"
+
+#: kleo/enum.cpp:104
+#, kde-format
+msgid "Any"
+msgstr "임의"
+
+#: kleo/enum.cpp:177
+#, kde-format
+msgid "Never Encrypt"
+msgstr "암호화하지 않음"
+
+#: kleo/enum.cpp:179
+#, kde-format
+msgid "Always Encrypt"
+msgstr "항상 암호화"
+
+#: kleo/enum.cpp:181
+#, kde-format
+msgid "Always Encrypt If Possible"
+msgstr "가능하다면 항상 암호화"
+
+#: kleo/enum.cpp:183 kleo/enum.cpp:240
+#, kde-format
+msgid "Ask"
+msgstr "물어봄"
+
+#: kleo/enum.cpp:185 kleo/enum.cpp:242
+#, kde-format
+msgid "Ask Whenever Possible"
+msgstr "가능하다면 물어봄"
+
+#: kleo/enum.cpp:187
+#, kde-kuit-format
+msgctxt "no specific preference"
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>없음</placeholder>"
+
+#: kleo/enum.cpp:234
+#, kde-format
+msgid "Never Sign"
+msgstr "서명하지 않음"
+
+#: kleo/enum.cpp:236
+#, kde-format
+msgid "Always Sign"
+msgstr "항상 서명"
+
+#: kleo/enum.cpp:238
+#, kde-format
+msgid "Always Sign If Possible"
+msgstr "가능하면 항상 서명"
+
+#: kleo/enum.cpp:244
+#, kde-format
+msgctxt "no specific preference"
+msgid "<none>"
+msgstr "<없음>"
+
+#: kleo/keyfiltermanager.cpp:85
+#, kde-format
+msgid "All Certificates"
+msgstr "모든 인증서"
+
+#: kleo/keyfiltermanager.cpp:100
+#, kde-format
+msgid "My Certificates"
+msgstr "내 인증서"
+
+#: kleo/keyfiltermanager.cpp:118
+#, kde-format
+msgid "Trusted Certificates"
+msgstr "신뢰하는 인증서"
+
+#: kleo/keyfiltermanager.cpp:135
+#, fuzzy, kde-format
+#| msgid "Trusted Certificates"
+msgid "Fully Trusted Certificates"
+msgstr "신뢰하는 인증서"
+
+#: kleo/keyfiltermanager.cpp:152
+#, kde-format
+msgid "Other Certificates"
+msgstr "기타 인증서"
+
+#: kleo/keyfiltermanager.cpp:166
+#, fuzzy, kde-format
+#| msgid "All Certificates"
+msgid "VS-compliant Certificates"
+msgstr "모든 인증서"
+
+#: kleo/keyfiltermanager.cpp:184
+#, fuzzy, kde-format
+#| msgid "Trusted Certificates"
+msgid "Not validated Certificates"
+msgstr "신뢰하는 인증서"
+
+#: ui/auditlogviewer.cpp:49
+#, kde-format
+msgid "View GnuPG Audit Log"
+msgstr "GnuPG 감사 기록 보이기"
+
+#: ui/auditlogviewer.cpp:53
+#, kde-format
+msgid "&Copy to Clipboard"
+msgstr "클립보드에 복사(&C)"
+
+#: ui/auditlogviewer.cpp:59
+#, kde-format
+msgid "&Save to Disk..."
+msgstr "디스크에 저장(&S)..."
+
+#: ui/auditlogviewer.cpp:95
+#, kde-format
+msgid "Choose File to Save GnuPG Audit Log to"
+msgstr "GnuPG 감사 기록을 저장할 파일 선택"
+
+#: ui/auditlogviewer.cpp:118
+#, kde-format
+msgid "Could not save to file \"%1\": %2"
+msgstr "파일 \"%1\"에 저장할 수 없음: %2"
+
+#: ui/auditlogviewer.cpp:120
+#, kde-format
+msgid "File Save Error"
+msgstr "파일 저장 오류"
+
+#: ui/cryptoconfigdialog.cpp:44
+#, kde-format
+msgid "Configure GnuPG Backend"
+msgstr "GnuPG 백엔드 설정"
+
+#: ui/cryptoconfigdialog.cpp:55
+#, kde-format
+msgid "&Reset"
+msgstr "초기화(&R)"
+
+#: ui/cryptoconfigmodule.cpp:160
+#, kde-format
+msgid "GpgConf Error"
+msgstr "GpgConf 오류"
+
+#: ui/cryptoconfigmodule.cpp:216
+#, kde-format
+msgid ""
+"The gpgconf tool used to provide the information for this dialog does not "
+"seem to be installed properly. It did not return any components. Try running "
+"\"%1\" on the command line for more information."
+msgstr ""
+"이 대화 상자에 정보를 제공하는 gpgconf 도구가 올바르게 설치된 것 같지 않습니"
+"다. 구성 요소 목록을 반환하지 않았습니다. 더 많은 정보를 보려면 명령행에서 "
+"\"%1\"을(를) 실행하십시오."
+
+#: ui/cryptoconfigmodule.cpp:496
+#, kde-format
+msgctxt ""
+"Translate this to 'yes' or 'no' (use the English words!) depending on "
+"whether your language uses Sentence style capitalisation in GUI labels (yes) "
+"or not (no). Context: We get some backend strings in that have the wrong "
+"capitalizaion (in English, at least) so we need to force the first character "
+"to upper-case. It is this behaviour you can control for your language with "
+"this translation."
+msgid "yes"
+msgstr "no"
+
+#: ui/cryptoconfigmodule.cpp:546
+#, kde-format
+msgid "0 - None"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:547
+#, kde-format
+msgid "1 - Basic"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:548
+#, kde-format
+msgid "2 - Verbose"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:549
+#, kde-format
+msgid "3 - More Verbose"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:550
+#, kde-format
+msgid "4 - All"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:559
+#, kde-format
+msgid "Set the debugging level to"
+msgstr "다음으로 디버그 단계 설정"
+
+#: ui/cryptoconfigmodule.cpp:787
+#, kde-format
+msgid "Show..."
+msgstr "보이기..."
+
+#: ui/cryptoconfigmodule.cpp:787 ui/cryptoconfigmodule.cpp:876
+#, kde-format
+msgid "Edit..."
+msgstr "편집..."
+
+#: ui/cryptoconfigmodule.cpp:841
+#, kde-format
+msgid "Configure LDAP Servers"
+msgstr "LDAP 서버 설정"
+
+#: ui/cryptoconfigmodule.cpp:862
+#, fuzzy, kde-format
+#| msgid "No server configured yet"
+msgid "None configured"
+msgstr "아무 서버도 설정되지 않았음"
+
+#: ui/cryptoconfigmodule.cpp:864
+#, kde-format
+msgid "1 server configured"
+msgid_plural "%1 servers configured"
+msgstr[0] "서버 %1개 설정됨"
+
+#: ui/cryptoconfigmodule.cpp:879
+#, kde-format
+msgid "Use keyserver at"
+msgstr "다음에 키 서버 사용"
+
+#: ui/cryptoconfigmodule.cpp:968
+#, kde-format
+msgid "Configure Keyservers"
+msgstr "키 서버 설정"
+
+#: ui/directoryserviceswidget.cpp:67
+#, kde-format
+msgctxt "default server name, keep it a valid domain name, ie. no spaces"
+msgid "server"
+msgstr "서버"
+
+#: ui/directoryserviceswidget.cpp:95
+#, kde-format
+msgid "hkp"
+msgstr "hkp"
+
+#: ui/directoryserviceswidget.cpp:96
+#, kde-format
+msgid "http"
+msgstr "http"
+
+#: ui/directoryserviceswidget.cpp:97
+#, kde-format
+msgid "https"
+msgstr "https"
+
+#: ui/directoryserviceswidget.cpp:98
+#, kde-format
+msgid "ftp"
+msgstr "ftp"
+
+#: ui/directoryserviceswidget.cpp:99
+#, kde-format
+msgid "ftps"
+msgstr "ftps"
+
+#: ui/directoryserviceswidget.cpp:100
+#, kde-format
+msgid "ldap"
+msgstr "ldap"
+
+#: ui/directoryserviceswidget.cpp:101
+#, kde-format
+msgid "ldaps"
+msgstr "ldaps"
+
+#: ui/directoryserviceswidget.cpp:588
+#, kde-format
+msgid "Server Name"
+msgstr "서버 이름"
+
+#: ui/directoryserviceswidget.cpp:589
+#, kde-format
+msgid "Server Port"
+msgstr "서버 포트"
+
+#: ui/directoryserviceswidget.cpp:590
+#, kde-format
+msgid "Base DN"
+msgstr "기초 DN"
+
+#: ui/directoryserviceswidget.cpp:591
+#, kde-format
+msgid "User Name"
+msgstr "사용자 이름"
+
+#: ui/directoryserviceswidget.cpp:592
+#, kde-format
+msgid "Password"
+msgstr "암호"
+
+#: ui/directoryserviceswidget.cpp:614
+#, kde-format
+msgid "(read-only)"
+msgstr "(읽기 전용)"
+
+#: ui/directoryserviceswidget.cpp:616
+#, kde-format
+msgctxt "amended tooltip; %1: original tooltip"
+msgid "%1 (read-only)"
+msgstr "%1 (읽기 전용)"
+
+#: ui/directoryserviceswidget.cpp:739
+#, kde-format
+msgid ""
+"Enter the name or IP address of the server hosting the directory service."
+msgstr "디렉터리 서비스를 제공하는 서버의 IP 주소나 이름을 입력하십시오."
+
+#: ui/directoryserviceswidget.cpp:741
+#, kde-format
+msgid ""
+"<b>(Optional, the default is fine in most cases)</b> Pick the port number "
+"the directory service is listening on."
+msgstr ""
+"<b>(선택 사항, 대부분 경우 기본값으로 충분함)</b> 디렉터리 서비스를 제공하는 "
+"서버의 포트 번호를 입력하십시오."
+
+#: ui/directoryserviceswidget.cpp:744
+#, kde-format
+msgid ""
+"<b>(Only for LDAP)</b> Enter the base DN for this LDAP server to limit "
+"searches to only that subtree of the directory."
+msgstr ""
+"<b>(LDAP 전용)</b> LDAP 서버의 기본 DN을 입력하면 지정한 디렉터리의 하위 디렉"
+"터리에서만 검색합니다."
+
+#: ui/directoryserviceswidget.cpp:747
+#, kde-format
+msgid "<b>(Optional)</b> Enter your user name here, if needed."
+msgstr "<b>(선택 사항)</b> 필요한 경우 사용자 이름을 입력하십시오."
+
+#: ui/directoryserviceswidget.cpp:749
+#, kde-format
+msgid ""
+"<b>(Optional, not recommended)</b> Enter your password here, if needed. Note "
+"that the password will be saved in the clear in a config file in your home "
+"directory."
+msgstr ""
+"<b>(선택 사항, 추천하지 않음)</b> 필요한 경우 암호를 입력하십시오. 암호는 홈 "
+"디렉터리 아래에 일반 텍스트 파일로 저장됩니다."
+
+#. i18n: ectx: property (windowTitle), widget (QWidget, DirectoryServicesWidget)
+#: ui/directoryserviceswidget.ui:14
+#, kde-format
+msgid "Directory Services Configuration"
+msgstr "디렉터리 서비스 설정"
+
+#. i18n: ectx: property (text), widget (QLabel, pgpKSLabel)
+#: ui/directoryserviceswidget.ui:22
+#, fuzzy, kde-format
+#| msgid "OpenPGP Key Selection"
+msgid "OpenPGP Keyserver:"
+msgstr "OpenPGP 키 선택"
+
+#. i18n: ectx: property (title), widget (QGroupBox, x500LA)
+#: ui/directoryserviceswidget.ui:35
+#, fuzzy, kde-format
+#| msgid "Directory services:"
+msgid "X509 Directory services:"
+msgstr "디렉터리 서비스:"
+
+#. i18n: ectx: property (whatsThis), widget (QTreeView, treeView)
+#: ui/directoryserviceswidget.ui:43
+#, fuzzy, kde-format
+#| msgid ""
+#| "This is a list of all directory services that are configured for use with "
+#| "X.509 and OpenPGP."
+msgid ""
+"This is a list of all directory services that are configured for use with "
+"X.509."
+msgstr "X.509 및 OpenPGP를 지원하는 모든 디렉터리 서비스 목록입니다."
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:70
+#, kde-format
+msgid "Click to add a service"
+msgstr "서비스를 추가하려면 누르십시오"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:73
+#, kde-format
+msgid ""
+"Click this button to create a new directory service entry as a clone of the "
+"currently selected one (or with default values, if no other is selected). "
+"You can then configure details in the table on the left hand."
+msgstr ""
+"이 단추를 누르면 현재 선택된 값을 복제하여 (선택한 항목이 없으면 기본값 사"
+"용) 새 디렉터리 서비스 항목을 만듭니다. 새 항목의 설정 값을 변경하려면 왼쪽에"
+"서 가능합니다."
+
+#. i18n: ectx: property (text), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:76
+#, kde-format
+msgid "New"
+msgstr "새로 만들기"
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:92
+#, kde-format
+msgid "Click to remove the currently selected service"
+msgstr "현재 선택된 서비스를 삭제하려면 누르십시오."
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:95
+#, kde-format
+msgid ""
+"Click this button to remove the currently selected directory service. The "
+"change will only take effect once you acknowledge the main configuration "
+"dialog."
+msgstr ""
+"이 단추를 누르면 현재 선택한 디렉터리 서비스를 삭제합니다. 주 설정 대화 상자"
+"에서 변경 사항을 받아들여야 적용됩니다."
+
+#. i18n: ectx: property (text), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:98
+#, kde-format
+msgid "Delete"
+msgstr "삭제"
+
+#. i18n: ectx: property (whatsThis), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:128
+#, kde-format
+msgid ""
+"Use this option to switch display of username and password information on or "
+"off in the above table."
+msgstr "위쪽 표에서 사용자 이름 및 암호 정보를 보이거나 숨기려면 선택하십시오."
+
+#. i18n: ectx: property (text), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:131
+#, kde-format
+msgid "Show user and password information"
+msgstr "사용자 이름과 암호 정보 보이기"
+
+#: ui/dnattributeorderconfigwidget.cpp:73
+#, kde-format
+msgid "Description"
+msgstr "설명"
+
+#: ui/dnattributeorderconfigwidget.cpp:91
+#, kde-format
+msgid "Available attributes:"
+msgstr "사용 가능한 속성:"
+
+#: ui/dnattributeorderconfigwidget.cpp:92
+#, kde-format
+msgid "Current attribute order:"
+msgstr "현재 속성 순서:"
+
+#: ui/dnattributeorderconfigwidget.cpp:112
+#, kde-format
+msgid "All others"
+msgstr "다른 모두"
+
+#: ui/dnattributeorderconfigwidget.cpp:129
+#, kde-format
+msgid "Move to top"
+msgstr "맨 위로 이동"
+
+#: ui/dnattributeorderconfigwidget.cpp:130
+#, kde-format
+msgid "Move one up"
+msgstr "위로 이동"
+
+#: ui/dnattributeorderconfigwidget.cpp:131
+#, kde-format
+msgid "Remove from current attribute order"
+msgstr "현재 속성 순서에서 제거"
+
+#: ui/dnattributeorderconfigwidget.cpp:132
+#, kde-format
+msgid "Add to current attribute order"
+msgstr "현재 속성 순서에 추가"
+
+#: ui/dnattributeorderconfigwidget.cpp:133
+#, kde-format
+msgid "Move one down"
+msgstr "아래로 이동"
+
+#: ui/dnattributeorderconfigwidget.cpp:134
+#, kde-format
+msgid "Move to bottom"
+msgstr "맨 아래로 이동"
+
+#: ui/keyapprovaldialog.cpp:87
+#, kde-kuit-format
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>없음</placeholder>"
+
+#: ui/keyapprovaldialog.cpp:88
+#, kde-format
+msgid "Never Encrypt with This Key"
+msgstr "이 키로 암호화하지 않음"
+
+#: ui/keyapprovaldialog.cpp:89
+#, kde-format
+msgid "Always Encrypt with This Key"
+msgstr "항상 이 키로 암호화"
+
+#: ui/keyapprovaldialog.cpp:90
+#, kde-format
+msgid "Encrypt Whenever Encryption is Possible"
+msgstr "암호화 가능할 때마다 암호화"
+
+#: ui/keyapprovaldialog.cpp:91
+#, kde-format
+msgid "Always Ask"
+msgstr "항상 물어봄"
+
+#: ui/keyapprovaldialog.cpp:92
+#, kde-format
+msgid "Ask Whenever Encryption is Possible"
+msgstr "암호화 가능할 때마다 물어봄"
+
+#: ui/keyapprovaldialog.cpp:113
+#, kde-format
+msgid "Encryption Key Approval"
+msgstr "암호 키 승인"
+
+#: ui/keyapprovaldialog.cpp:129
+#, kde-format
+msgid "The following keys will be used for encryption:"
+msgstr "다음 키를 암호화에 사용합니다:"
+
+#: ui/keyapprovaldialog.cpp:145
+#, kde-format
+msgid "Your keys:"
+msgstr "내 키:"
+
+#: ui/keyapprovaldialog.cpp:157
+#, kde-format
+msgid "Recipient:"
+msgstr "수신자:"
+
+#: ui/keyapprovaldialog.cpp:162
+#, kde-format
+msgid "Encryption keys:"
+msgstr "암호화 키:"
+
+#: ui/keyapprovaldialog.cpp:169
+#, kde-format
+msgid "Encryption preference:"
+msgstr "암호화 선호도:"
+
+#: ui/keyrequester.cpp:118
+#, kde-format
+msgid "Clear"
+msgstr "지우기"
+
+#: ui/keyrequester.cpp:121
+#, kde-format
+msgid "Change..."
+msgstr "변경..."
+
+#: ui/keyrequester.cpp:232 ui/keyselectiondialog.cpp:256
+#, kde-kuit-format
+msgid "<placeholder>unknown</placeholder>"
+msgstr "<placeholder>알 수 없음</placeholder>"
+
+#: ui/keyrequester.cpp:246 ui/keyselectiondialog.cpp:657
+#, kde-format
+msgid ""
+"<qt><p>An error occurred while fetching the keys from the backend:</p><p><b>"
+"%1</b></p></qt>"
+msgstr "<qt><p>백엔드에서 키를 가져오는 중 오류 발생:</p><p><b>%1</b></p></qt>"
+
+#: ui/keyrequester.cpp:251 ui/keyrequester.cpp:283 ui/keyrequester.cpp:306
+#: ui/keyselectiondialog.cpp:630 ui/keyselectiondialog.cpp:662
+#, kde-format
+msgid "Key Listing Failed"
+msgstr "키 표시 실패"
+
+#: ui/keyrequester.cpp:281
+#, kde-format
+msgid ""
+"The OpenPGP backend does not support listing keys. Check your installation."
+msgstr ""
+"OpenPGP 백엔드가 키 표시를 지원하지 않습니다. 설치 상태를 확인하십시오."
+
+#: ui/keyrequester.cpp:304
+#, kde-format
+msgid ""
+"The S/MIME backend does not support listing keys. Check your installation."
+msgstr "S/MIME 백엔드가 키 표시를 지원하지 않습니다. 설치 상태를 확인하십시오."
+
+#: ui/keyrequester.cpp:426
+#, kde-format
+msgid "OpenPGP Key Selection"
+msgstr "OpenPGP 키 선택"
+
+#: ui/keyrequester.cpp:427
+#, kde-format
+msgid "Please select an OpenPGP key to use."
+msgstr "사용할 OpenPGP 키를 선택해 주십시오."
+
+#: ui/keyrequester.cpp:429
+#, kde-format
+msgid "S/MIME Key Selection"
+msgstr "S/MIME 키 선택"
+
+#: ui/keyrequester.cpp:430
+#, kde-format
+msgid "Please select an S/MIME key to use."
+msgstr "사용할 S/MIME 키를 선택해 주십시오."
+
+#: ui/keyrequester.cpp:432
+#, kde-format
+msgid "Key Selection"
+msgstr "키 선택"
+
+#: ui/keyrequester.cpp:433
+#, kde-format
+msgid "Please select an (OpenPGP or S/MIME) key to use."
+msgstr "키(OpenPGP나 S/MIME)를 선택해 주십시오."
+
+#: ui/keyselectioncombo.cpp:195
+#, kde-format
+msgctxt "Name <email> (validity, type, created: date)"
+msgid "%1 (%2, %3, created: %4)"
+msgstr ""
+
+#: ui/keyselectioncombo.cpp:196
+#, kde-format
+msgctxt "Name <email>"
+msgid "%1 <%2>"
+msgstr ""
+
+#: ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "OpenPGP"
+msgstr "OpenPGP"
+
+#: ui/keyselectioncombo.cpp:347
+#, fuzzy, kde-format
+#| msgid "Fetching keys..."
+msgid "Loading keys ..."
+msgstr "키 가져오는 중..."
+
+#: ui/keyselectiondialog.cpp:98
+#, kde-format
+msgid "The key is not valid."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:106
+#, kde-format
+msgid "The key is expired."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:110
+#, kde-format
+msgid "The key is revoked."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:114
+#, kde-format
+msgid "The key is disabled."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:122
+#, fuzzy, kde-format
+#| msgid "The following keys will be used for encryption:"
+msgid "The key is not designated for encryption."
+msgstr "다음 키를 암호화에 사용합니다:"
+
+#: ui/keyselectiondialog.cpp:128
+#, kde-format
+msgid "The key is not designated for signing."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:134
+#, kde-format
+msgid "The key is not designated for certifying."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:140
+#, kde-format
+msgid "The key is not designated for authentication."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:148
+#, kde-format
+msgid "The key is not secret."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:163
+#, kde-format
+msgid "The key is not trusted enough."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:169
+#, kde-format
+msgid "The key can be used."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:230
+#, kde-format
+msgid "Key ID"
+msgstr "키 ID"
+
+#: ui/keyselectiondialog.cpp:231
+#, kde-format
+msgid "User ID"
+msgstr "사용자 ID"
+
+#: ui/keyselectiondialog.cpp:279
+#, kde-format
+msgid "never"
+msgstr "안 함"
+
+#: ui/keyselectiondialog.cpp:289 ui/keyselectiondialog.cpp:291
+#: ui/keyselectiondialog.cpp:300 ui/keyselectiondialog.cpp:302
+#, kde-format
+msgid "unknown"
+msgstr "알 수 없음"
+
+#: ui/keyselectiondialog.cpp:289
+#, kde-format
+msgid "OpenPGP key for <b>%1</b>"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:291
+#, kde-format
+msgid "S/MIME key for <b>%1</b>"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:298
+#, kde-format
+msgctxt "Key creation date"
+msgid "Created"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:299
+#, kde-format
+msgctxt "Key Expiration date"
+msgid "Expiry"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:300
+#, kde-format
+msgctxt "Key fingerprint"
+msgid "Fingerprint"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:302
+#, kde-format
+msgctxt "Key issuer"
+msgid "Issuer"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:304
+#, kde-format
+msgctxt "Key status"
+msgid "Status"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:456
+#, kde-format
+msgid "Search for &External Certificates"
+msgstr "외부 인증서 찾기(&E)"
+
+#: ui/keyselectiondialog.cpp:470
+#, kde-format
+msgid "&Search for:"
+msgstr "다음에서 찾기(&S):"
+
+#: ui/keyselectiondialog.cpp:494
+#, kde-format
+msgid "&Remember choice"
+msgstr "선택 사항 저장(&R)"
+
+#: ui/keyselectiondialog.cpp:497
+#, kde-format
+msgid ""
+"<qt><p>If you check this box your choice will be stored and you will not be "
+"asked again.</p></qt>"
+msgstr ""
+"<qt><p>이 상자를 선택하면 선택 사항을 저장하고 다시 묻지 않습니다.</p></qt>"
+
+#: ui/keyselectiondialog.cpp:509
+#, kde-format
+msgid "&Reread Keys"
+msgstr "키 다시 읽기(&R)"
+
+#: ui/keyselectiondialog.cpp:510
+#, kde-format
+msgid "&Start Certificate Manager"
+msgstr "인증서 관리자 시작하기(&S)"
+
+#: ui/keyselectiondialog.cpp:628
+#, kde-format
+msgid "No backends found for listing keys. Check your installation."
+msgstr ""
+"키를 표시하기 위한 백엔드를 찾을 수 없습니다. 설치 상태를 확인하십시오."
+
+#: ui/keyselectiondialog.cpp:644
+#, kde-format
+msgid "Could not start certificate manager; please check your installation."
+msgstr "인증서 관리자를 시작할 수 없습니다. 설치 상태를 확인하십시오."
+
+#: ui/keyselectiondialog.cpp:646
+#, kde-format
+msgid "Certificate Manager Error"
+msgstr "인증서 관리자 오류"
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Checking selected keys..."
+msgstr "선택한 키 확인 중..."
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Fetching keys..."
+msgstr "키 가져오는 중..."
+
+#: ui/keyselectiondialog.cpp:731
+#, kde-format
+msgid ""
+"<qt>One backend returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgid_plural ""
+"<qt>%1 backends returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgstr[0] ""
+"<qt>%1개의 백엔드 출력이 끊어졌습니다.<p>모든 키가 표시되지 않았습니다</p></"
+"qt>"
+
+#: ui/keyselectiondialog.cpp:736
+#, kde-format
+msgid "Key List Result"
+msgstr "키 목록 결과"
+
+#: ui/keyselectiondialog.cpp:856
+#, kde-format
+msgid "Recheck Key"
+msgstr "키 다시 확인"
+
+#: ui/messagebox.cpp:71
+#, kde-format
+msgid "Your system does not have support for GnuPG Audit Logs"
+msgstr "GnuPG 감사 기록을 지원하지 않는 것 같습니다"
+
+#: ui/messagebox.cpp:72
+#, kde-format
+msgid "System Error"
+msgstr "시스템 오류"
+
+#: ui/messagebox.cpp:79
+#, kde-format
+msgid ""
+"An error occurred while trying to retrieve the GnuPG Audit Log:\n"
+"%1"
+msgstr ""
+"GnuPG 감사 기록을 가져오는 중 오류 발생:\n"
+"%1"
+
+#: ui/messagebox.cpp:81
+#, kde-format
+msgid "GnuPG Audit Log Error"
+msgstr "GnuPG 감사 기록 오류"
+
+#: ui/messagebox.cpp:88
+#, kde-format
+msgid "No GnuPG Audit Log available for this operation."
+msgstr "이 작업에 대한 GnuPG 감사 기록을 사용할 수 없습니다."
+
+#: ui/messagebox.cpp:89
+#, kde-format
+msgid "No GnuPG Audit Log"
+msgstr "GnuPG 감사 기록 없음"
+
+#: ui/messagebox.cpp:109 ui/messagebox.cpp:115
+#, kde-format
+msgid "GnuPG Audit Log Viewer"
+msgstr "GnuPG 감사 기록 뷰어"
+
+#: ui/messagebox.cpp:121
+#, kde-format
+msgid "Signing failed: %1"
+msgstr "서명 실패: %1"
+
+#: ui/messagebox.cpp:122
+#, kde-format
+msgid "Signing successful"
+msgstr "서명 성공"
+
+#: ui/messagebox.cpp:133
+#, kde-format
+msgid "Encryption failed: %1"
+msgstr "암호화 실패: %1"
+
+#: ui/messagebox.cpp:134
+#, kde-format
+msgid "Encryption successful"
+msgstr "암호화 성공"
+
+#: ui/messagebox.cpp:155
+#, kde-format
+msgid "Signing Result"
+msgstr "서명 결과"
+
+#: ui/messagebox.cpp:167
+#, kde-format
+msgid "Signing Error"
+msgstr "서명 오류"
+
+#: ui/messagebox.cpp:179 ui/messagebox.cpp:203
+#, kde-format
+msgid "Encryption Result"
+msgstr "암호화 결과"
+
+#: ui/messagebox.cpp:191 ui/messagebox.cpp:215
+#, kde-format
+msgid "Encryption Error"
+msgstr "암호화 오류"
+
+#: ui/messagebox.cpp:263
+#, kde-format
+msgid "&Show Audit Log"
+msgstr "감사 기록 보이기(&S)"
+
+#: ui/progressdialog.cpp:91
+#, kde-format
+msgid "%1: %2"
+msgstr "%1: %2"
+
+#~ msgctxt "New X.509 Directory Server"
+#~ msgid "X.509"
+#~ msgstr "X.509"
+
+#~ msgctxt "New OpenPGP Directory Server"
+#~ msgid "OpenPGP"
+#~ msgstr "OpenPGP"
+
+#~ msgid "Scheme"
+#~ msgstr "구성"
+
+#~ msgid "X.509"
+#~ msgstr "X.509"
+
+#~ msgid ""
+#~ "Select the access scheme (scheme) that the directory service is available "
+#~ "through."
+#~ msgstr "디렉터리 서비스에 접근할 수 있는 액세스 프로토콜을 설정합니다."
+
+#~ msgid ""
+#~ "Check this column if this directory service is providing S/MIME (X.509) "
+#~ "certificates."
+#~ msgstr ""
+#~ "이 디렉터리 서비스가 S/MIME (X.509) 인증서를 제공한다면 선택하십시오."
+
+#~ msgid ""
+#~ "Check this column if this directory service is providing OpenPGP "
+#~ "certificates."
+#~ msgstr "이 디렉터리 서비스가 OpenPGP 인증서를 제공한다면 선택하십시오."
+
+#~ msgid "0 - None (no debugging at all)"
+#~ msgstr "0 - 없음 (디버깅 없음)"
+
+#~ msgid "1 - Basic (some basic debug messages)"
+#~ msgstr "1 - 기본 (일부 기본 디버그 메시지)"
+
+#~ msgid "2 - Advanced (more verbose debug messages)"
+#~ msgstr "2 - 고급 (더 자세한 디버그 메시지)"
+
+#~ msgid "3 - Expert (even more detailed messages)"
+#~ msgstr "3 - 전문가 (더 자세한 디버그 메시지)"
+
+#~ msgid "4 - Guru (all of the debug messages you can get)"
+#~ msgstr "4 - 구루 (나오는 모든 디버그 메시지)"
+
+#~ msgid "General"
+#~ msgstr "일반"
+
+#~ msgid "Chiasmus"
+#~ msgstr "Chiasmus"
+
+#~ msgid "Chiasmus command line tool"
+#~ msgstr "Chiasmus 명령행 도구"
+
+#~ msgid "Unsupported protocol \"%1\""
+#~ msgstr "지원하지 않는 프로토콜 \"%1\""
+
+#~ msgid "File \"%1\" does not exist or is not executable."
+#~ msgstr "파일 \"%1\"이(가) 존재하지 않거나 실행할 수 없습니다."
+
+#~ msgid "Output from chiasmus"
+#~ msgstr "chiasmus 출력"
+
+#~ msgid "Decryption failed: %1"
+#~ msgstr "복호화 실패: %1"
+
+#~ msgid ""
+#~ "The following was received on stderr:\n"
+#~ "%1"
+#~ msgstr ""
+#~ "표준 에러에서 다음 응답을 받음:\n"
+#~ "%1"
+
+#~ msgid "Failed to load %1: %2"
+#~ msgstr "%1을(를) 불러올 수 없음: %2"
+
+#~ msgid "Library does not contain the symbol \"Chiasmus\"."
+#~ msgstr "라이브러리에 기호 \"Chiasmus\"가 없습니다."
+
+#~ msgid "Scanning directory %1..."
+#~ msgstr "디렉터리 %1 검사 중..."
+
+#~ msgid "GpgME"
+#~ msgstr "GpgME"
+
+#~ msgid "GPGME was compiled without support for %1."
+#~ msgstr "GPGME가 %1 지원을 제외하고 컴파일되었습니다."
+
+#~ msgid "Engine %1 is not installed properly."
+#~ msgstr "엔진 %1이(가) 올바르게 설치되지 않았습니다."
+
+#~ msgid "Engine %1 version %2 installed, but at least version %3 is required."
+#~ msgstr ""
+#~ "엔진 %1의 버전 %2이(가) 설치되었지만, 최소한 버전 %3이(가) 필요합니다."
+
+#~ msgid "Unknown problem with engine for protocol %1."
+#~ msgstr "프로토콜 %1을(를) 위한 엔진에서 알 수 없는 문제가 발생했습니다."
+
+#~ msgid "program terminated unexpectedly"
+#~ msgstr "예상치 못하게 프로그램 종료됨"
+
+#~ msgid "program not found or cannot be started"
+#~ msgstr "프로그램을 찾을 수 없거나 시작할 수 없음"
+
+#~ msgid "<qt>Failed to execute gpgconf:<p>%1</p></qt>"
+#~ msgstr "<qt>gpgconf를 실행할 수 없음:<p>%1</p></qt>"
+
+#~ msgid ""
+#~ "Could not start gpgconf.\n"
+#~ "Check that gpgconf is in the PATH and that it can be started."
+#~ msgstr ""
+#~ "gpgconf를 시작할 수 없습니다.\n"
+#~ "PATH에 gpgconf가 있으며 실행할 수 있는지 확인하십시오"
+
+#~ msgid "Error from gpgconf while saving configuration: %1"
+#~ msgstr "설정을 저장하는 중 gpgconf에서 오류 발생: %1"
+
+#~ msgid "Generating DSA key..."
+#~ msgstr "DSA 키 생성 중..."
+
+#~ msgid "Generating ElGamal key..."
+#~ msgstr "ElGamal 키 생성 중..."
+
+#~ msgid "Searching for a large prime number..."
+#~ msgstr "큰 소수를 찾는 중..."
+
+#~ msgid ""
+#~ "Waiting for new entropy from random number generator (you might want to "
+#~ "exercise the harddisks or move the mouse)..."
+#~ msgstr ""
+#~ "난수 생성기에서 새로운 엔트로피를 기다리는 중 (하드디스크를 계속 사용하거"
+#~ "나 마우스를 움직여도 됩니다)..."
+
+#~ msgid "Please wait..."
+#~ msgstr "기다려 주십시오..."
+
+#~ msgid ""
+#~ "Starting gpg-agent (you should consider starting a global instance "
+#~ "instead)..."
+#~ msgstr "gpg-agent를 시작하는 중 (전역 인스턴스를 시작해도 됨)..."
+
+#~ msgid "While scanning for %1 support in backend %2:"
+#~ msgstr "백엔드 %2에서 %1 지원을 찾는 중:"
+
+#~ msgctxt "progress info: \"%1 of %2\""
+#~ msgid "%1/%2"
+#~ msgstr "%2 중 %1"
+
+#~ msgid ""
+#~ "OpenPGP key for %1\n"
+#~ "Created: %2\n"
+#~ "Expiry: %3\n"
+#~ "Fingerprint: %4"
+#~ msgstr ""
+#~ "%1을(를) 위한 OpenPGP 키\n"
+#~ "생성: %2\n"
+#~ "만료: %3\n"
+#~ "지문: %4"
+
+#~ msgid ""
+#~ "S/MIME key for %1\n"
+#~ "Created: %2\n"
+#~ "Expiry: %3\n"
+#~ "Fingerprint: %4\n"
+#~ "Issuer: %5"
+#~ msgstr ""
+#~ "%1을(를) 위한 S/MIME 키 \n"
+#~ "생성: %2\n"
+#~ "만료: %3\n"
+#~ "지문: %4\n"
+#~ "배포자: %5"
+
+#~ msgid "Copy Audit Log to Clipboard"
+#~ msgstr "감사 기록을 클립보드에 복사"
+
+#~ msgid "Add or Change Directory Service"
+#~ msgstr "디렉터리 서비스 추가 혹은 변경"
+
+#~ msgid "&Server name:"
+#~ msgstr "서버 이름(&S):"
+
+#~ msgid "389"
+#~ msgstr "389"
+
+#~ msgid "&User name (optional):"
+#~ msgstr "사용자 이름 (선택 사항)(&U):"
+
+#~ msgid "Pass&word (optional):"
+#~ msgstr "암호 (선택 사항)(&W):"
+
+#~ msgid "&OK"
+#~ msgstr "확인(&O)"
+
+#~ msgid "&Cancel"
+#~ msgstr "취소(&C)"
+
+#~ msgid "&Base DN:"
+#~ msgstr "기초 DN(&B):"
+
+#~ msgid "&Port:"
+#~ msgstr "포트(&P):"
--- /dev/null
+# translation of libkleopatra.po to Lithuanian
+# Donatas Glodenis <dgvirtual@akl.lt>, 2005-2008.
+# Remigijus Jarmalavičius, 2011.
+# Liudas Ališauskas <liudas.alisauskas@gmail.com>, 2011, 2013.
+msgid ""
+msgstr ""
+"Project-Id-Version: libkleopatra\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2017-07-12 06:56+0200\n"
+"PO-Revision-Date: 2013-08-10 19:20+0300\n"
+"Last-Translator: Liudas <liudas.alisauskas@gmail.com>\n"
+"Language-Team: Lithuanian <kde-i18n-lt@kde.org>\n"
+"Language: lt\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : n%10>=2 && (n%100<10 || n"
+"%100>=20) ? 1 : n%10==0 || (n%100>10 && n%100<20) ? 2 : 3);\n"
+"X-Generator: Lokalize 1.5\n"
+
+#: kleo/checksumdefinition.cpp:107
+#, kde-format
+msgid "Error in checksum definition %1: %2"
+msgstr "Klaida kontrolinės sumos apibrėžime %1: %2"
+
+#: kleo/checksumdefinition.cpp:157
+#, kde-format
+msgid "Cannot use both %f and | in '%1'"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:167
+#, kde-format
+msgid "Quoting error in '%1' entry"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:170
+#, kde-format
+msgid "'%1' too complex (would need shell)"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:174
+#, kde-format
+msgid "'%1' entry is empty/missing"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:183
+#, kde-format
+msgid "'%1' empty or not found"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:222
+#, kde-format
+msgid "'id' entry is empty/missing"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:225
+#, kde-format
+msgid "'output-file' entry is empty/missing"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:228
+#, kde-format
+msgid "'file-patterns' entry is empty/missing"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:395
+#, kde-format
+msgid "Caught unknown exception in group %1"
+msgstr ""
+
+#: kleo/dn.cpp:507
+#, kde-format
+msgid "Common name"
+msgstr "Bendras vardas"
+
+#: kleo/dn.cpp:508
+#, kde-format
+msgid "Surname"
+msgstr "Pavardė"
+
+#: kleo/dn.cpp:509
+#, kde-format
+msgid "Given name"
+msgstr "Vardas"
+
+#: kleo/dn.cpp:510
+#, kde-format
+msgid "Location"
+msgstr "Vieta"
+
+#: kleo/dn.cpp:511
+#, kde-format
+msgid "Title"
+msgstr "Antraštė"
+
+#: kleo/dn.cpp:512
+#, kde-format
+msgid "Organizational unit"
+msgstr "Organizacinis vienetas"
+
+#: kleo/dn.cpp:513
+#, kde-format
+msgid "Organization"
+msgstr "Organizacija"
+
+#: kleo/dn.cpp:514
+#, kde-format
+msgid "Postal code"
+msgstr "Pašto kodas"
+
+#: kleo/dn.cpp:515
+#, kde-format
+msgid "Country code"
+msgstr "Šalies kodas"
+
+#: kleo/dn.cpp:516
+#, kde-format
+msgid "State or province"
+msgstr "Šalis ar provincija"
+
+#: kleo/dn.cpp:517
+#, kde-format
+msgid "Domain component"
+msgstr "Domeno komponentas"
+
+#: kleo/dn.cpp:518
+#, kde-format
+msgid "Business category"
+msgstr "Verslo kategorija"
+
+#: kleo/dn.cpp:519
+#, kde-format
+msgid "Email address"
+msgstr "El. pašto adresas"
+
+#: kleo/dn.cpp:520
+#, kde-format
+msgid "Mail address"
+msgstr "El. pašto adresai"
+
+#: kleo/dn.cpp:521
+#, kde-format
+msgid "Mobile phone number"
+msgstr "Mob. telefono numeris"
+
+#: kleo/dn.cpp:522
+#, kde-format
+msgid "Telephone number"
+msgstr "Telefono numeris"
+
+#: kleo/dn.cpp:523
+#, kde-format
+msgid "Fax number"
+msgstr "Fakso numeris"
+
+#: kleo/dn.cpp:524
+#, kde-format
+msgid "Street address"
+msgstr "Gatvės adresas"
+
+#: kleo/dn.cpp:525
+#, kde-format
+msgid "Unique ID"
+msgstr "Unikalus ID"
+
+#: kleo/enum.cpp:57
+#, kde-format
+msgid "Inline OpenPGP (deprecated)"
+msgstr "Inline OpenPGP (nebenaudojamas)"
+
+#: kleo/enum.cpp:62
+#, kde-format
+msgid "OpenPGP/MIME"
+msgstr "OpenPGP/MIME"
+
+#: kleo/enum.cpp:67 ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "S/MIME"
+msgstr "S/MIME"
+
+#: kleo/enum.cpp:72
+#, kde-format
+msgid "S/MIME Opaque"
+msgstr "S/MIME Skaidrus"
+
+#: kleo/enum.cpp:104
+#, kde-format
+msgid "Any"
+msgstr "Bet kas"
+
+#: kleo/enum.cpp:177
+#, kde-format
+msgid "Never Encrypt"
+msgstr "Niekada nešifruoti"
+
+#: kleo/enum.cpp:179
+#, kde-format
+msgid "Always Encrypt"
+msgstr "Visada šifruoti"
+
+#: kleo/enum.cpp:181
+#, kde-format
+msgid "Always Encrypt If Possible"
+msgstr "Visada šifruoti, jei įmanoma"
+
+#: kleo/enum.cpp:183 kleo/enum.cpp:240
+#, kde-format
+msgid "Ask"
+msgstr "Klausti"
+
+#: kleo/enum.cpp:185 kleo/enum.cpp:242
+#, kde-format
+msgid "Ask Whenever Possible"
+msgstr "Klausti kai galimas"
+
+#: kleo/enum.cpp:187
+#, kde-kuit-format
+msgctxt "no specific preference"
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>joks</placeholder>"
+
+#: kleo/enum.cpp:234
+#, kde-format
+msgid "Never Sign"
+msgstr "Niekada nepasirašyti"
+
+#: kleo/enum.cpp:236
+#, kde-format
+msgid "Always Sign"
+msgstr "Visada pasirašyti"
+
+#: kleo/enum.cpp:238
+#, kde-format
+msgid "Always Sign If Possible"
+msgstr "Visada pasirašyti, jei įmanoma"
+
+#: kleo/enum.cpp:244
+#, kde-format
+msgctxt "no specific preference"
+msgid "<none>"
+msgstr "<joks>"
+
+#: kleo/keyfiltermanager.cpp:85
+#, kde-format
+msgid "All Certificates"
+msgstr "Visi liudijimai"
+
+#: kleo/keyfiltermanager.cpp:100
+#, kde-format
+msgid "My Certificates"
+msgstr "Mano liudijimai"
+
+#: kleo/keyfiltermanager.cpp:118
+#, kde-format
+msgid "Trusted Certificates"
+msgstr "Patikimi liudijimai"
+
+#: kleo/keyfiltermanager.cpp:135
+#, fuzzy, kde-format
+#| msgid "Trusted Certificates"
+msgid "Fully Trusted Certificates"
+msgstr "Patikimi liudijimai"
+
+#: kleo/keyfiltermanager.cpp:152
+#, kde-format
+msgid "Other Certificates"
+msgstr "Kiti liudijimai"
+
+#: kleo/keyfiltermanager.cpp:166
+#, fuzzy, kde-format
+#| msgid "All Certificates"
+msgid "VS-compliant Certificates"
+msgstr "Visi liudijimai"
+
+#: kleo/keyfiltermanager.cpp:184
+#, fuzzy, kde-format
+#| msgid "Trusted Certificates"
+msgid "Not validated Certificates"
+msgstr "Patikimi liudijimai"
+
+#: ui/auditlogviewer.cpp:49
+#, kde-format
+msgid "View GnuPG Audit Log"
+msgstr ""
+
+#: ui/auditlogviewer.cpp:53
+#, kde-format
+msgid "&Copy to Clipboard"
+msgstr ""
+
+#: ui/auditlogviewer.cpp:59
+#, kde-format
+msgid "&Save to Disk..."
+msgstr ""
+
+#: ui/auditlogviewer.cpp:95
+#, kde-format
+msgid "Choose File to Save GnuPG Audit Log to"
+msgstr ""
+
+#: ui/auditlogviewer.cpp:118
+#, kde-format
+msgid "Could not save to file \"%1\": %2"
+msgstr ""
+
+#: ui/auditlogviewer.cpp:120
+#, kde-format
+msgid "File Save Error"
+msgstr ""
+
+#: ui/cryptoconfigdialog.cpp:44
+#, kde-format
+msgid "Configure GnuPG Backend"
+msgstr "Konfigūruoti GnuPG bazė"
+
+#: ui/cryptoconfigdialog.cpp:55
+#, kde-format
+msgid "&Reset"
+msgstr "&Iš naujo"
+
+#: ui/cryptoconfigmodule.cpp:160
+#, kde-format
+msgid "GpgConf Error"
+msgstr "GpgConf klaida"
+
+#: ui/cryptoconfigmodule.cpp:216
+#, kde-format
+msgid ""
+"The gpgconf tool used to provide the information for this dialog does not "
+"seem to be installed properly. It did not return any components. Try running "
+"\"%1\" on the command line for more information."
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:496
+#, kde-format
+msgctxt ""
+"Translate this to 'yes' or 'no' (use the English words!) depending on "
+"whether your language uses Sentence style capitalisation in GUI labels (yes) "
+"or not (no). Context: We get some backend strings in that have the wrong "
+"capitalizaion (in English, at least) so we need to force the first character "
+"to upper-case. It is this behaviour you can control for your language with "
+"this translation."
+msgid "yes"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:546
+#, kde-format
+msgid "0 - None"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:547
+#, kde-format
+msgid "1 - Basic"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:548
+#, kde-format
+msgid "2 - Verbose"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:549
+#, kde-format
+msgid "3 - More Verbose"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:550
+#, kde-format
+msgid "4 - All"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:559
+#, kde-format
+msgid "Set the debugging level to"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:787
+#, kde-format
+msgid "Show..."
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:787 ui/cryptoconfigmodule.cpp:876
+#, kde-format
+msgid "Edit..."
+msgstr "Keisti..."
+
+#: ui/cryptoconfigmodule.cpp:841
+#, kde-format
+msgid "Configure LDAP Servers"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:862
+#, kde-format
+msgid "None configured"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:864
+#, kde-format
+msgid "1 server configured"
+msgid_plural "%1 servers configured"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+msgstr[3] ""
+
+#: ui/cryptoconfigmodule.cpp:879
+#, kde-format
+msgid "Use keyserver at"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:968
+#, kde-format
+msgid "Configure Keyservers"
+msgstr "Konfi&gūruoti Keyservers..."
+
+#: ui/directoryserviceswidget.cpp:67
+#, kde-format
+msgctxt "default server name, keep it a valid domain name, ie. no spaces"
+msgid "server"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:95
+#, kde-format
+msgid "hkp"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:96
+#, kde-format
+msgid "http"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:97
+#, kde-format
+msgid "https"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:98
+#, kde-format
+msgid "ftp"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:99
+#, kde-format
+msgid "ftps"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:100
+#, kde-format
+msgid "ldap"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:101
+#, kde-format
+msgid "ldaps"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:588
+#, kde-format
+msgid "Server Name"
+msgstr "Serverio pavadinimas"
+
+#: ui/directoryserviceswidget.cpp:589
+#, kde-format
+msgid "Server Port"
+msgstr "Serverio prievadas"
+
+#: ui/directoryserviceswidget.cpp:590
+#, kde-format
+msgid "Base DN"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:591
+#, kde-format
+msgid "User Name"
+msgstr "Naudotojo vardas"
+
+#: ui/directoryserviceswidget.cpp:592
+#, kde-format
+msgid "Password"
+msgstr "Slaptažodis"
+
+#: ui/directoryserviceswidget.cpp:614
+#, kde-format
+msgid "(read-only)"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:616
+#, kde-format
+msgctxt "amended tooltip; %1: original tooltip"
+msgid "%1 (read-only)"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:739
+#, kde-format
+msgid ""
+"Enter the name or IP address of the server hosting the directory service."
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:741
+#, kde-format
+msgid ""
+"<b>(Optional, the default is fine in most cases)</b> Pick the port number "
+"the directory service is listening on."
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:744
+#, kde-format
+msgid ""
+"<b>(Only for LDAP)</b> Enter the base DN for this LDAP server to limit "
+"searches to only that subtree of the directory."
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:747
+#, kde-format
+msgid "<b>(Optional)</b> Enter your user name here, if needed."
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:749
+#, kde-format
+msgid ""
+"<b>(Optional, not recommended)</b> Enter your password here, if needed. Note "
+"that the password will be saved in the clear in a config file in your home "
+"directory."
+msgstr ""
+
+#. i18n: ectx: property (windowTitle), widget (QWidget, DirectoryServicesWidget)
+#: ui/directoryserviceswidget.ui:14
+#, kde-format
+msgid "Directory Services Configuration"
+msgstr "Aplankų tarnybos konfigūravimas"
+
+#. i18n: ectx: property (text), widget (QLabel, pgpKSLabel)
+#: ui/directoryserviceswidget.ui:22
+#, fuzzy, kde-format
+#| msgid "OpenPGP Key Selection"
+msgid "OpenPGP Keyserver:"
+msgstr "OpenPGP rakto pasirinkimas"
+
+#. i18n: ectx: property (title), widget (QGroupBox, x500LA)
+#: ui/directoryserviceswidget.ui:35
+#, fuzzy, kde-format
+#| msgid "Directory services:"
+msgid "X509 Directory services:"
+msgstr "Aplankų tarnybos:"
+
+#. i18n: ectx: property (whatsThis), widget (QTreeView, treeView)
+#: ui/directoryserviceswidget.ui:43
+#, kde-format
+msgid ""
+"This is a list of all directory services that are configured for use with "
+"X.509."
+msgstr ""
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:70
+#, kde-format
+msgid "Click to add a service"
+msgstr "Spustelėkite pridėti tarnybą"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:73
+#, kde-format
+msgid ""
+"Click this button to create a new directory service entry as a clone of the "
+"currently selected one (or with default values, if no other is selected). "
+"You can then configure details in the table on the left hand."
+msgstr ""
+
+#. i18n: ectx: property (text), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:76
+#, kde-format
+msgid "New"
+msgstr "Naujas"
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:92
+#, kde-format
+msgid "Click to remove the currently selected service"
+msgstr "Spustelėkite pašalinti dabar pažymėtą tarnybą"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:95
+#, kde-format
+msgid ""
+"Click this button to remove the currently selected directory service. The "
+"change will only take effect once you acknowledge the main configuration "
+"dialog."
+msgstr ""
+
+#. i18n: ectx: property (text), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:98
+#, kde-format
+msgid "Delete"
+msgstr "Pašalinti"
+
+#. i18n: ectx: property (whatsThis), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:128
+#, kde-format
+msgid ""
+"Use this option to switch display of username and password information on or "
+"off in the above table."
+msgstr ""
+
+#. i18n: ectx: property (text), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:131
+#, kde-format
+msgid "Show user and password information"
+msgstr "Rodyti naudotojo ir slaptažodžio informaciją"
+
+#: ui/dnattributeorderconfigwidget.cpp:73
+#, kde-format
+msgid "Description"
+msgstr "Aprašymas"
+
+#: ui/dnattributeorderconfigwidget.cpp:91
+#, kde-format
+msgid "Available attributes:"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:92
+#, kde-format
+msgid "Current attribute order:"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:112
+#, kde-format
+msgid "All others"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:129
+#, kde-format
+msgid "Move to top"
+msgstr "Perkelti aukštyn"
+
+#: ui/dnattributeorderconfigwidget.cpp:130
+#, kde-format
+msgid "Move one up"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:131
+#, kde-format
+msgid "Remove from current attribute order"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:132
+#, kde-format
+msgid "Add to current attribute order"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:133
+#, kde-format
+msgid "Move one down"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:134
+#, kde-format
+msgid "Move to bottom"
+msgstr ""
+
+#: ui/keyapprovaldialog.cpp:87
+#, fuzzy, kde-kuit-format
+#| msgctxt "no specific preference"
+#| msgid "<placeholder>none</placeholder>"
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>joks</placeholder>"
+
+#: ui/keyapprovaldialog.cpp:88
+#, kde-format
+msgid "Never Encrypt with This Key"
+msgstr "Niekuomet nešifruoti šiuo raktu"
+
+#: ui/keyapprovaldialog.cpp:89
+#, kde-format
+msgid "Always Encrypt with This Key"
+msgstr "Visuomet šifruoti šiuo raktu"
+
+#: ui/keyapprovaldialog.cpp:90
+#, kde-format
+msgid "Encrypt Whenever Encryption is Possible"
+msgstr "Šifruoti visuomet, kai tai įmanoma"
+
+#: ui/keyapprovaldialog.cpp:91
+#, kde-format
+msgid "Always Ask"
+msgstr "Visuomet klausti"
+
+#: ui/keyapprovaldialog.cpp:92
+#, kde-format
+msgid "Ask Whenever Encryption is Possible"
+msgstr "Klausti kai šifravimas galimas"
+
+#: ui/keyapprovaldialog.cpp:113
+#, kde-format
+msgid "Encryption Key Approval"
+msgstr "Šifravimo rakto patvirtinimas"
+
+#: ui/keyapprovaldialog.cpp:129
+#, kde-format
+msgid "The following keys will be used for encryption:"
+msgstr "Šifravimui bus naudojami šie raktai:"
+
+#: ui/keyapprovaldialog.cpp:145
+#, kde-format
+msgid "Your keys:"
+msgstr "Jūsų raktai:"
+
+#: ui/keyapprovaldialog.cpp:157
+#, kde-format
+msgid "Recipient:"
+msgstr "Gavėjas:"
+
+#: ui/keyapprovaldialog.cpp:162
+#, kde-format
+msgid "Encryption keys:"
+msgstr "Šifravimo raktai:"
+
+#: ui/keyapprovaldialog.cpp:169
+#, kde-format
+msgid "Encryption preference:"
+msgstr "Šifravimo pasirinkimas:"
+
+#: ui/keyrequester.cpp:118
+#, kde-format
+msgid "Clear"
+msgstr "Valyti"
+
+#: ui/keyrequester.cpp:121
+#, kde-format
+msgid "Change..."
+msgstr "Pakeisti..."
+
+#: ui/keyrequester.cpp:232 ui/keyselectiondialog.cpp:256
+#, fuzzy, kde-kuit-format
+#| msgctxt "no specific preference"
+#| msgid "<placeholder>none</placeholder>"
+msgid "<placeholder>unknown</placeholder>"
+msgstr "<placeholder>joks</placeholder>"
+
+#: ui/keyrequester.cpp:246 ui/keyselectiondialog.cpp:657
+#, kde-format
+msgid ""
+"<qt><p>An error occurred while fetching the keys from the backend:</p><p><b>"
+"%1</b></p></qt>"
+msgstr "<qt><p>įvyko klaida gaunant raktus iš bazės:</p><p><b>%1</b></p></qt>"
+
+#: ui/keyrequester.cpp:251 ui/keyrequester.cpp:283 ui/keyrequester.cpp:306
+#: ui/keyselectiondialog.cpp:630 ui/keyselectiondialog.cpp:662
+#, kde-format
+msgid "Key Listing Failed"
+msgstr ""
+
+#: ui/keyrequester.cpp:281
+#, kde-format
+msgid ""
+"The OpenPGP backend does not support listing keys. Check your installation."
+msgstr "OpenPGP bazė nepalaiko sąrašo raktų. Patikrinkite jūsų įdiegimą."
+
+#: ui/keyrequester.cpp:304
+#, kde-format
+msgid ""
+"The S/MIME backend does not support listing keys. Check your installation."
+msgstr "S/MIME bazė nepalaiko sąrašo raktų. Patikrinkite jūsų įdiegimą."
+
+#: ui/keyrequester.cpp:426
+#, kde-format
+msgid "OpenPGP Key Selection"
+msgstr "OpenPGP rakto pasirinkimas"
+
+#: ui/keyrequester.cpp:427
+#, kde-format
+msgid "Please select an OpenPGP key to use."
+msgstr "Prašome pasirinkti OpenPGP raktą naudojimui."
+
+#: ui/keyrequester.cpp:429
+#, kde-format
+msgid "S/MIME Key Selection"
+msgstr ""
+
+#: ui/keyrequester.cpp:430
+#, kde-format
+msgid "Please select an S/MIME key to use."
+msgstr ""
+
+#: ui/keyrequester.cpp:432
+#, kde-format
+msgid "Key Selection"
+msgstr ""
+
+#: ui/keyrequester.cpp:433
+#, kde-format
+msgid "Please select an (OpenPGP or S/MIME) key to use."
+msgstr ""
+
+#: ui/keyselectioncombo.cpp:195
+#, kde-format
+msgctxt "Name <email> (validity, type, created: date)"
+msgid "%1 (%2, %3, created: %4)"
+msgstr ""
+
+#: ui/keyselectioncombo.cpp:196
+#, kde-format
+msgctxt "Name <email>"
+msgid "%1 <%2>"
+msgstr ""
+
+#: ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "OpenPGP"
+msgstr ""
+
+#: ui/keyselectioncombo.cpp:347
+#, kde-format
+msgid "Loading keys ..."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:98
+#, kde-format
+msgid "The key is not valid."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:106
+#, kde-format
+msgid "The key is expired."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:110
+#, kde-format
+msgid "The key is revoked."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:114
+#, kde-format
+msgid "The key is disabled."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:122
+#, fuzzy, kde-format
+#| msgid "The following keys will be used for encryption:"
+msgid "The key is not designated for encryption."
+msgstr "Šifravimui bus naudojami šie raktai:"
+
+#: ui/keyselectiondialog.cpp:128
+#, kde-format
+msgid "The key is not designated for signing."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:134
+#, kde-format
+msgid "The key is not designated for certifying."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:140
+#, kde-format
+msgid "The key is not designated for authentication."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:148
+#, kde-format
+msgid "The key is not secret."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:163
+#, kde-format
+msgid "The key is not trusted enough."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:169
+#, kde-format
+msgid "The key can be used."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:230
+#, kde-format
+msgid "Key ID"
+msgstr "Rakto ID"
+
+#: ui/keyselectiondialog.cpp:231
+#, kde-format
+msgid "User ID"
+msgstr "Naudotojo ID"
+
+#: ui/keyselectiondialog.cpp:279
+#, kde-format
+msgid "never"
+msgstr "niekada"
+
+#: ui/keyselectiondialog.cpp:289 ui/keyselectiondialog.cpp:291
+#: ui/keyselectiondialog.cpp:300 ui/keyselectiondialog.cpp:302
+#, kde-format
+msgid "unknown"
+msgstr "nežinoma"
+
+#: ui/keyselectiondialog.cpp:289
+#, kde-format
+msgid "OpenPGP key for <b>%1</b>"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:291
+#, kde-format
+msgid "S/MIME key for <b>%1</b>"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:298
+#, kde-format
+msgctxt "Key creation date"
+msgid "Created"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:299
+#, kde-format
+msgctxt "Key Expiration date"
+msgid "Expiry"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:300
+#, kde-format
+msgctxt "Key fingerprint"
+msgid "Fingerprint"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:302
+#, kde-format
+msgctxt "Key issuer"
+msgid "Issuer"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:304
+#, kde-format
+msgctxt "Key status"
+msgid "Status"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:456
+#, kde-format
+msgid "Search for &External Certificates"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:470
+#, kde-format
+msgid "&Search for:"
+msgstr "Ko i&eškoti:"
+
+#: ui/keyselectiondialog.cpp:494
+#, kde-format
+msgid "&Remember choice"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:497
+#, kde-format
+msgid ""
+"<qt><p>If you check this box your choice will be stored and you will not be "
+"asked again.</p></qt>"
+msgstr ""
+"<qt><p>Jei pažymėsite šią dėžutę Jūsų pasirinkimas bus įsimintas ir ateityje "
+"to nebebus klausiama.</p></qt>"
+
+#: ui/keyselectiondialog.cpp:509
+#, kde-format
+msgid "&Reread Keys"
+msgstr "&Iš naujo perskaityti raktus"
+
+#: ui/keyselectiondialog.cpp:510
+#, kde-format
+msgid "&Start Certificate Manager"
+msgstr "&Paleisti liudijimų tvarkyklę"
+
+#: ui/keyselectiondialog.cpp:628
+#, kde-format
+msgid "No backends found for listing keys. Check your installation."
+msgstr "Nerasta bazių sąrašui raktų. Patikrinkite jūsų įdiegimą"
+
+#: ui/keyselectiondialog.cpp:644
+#, kde-format
+msgid "Could not start certificate manager; please check your installation."
+msgstr ""
+"Negalima paleisti sertifikavimo tvarkyklės; Patikrinkite ar tai įdiegta."
+
+#: ui/keyselectiondialog.cpp:646
+#, kde-format
+msgid "Certificate Manager Error"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Checking selected keys..."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Fetching keys..."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:731
+#, kde-format
+msgid ""
+"<qt>One backend returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgid_plural ""
+"<qt>%1 backends returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgstr[0] ""
+"<qt>Viena bazė grąžino sutrumpintą išvestį.<p>pakeistie visi galimi raktai "
+"yra parodyti</p></qt>"
+msgstr[1] ""
+"<qt>%1 bazės grąžino sutrumpintą išvestį.<p>Ne visi galimi raktai yra "
+"parodyti</p></qt>"
+msgstr[2] ""
+"<qt>%1 bazių grąžino sutrumpintą išvestį.<p>Ne visi galimi raktai yra "
+"parodyti</p></qt>"
+msgstr[3] ""
+"<qt>%1 bazė grąžino sutrumpintą išvestį.<p>Ne visi galimi raktai yra "
+"parodyti</p></qt>"
+
+#: ui/keyselectiondialog.cpp:736
+#, kde-format
+msgid "Key List Result"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:856
+#, kde-format
+msgid "Recheck Key"
+msgstr "Iš naujo tikrinti raktą"
+
+#: ui/messagebox.cpp:71
+#, kde-format
+msgid "Your system does not have support for GnuPG Audit Logs"
+msgstr ""
+
+#: ui/messagebox.cpp:72
+#, kde-format
+msgid "System Error"
+msgstr ""
+
+#: ui/messagebox.cpp:79
+#, kde-format
+msgid ""
+"An error occurred while trying to retrieve the GnuPG Audit Log:\n"
+"%1"
+msgstr ""
+
+#: ui/messagebox.cpp:81
+#, kde-format
+msgid "GnuPG Audit Log Error"
+msgstr ""
+
+#: ui/messagebox.cpp:88
+#, kde-format
+msgid "No GnuPG Audit Log available for this operation."
+msgstr ""
+
+#: ui/messagebox.cpp:89
+#, kde-format
+msgid "No GnuPG Audit Log"
+msgstr ""
+
+#: ui/messagebox.cpp:109 ui/messagebox.cpp:115
+#, kde-format
+msgid "GnuPG Audit Log Viewer"
+msgstr ""
+
+#: ui/messagebox.cpp:121
+#, kde-format
+msgid "Signing failed: %1"
+msgstr "Pasirašymas nepavyko: %1"
+
+#: ui/messagebox.cpp:122
+#, kde-format
+msgid "Signing successful"
+msgstr "Pasirašymas pavyko"
+
+#: ui/messagebox.cpp:133
+#, kde-format
+msgid "Encryption failed: %1"
+msgstr "Šifravimas nepavyko: %1"
+
+#: ui/messagebox.cpp:134
+#, kde-format
+msgid "Encryption successful"
+msgstr "Šifravimas pavyko"
+
+#: ui/messagebox.cpp:155
+#, kde-format
+msgid "Signing Result"
+msgstr "Pasirašymo rezultatas"
+
+#: ui/messagebox.cpp:167
+#, kde-format
+msgid "Signing Error"
+msgstr "Pasirašymo klaida"
+
+#: ui/messagebox.cpp:179 ui/messagebox.cpp:203
+#, kde-format
+msgid "Encryption Result"
+msgstr "Šifravimo rezultatas"
+
+#: ui/messagebox.cpp:191 ui/messagebox.cpp:215
+#, kde-format
+msgid "Encryption Error"
+msgstr "Šifravimo klaida"
+
+#: ui/messagebox.cpp:263
+#, kde-format
+msgid "&Show Audit Log"
+msgstr ""
+
+#: ui/progressdialog.cpp:91
+#, kde-format
+msgid "%1: %2"
+msgstr "%1: %2"
+
+#~ msgid "General"
+#~ msgstr "Bendri"
+
+#~ msgid "Chiasmus command line tool"
+#~ msgstr "Chiasmus komandų eilutės įrankis"
+
+#~ msgid "Unsupported protocol \"%1\""
+#~ msgstr "Nepalaikomas protokolas „%1“"
+
+#~ msgid "File \"%1\" does not exist or is not executable."
+#~ msgstr "Failas „%1“ neegzistuoja arba nėra vykdomasis."
+
+#~ msgid "Output from chiasmus"
+#~ msgstr "Išvestis iš 1 chiasmus"
+
+#~ msgid "Decryption failed: %1"
+#~ msgstr "Iššifravimas nepavyko: %1"
+
+#, fuzzy
+#~ msgid ""
+#~ "The following was received on stderr:\n"
+#~ "%1"
+#~ msgstr ""
+#~ "Įvyko klaida:\n"
+#~ "%1"
+
+#~ msgid "Failed to load %1: %2"
+#~ msgstr "Nepavyko įkelti %1: %2"
+
+#~ msgid "Scanning directory %1..."
+#~ msgstr "Skenuojamas aplankas %1..."
+
+#~ msgid "Please wait..."
+#~ msgstr "Lukterėkite..."
+
+#~ msgid "While scanning for %1 support in backend %2:"
+#~ msgstr "Kol skenuojama %1 palaikymo bazėje %2: "
+
+#~ msgctxt "progress info: \"%1 of %2\""
+#~ msgid "%1/%2"
+#~ msgstr "%1/%2"
--- /dev/null
+# translation of libkleopatra.po to Latvian
+# Copyright (C) YEAR This_file_is_part_of_KDE
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Viesturs Zarins <viesturs.zarins@mii.lu.lv>, 2008.
+# Viesturs Zariņš <viesturs.zarins@mii.lu.lv>, 2009.
+# Maris Nartiss <maris.kde@gmail.com>, 2009.
+msgid ""
+msgstr ""
+"Project-Id-Version: libkleopatra\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2017-07-12 06:56+0200\n"
+"PO-Revision-Date: 2009-08-18 11:04+0300\n"
+"Last-Translator: Maris Nartiss <maris.kde@gmail.com>\n"
+"Language-Team: Latvian <locale@laka.lv>\n"
+"Language: lv\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : "
+"2);\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: kleo/checksumdefinition.cpp:107
+#, kde-format
+msgid "Error in checksum definition %1: %2"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:157
+#, kde-format
+msgid "Cannot use both %f and | in '%1'"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:167
+#, kde-format
+msgid "Quoting error in '%1' entry"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:170
+#, kde-format
+msgid "'%1' too complex (would need shell)"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:174
+#, kde-format
+msgid "'%1' entry is empty/missing"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:183
+#, kde-format
+msgid "'%1' empty or not found"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:222
+#, kde-format
+msgid "'id' entry is empty/missing"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:225
+#, kde-format
+msgid "'output-file' entry is empty/missing"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:228
+#, kde-format
+msgid "'file-patterns' entry is empty/missing"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:395
+#, kde-format
+msgid "Caught unknown exception in group %1"
+msgstr ""
+
+#: kleo/dn.cpp:507
+#, kde-format
+msgid "Common name"
+msgstr "Parastais vārds"
+
+#: kleo/dn.cpp:508
+#, kde-format
+msgid "Surname"
+msgstr "Uzvārds"
+
+#: kleo/dn.cpp:509
+#, kde-format
+msgid "Given name"
+msgstr "Vārds"
+
+#: kleo/dn.cpp:510
+#, kde-format
+msgid "Location"
+msgstr "Vieta"
+
+#: kleo/dn.cpp:511
+#, kde-format
+msgid "Title"
+msgstr "Tituls"
+
+#: kleo/dn.cpp:512
+#, kde-format
+msgid "Organizational unit"
+msgstr "Organizatoriskā vienība"
+
+#: kleo/dn.cpp:513
+#, kde-format
+msgid "Organization"
+msgstr "Organizācija"
+
+#: kleo/dn.cpp:514
+#, kde-format
+msgid "Postal code"
+msgstr "Pasta indekss"
+
+#: kleo/dn.cpp:515
+#, kde-format
+msgid "Country code"
+msgstr "Valsts kods"
+
+#: kleo/dn.cpp:516
+#, kde-format
+msgid "State or province"
+msgstr "Štats vai province"
+
+#: kleo/dn.cpp:517
+#, kde-format
+msgid "Domain component"
+msgstr "Domēna komponente"
+
+#: kleo/dn.cpp:518
+#, kde-format
+msgid "Business category"
+msgstr "Biznesa kategorija"
+
+#: kleo/dn.cpp:519
+#, kde-format
+msgid "Email address"
+msgstr "E-pasta adrese"
+
+#: kleo/dn.cpp:520
+#, kde-format
+msgid "Mail address"
+msgstr "Pasta adrese"
+
+#: kleo/dn.cpp:521
+#, kde-format
+msgid "Mobile phone number"
+msgstr "Mobīlais telefons"
+
+#: kleo/dn.cpp:522
+#, kde-format
+msgid "Telephone number"
+msgstr "Telefons"
+
+#: kleo/dn.cpp:523
+#, kde-format
+msgid "Fax number"
+msgstr "Fakss"
+
+#: kleo/dn.cpp:524
+#, kde-format
+msgid "Street address"
+msgstr "Adrese"
+
+#: kleo/dn.cpp:525
+#, kde-format
+msgid "Unique ID"
+msgstr "Unikālais ID"
+
+#: kleo/enum.cpp:57
+#, kde-format
+msgid "Inline OpenPGP (deprecated)"
+msgstr "Iekļautais OpenPGP (novecojis)"
+
+#: kleo/enum.cpp:62
+#, kde-format
+msgid "OpenPGP/MIME"
+msgstr "OpenPGP/MIME"
+
+#: kleo/enum.cpp:67 ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "S/MIME"
+msgstr "S/MIME"
+
+#: kleo/enum.cpp:72
+#, kde-format
+msgid "S/MIME Opaque"
+msgstr "S/MIME Opaque"
+
+#: kleo/enum.cpp:104
+#, kde-format
+msgid "Any"
+msgstr "Jebkāds"
+
+#: kleo/enum.cpp:177
+#, kde-format
+msgid "Never Encrypt"
+msgstr "Nekad šifrēt"
+
+#: kleo/enum.cpp:179
+#, kde-format
+msgid "Always Encrypt"
+msgstr "Vienmēr šifrēt"
+
+#: kleo/enum.cpp:181
+#, kde-format
+msgid "Always Encrypt If Possible"
+msgstr "Šifrēt, kad vien iespējams"
+
+#: kleo/enum.cpp:183 kleo/enum.cpp:240
+#, kde-format
+msgid "Ask"
+msgstr "Vaicāt"
+
+#: kleo/enum.cpp:185 kleo/enum.cpp:242
+#, kde-format
+msgid "Ask Whenever Possible"
+msgstr "Vaicāt, kad vien iespējams"
+
+#: kleo/enum.cpp:187
+#, kde-kuit-format
+msgctxt "no specific preference"
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>nav</placeholder>"
+
+#: kleo/enum.cpp:234
+#, kde-format
+msgid "Never Sign"
+msgstr "Nekad neparakstīt"
+
+#: kleo/enum.cpp:236
+#, kde-format
+msgid "Always Sign"
+msgstr "Vienmēr parakstīt"
+
+#: kleo/enum.cpp:238
+#, kde-format
+msgid "Always Sign If Possible"
+msgstr "Parakstīt, kad vien iespējams"
+
+#: kleo/enum.cpp:244
+#, kde-format
+msgctxt "no specific preference"
+msgid "<none>"
+msgstr "<nav>"
+
+#: kleo/keyfiltermanager.cpp:85
+#, kde-format
+msgid "All Certificates"
+msgstr "Visi sertifikāti"
+
+#: kleo/keyfiltermanager.cpp:100
+#, kde-format
+msgid "My Certificates"
+msgstr "Mani sertifikāti"
+
+#: kleo/keyfiltermanager.cpp:118
+#, kde-format
+msgid "Trusted Certificates"
+msgstr "Uzticamie sertifikāti"
+
+#: kleo/keyfiltermanager.cpp:135
+#, fuzzy, kde-format
+#| msgid "Trusted Certificates"
+msgid "Fully Trusted Certificates"
+msgstr "Uzticamie sertifikāti"
+
+#: kleo/keyfiltermanager.cpp:152
+#, kde-format
+msgid "Other Certificates"
+msgstr "Citi sertifikāti"
+
+#: kleo/keyfiltermanager.cpp:166
+#, fuzzy, kde-format
+#| msgid "All Certificates"
+msgid "VS-compliant Certificates"
+msgstr "Visi sertifikāti"
+
+#: kleo/keyfiltermanager.cpp:184
+#, fuzzy, kde-format
+#| msgid "Trusted Certificates"
+msgid "Not validated Certificates"
+msgstr "Uzticamie sertifikāti"
+
+#: ui/auditlogviewer.cpp:49
+#, kde-format
+msgid "View GnuPG Audit Log"
+msgstr "Apskatīt GnuPG pārbaudes žurnālu"
+
+#: ui/auditlogviewer.cpp:53
+#, kde-format
+msgid "&Copy to Clipboard"
+msgstr "&Kopēt uz starpliktuvi"
+
+#: ui/auditlogviewer.cpp:59
+#, kde-format
+msgid "&Save to Disk..."
+msgstr "&Saglabāt uz diska..."
+
+#: ui/auditlogviewer.cpp:95
+#, kde-format
+msgid "Choose File to Save GnuPG Audit Log to"
+msgstr "Izvēlies failu, kurā saglabāt GnuPG pārbaudes žurnālu"
+
+#: ui/auditlogviewer.cpp:118
+#, kde-format
+msgid "Could not save to file \"%1\": %2"
+msgstr "Neizdevās saglabāt failā \"%1\": %2"
+
+#: ui/auditlogviewer.cpp:120
+#, kde-format
+msgid "File Save Error"
+msgstr "Failā saglabāšanas kļūda"
+
+#: ui/cryptoconfigdialog.cpp:44
+#, kde-format
+msgid "Configure GnuPG Backend"
+msgstr "Konfigurēt GnuPG aizmuguri"
+
+#: ui/cryptoconfigdialog.cpp:55
+#, kde-format
+msgid "&Reset"
+msgstr "&Atstatīt"
+
+#: ui/cryptoconfigmodule.cpp:160
+#, kde-format
+msgid "GpgConf Error"
+msgstr "GpgConf kļūda"
+
+#: ui/cryptoconfigmodule.cpp:216
+#, kde-format
+msgid ""
+"The gpgconf tool used to provide the information for this dialog does not "
+"seem to be installed properly. It did not return any components. Try running "
+"\"%1\" on the command line for more information."
+msgstr ""
+"Gpgconf rīks, ko izmanto šī loga informācijas iegūšanai izskatās ka nav "
+"korekti instalēts. Tas neatgrieza nevienu komponenti. Mēģiniet palaist "
+"komandrindā \"%1\", lai iegūtu vairāk informācijas."
+
+#: ui/cryptoconfigmodule.cpp:496
+#, kde-format
+msgctxt ""
+"Translate this to 'yes' or 'no' (use the English words!) depending on "
+"whether your language uses Sentence style capitalisation in GUI labels (yes) "
+"or not (no). Context: We get some backend strings in that have the wrong "
+"capitalizaion (in English, at least) so we need to force the first character "
+"to upper-case. It is this behaviour you can control for your language with "
+"this translation."
+msgid "yes"
+msgstr "yes"
+
+#: ui/cryptoconfigmodule.cpp:546
+#, kde-format
+msgid "0 - None"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:547
+#, kde-format
+msgid "1 - Basic"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:548
+#, kde-format
+msgid "2 - Verbose"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:549
+#, kde-format
+msgid "3 - More Verbose"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:550
+#, kde-format
+msgid "4 - All"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:559
+#, kde-format
+msgid "Set the debugging level to"
+msgstr "Iestatīt atkļūdošanas līmeni uz"
+
+#: ui/cryptoconfigmodule.cpp:787
+#, kde-format
+msgid "Show..."
+msgstr "Rādīt..."
+
+#: ui/cryptoconfigmodule.cpp:787 ui/cryptoconfigmodule.cpp:876
+#, kde-format
+msgid "Edit..."
+msgstr "Rediģēt..."
+
+#: ui/cryptoconfigmodule.cpp:841
+#, kde-format
+msgid "Configure LDAP Servers"
+msgstr "Konfigurēt LDAP serverus"
+
+#: ui/cryptoconfigmodule.cpp:862
+#, fuzzy, kde-format
+#| msgid "No server configured yet"
+msgid "None configured"
+msgstr "Nav konfigurēts neviens serveris"
+
+#: ui/cryptoconfigmodule.cpp:864
+#, kde-format
+msgid "1 server configured"
+msgid_plural "%1 servers configured"
+msgstr[0] "konfigurēts %1 serveris"
+msgstr[1] "konfigurēti %1 serveri"
+msgstr[2] "konfigurēti %1 serveru"
+
+#: ui/cryptoconfigmodule.cpp:879
+#, kde-format
+msgid "Use keyserver at"
+msgstr "Lietot atlsēgu serveri no"
+
+#: ui/cryptoconfigmodule.cpp:968
+#, kde-format
+msgid "Configure Keyservers"
+msgstr "Konfigurēt atslēgas serverus"
+
+#: ui/directoryserviceswidget.cpp:67
+#, kde-format
+msgctxt "default server name, keep it a valid domain name, ie. no spaces"
+msgid "server"
+msgstr "serveris"
+
+#: ui/directoryserviceswidget.cpp:95
+#, kde-format
+msgid "hkp"
+msgstr "hkp"
+
+#: ui/directoryserviceswidget.cpp:96
+#, kde-format
+msgid "http"
+msgstr "http"
+
+#: ui/directoryserviceswidget.cpp:97
+#, kde-format
+msgid "https"
+msgstr "https"
+
+#: ui/directoryserviceswidget.cpp:98
+#, kde-format
+msgid "ftp"
+msgstr "ftp"
+
+#: ui/directoryserviceswidget.cpp:99
+#, kde-format
+msgid "ftps"
+msgstr "ftps"
+
+#: ui/directoryserviceswidget.cpp:100
+#, kde-format
+msgid "ldap"
+msgstr "ldap"
+
+#: ui/directoryserviceswidget.cpp:101
+#, kde-format
+msgid "ldaps"
+msgstr "ldap"
+
+#: ui/directoryserviceswidget.cpp:588
+#, kde-format
+msgid "Server Name"
+msgstr "Servera nosaukums"
+
+#: ui/directoryserviceswidget.cpp:589
+#, kde-format
+msgid "Server Port"
+msgstr "Servera ports"
+
+#: ui/directoryserviceswidget.cpp:590
+#, kde-format
+msgid "Base DN"
+msgstr "Bāzes DN"
+
+#: ui/directoryserviceswidget.cpp:591
+#, kde-format
+msgid "User Name"
+msgstr "Lietotāja vārds"
+
+#: ui/directoryserviceswidget.cpp:592
+#, kde-format
+msgid "Password"
+msgstr "Parole"
+
+#: ui/directoryserviceswidget.cpp:614
+#, kde-format
+msgid "(read-only)"
+msgstr "(tikai lasāms)"
+
+#: ui/directoryserviceswidget.cpp:616
+#, kde-format
+msgctxt "amended tooltip; %1: original tooltip"
+msgid "%1 (read-only)"
+msgstr "%1 (tikai lasāms)"
+
+#: ui/directoryserviceswidget.cpp:739
+#, kde-format
+msgid ""
+"Enter the name or IP address of the server hosting the directory service."
+msgstr "Ievadiet direktorija servera nosaukumu vai IP adresi."
+
+#: ui/directoryserviceswidget.cpp:741
+#, kde-format
+msgid ""
+"<b>(Optional, the default is fine in most cases)</b> Pick the port number "
+"the directory service is listening on."
+msgstr ""
+"<b>(Neobligāts, parasti der noklusētais)</b> Norādiet direktorija servisa "
+"porta numuru."
+
+#: ui/directoryserviceswidget.cpp:744
+#, kde-format
+msgid ""
+"<b>(Only for LDAP)</b> Enter the base DN for this LDAP server to limit "
+"searches to only that subtree of the directory."
+msgstr ""
+"<b>(Tikai priekš LDAP)</b>Ievadiet Šī LDAP servera bāzes DN, lai ierobežotu "
+"meklēšanu tikai šajā direktorijā."
+
+#: ui/directoryserviceswidget.cpp:747
+#, kde-format
+msgid "<b>(Optional)</b> Enter your user name here, if needed."
+msgstr "<b>(Neobligāts)</b> Šeit ievadiet lietotājvārdu, ja nepieciešams."
+
+#: ui/directoryserviceswidget.cpp:749
+#, kde-format
+msgid ""
+"<b>(Optional, not recommended)</b> Enter your password here, if needed. Note "
+"that the password will be saved in the clear in a config file in your home "
+"directory."
+msgstr ""
+"<b>(Neobligāts, nav ieteicams)</b> Šeit ievadiet paroli, ja nepieciešams. "
+"Ņemiet vēra ka parole tiks saglabāta atklātā formā konfigurācijas failā jūsu "
+"mājas mapē."
+
+#. i18n: ectx: property (windowTitle), widget (QWidget, DirectoryServicesWidget)
+#: ui/directoryserviceswidget.ui:14
+#, kde-format
+msgid "Directory Services Configuration"
+msgstr "Direktoija pakalpojumu konfigurācija"
+
+#. i18n: ectx: property (text), widget (QLabel, pgpKSLabel)
+#: ui/directoryserviceswidget.ui:22
+#, fuzzy, kde-format
+#| msgid "OpenPGP Key Selection"
+msgid "OpenPGP Keyserver:"
+msgstr "OpenPGP atslēgas izvēle"
+
+#. i18n: ectx: property (title), widget (QGroupBox, x500LA)
+#: ui/directoryserviceswidget.ui:35
+#, fuzzy, kde-format
+#| msgid "Directory services:"
+msgid "X509 Directory services:"
+msgstr "Direktorija pakalpojumi:"
+
+#. i18n: ectx: property (whatsThis), widget (QTreeView, treeView)
+#: ui/directoryserviceswidget.ui:43
+#, fuzzy, kde-format
+#| msgid ""
+#| "This is a list of all directory services that are configured for use with "
+#| "X.509 and OpenPGP."
+msgid ""
+"This is a list of all directory services that are configured for use with "
+"X.509."
+msgstr ""
+"Šis ir visu direktorija pakalpojumu saraksts, kas ir konfigurēti "
+"izmantošanai ar X.509 un OpenPGP."
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:70
+#, kde-format
+msgid "Click to add a service"
+msgstr "Spiediet, lai pievienotu pakalpojumu"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:73
+#, kde-format
+msgid ""
+"Click this button to create a new directory service entry as a clone of the "
+"currently selected one (or with default values, if no other is selected). "
+"You can then configure details in the table on the left hand."
+msgstr ""
+"Spiediet šo pogu, lai izveidotu jaunu direktorija servisa ierakstu kā "
+"izvēlētā kopiju (vai ar noklusētajām vērtībam, ja nekas nav izvēlēts). Jūs "
+"varat konfigurēt detaļas kreisās puses tabulā."
+
+#. i18n: ectx: property (text), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:76
+#, kde-format
+msgid "New"
+msgstr "Jauns"
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:92
+#, kde-format
+msgid "Click to remove the currently selected service"
+msgstr "Spiediet, lai izņemtu izvēlēto servisu"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:95
+#, kde-format
+msgid ""
+"Click this button to remove the currently selected directory service. The "
+"change will only take effect once you acknowledge the main configuration "
+"dialog."
+msgstr ""
+"Spiediet šo pogu, lai izņemtu izvēlēto direktorija servisu. Izmaiņas stāsies "
+"spēkā tikai kad apstiprināsiet galveno konfigurācijas logu."
+
+#. i18n: ectx: property (text), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:98
+#, kde-format
+msgid "Delete"
+msgstr "Dzēst"
+
+#. i18n: ectx: property (whatsThis), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:128
+#, kde-format
+msgid ""
+"Use this option to switch display of username and password information on or "
+"off in the above table."
+msgstr ""
+"Izmantojiet šo iespēju, lai pārslēgtu lietotājvārda un paroles rādīšanu "
+"tabulā."
+
+#. i18n: ectx: property (text), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:131
+#, kde-format
+msgid "Show user and password information"
+msgstr "Rādīt lietotājvārdu un paroli"
+
+#: ui/dnattributeorderconfigwidget.cpp:73
+#, kde-format
+msgid "Description"
+msgstr "Apraksts"
+
+#: ui/dnattributeorderconfigwidget.cpp:91
+#, kde-format
+msgid "Available attributes:"
+msgstr "Pieejamie atribūti:"
+
+#: ui/dnattributeorderconfigwidget.cpp:92
+#, kde-format
+msgid "Current attribute order:"
+msgstr "Pašreizējā atribūtu kārtība:"
+
+#: ui/dnattributeorderconfigwidget.cpp:112
+#, kde-format
+msgid "All others"
+msgstr "Visi citi"
+
+#: ui/dnattributeorderconfigwidget.cpp:129
+#, kde-format
+msgid "Move to top"
+msgstr "Pārvietot uz augšējo"
+
+#: ui/dnattributeorderconfigwidget.cpp:130
+#, kde-format
+msgid "Move one up"
+msgstr "Pārvietot augšup"
+
+#: ui/dnattributeorderconfigwidget.cpp:131
+#, kde-format
+msgid "Remove from current attribute order"
+msgstr "Izņemt no atribūtu kārtības"
+
+#: ui/dnattributeorderconfigwidget.cpp:132
+#, kde-format
+msgid "Add to current attribute order"
+msgstr "Pievienot atribūtu kārtībai"
+
+#: ui/dnattributeorderconfigwidget.cpp:133
+#, kde-format
+msgid "Move one down"
+msgstr "Pārvietot lejup"
+
+#: ui/dnattributeorderconfigwidget.cpp:134
+#, kde-format
+msgid "Move to bottom"
+msgstr "Pārvietot uz apakšējo"
+
+#: ui/keyapprovaldialog.cpp:87
+#, kde-kuit-format
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>nav</placeholder>"
+
+#: ui/keyapprovaldialog.cpp:88
+#, kde-format
+msgid "Never Encrypt with This Key"
+msgstr "Nekad nešifrēt ar šo atslēgu"
+
+#: ui/keyapprovaldialog.cpp:89
+#, kde-format
+msgid "Always Encrypt with This Key"
+msgstr "Vienmēr šifrēt ar šo atslēgu"
+
+#: ui/keyapprovaldialog.cpp:90
+#, kde-format
+msgid "Encrypt Whenever Encryption is Possible"
+msgstr "Šifrēt, kad vien iespējams"
+
+#: ui/keyapprovaldialog.cpp:91
+#, kde-format
+msgid "Always Ask"
+msgstr "Vienmēr vaicāt"
+
+#: ui/keyapprovaldialog.cpp:92
+#, kde-format
+msgid "Ask Whenever Encryption is Possible"
+msgstr "Vaicāt kad vien iespējams šifrēt"
+
+#: ui/keyapprovaldialog.cpp:113
+#, kde-format
+msgid "Encryption Key Approval"
+msgstr "Šifrēšanas atslēgu apstiprināšana"
+
+#: ui/keyapprovaldialog.cpp:129
+#, kde-format
+msgid "The following keys will be used for encryption:"
+msgstr "Šīs atslēgtas tiks izmantotas šifrēšanai:"
+
+#: ui/keyapprovaldialog.cpp:145
+#, kde-format
+msgid "Your keys:"
+msgstr "Jūsu atslēgas:"
+
+#: ui/keyapprovaldialog.cpp:157
+#, kde-format
+msgid "Recipient:"
+msgstr "Saņēmējs:"
+
+#: ui/keyapprovaldialog.cpp:162
+#, kde-format
+msgid "Encryption keys:"
+msgstr "Šifrēšanas atslēgas:"
+
+#: ui/keyapprovaldialog.cpp:169
+#, kde-format
+msgid "Encryption preference:"
+msgstr "Šifrēšanas iestatījums:"
+
+#: ui/keyrequester.cpp:118
+#, kde-format
+msgid "Clear"
+msgstr "Notīrīt"
+
+#: ui/keyrequester.cpp:121
+#, kde-format
+msgid "Change..."
+msgstr "Mainīt..."
+
+#: ui/keyrequester.cpp:232 ui/keyselectiondialog.cpp:256
+#, kde-kuit-format
+msgid "<placeholder>unknown</placeholder>"
+msgstr "<placeholder>neiznāma</placeholder>"
+
+#: ui/keyrequester.cpp:246 ui/keyselectiondialog.cpp:657
+#, kde-format
+msgid ""
+"<qt><p>An error occurred while fetching the keys from the backend:</p><p><b>"
+"%1</b></p></qt>"
+msgstr ""
+"<qt><p>Gadījās kļūda mēģinot no aizmugures ielādēt atslēgas:</p><p><b>%1</"
+"b></p></qt>"
+
+#: ui/keyrequester.cpp:251 ui/keyrequester.cpp:283 ui/keyrequester.cpp:306
+#: ui/keyselectiondialog.cpp:630 ui/keyselectiondialog.cpp:662
+#, kde-format
+msgid "Key Listing Failed"
+msgstr "Neizdevās uzskaitīt atslēgas"
+
+#: ui/keyrequester.cpp:281
+#, kde-format
+msgid ""
+"The OpenPGP backend does not support listing keys. Check your installation."
+msgstr ""
+"OpenPGP aizmugure neatbalsta atslēgu uzskaitīšanu. Pārbaudiet savu "
+"instalāciju."
+
+#: ui/keyrequester.cpp:304
+#, kde-format
+msgid ""
+"The S/MIME backend does not support listing keys. Check your installation."
+msgstr ""
+"S/MIME aizmugure neatbalsta atslēgu uzskaitīšanu. Pārbaudiet savu "
+"instalāciju."
+
+#: ui/keyrequester.cpp:426
+#, kde-format
+msgid "OpenPGP Key Selection"
+msgstr "OpenPGP atslēgas izvēle"
+
+#: ui/keyrequester.cpp:427
+#, kde-format
+msgid "Please select an OpenPGP key to use."
+msgstr "Lūdzu norādiet izmantojamo OpenPGP atslēgu."
+
+#: ui/keyrequester.cpp:429
+#, kde-format
+msgid "S/MIME Key Selection"
+msgstr "OpenPGP atslēgas izvēle"
+
+#: ui/keyrequester.cpp:430
+#, kde-format
+msgid "Please select an S/MIME key to use."
+msgstr "Lūdzu norādiet izmantojamo S/MIME atslēgu."
+
+#: ui/keyrequester.cpp:432
+#, kde-format
+msgid "Key Selection"
+msgstr "Atslēgas izvēle"
+
+#: ui/keyrequester.cpp:433
+#, kde-format
+msgid "Please select an (OpenPGP or S/MIME) key to use."
+msgstr "Lūdzu norādiet izmantojamo (OpenPGP vai S/MIME) atslēgu."
+
+#: ui/keyselectioncombo.cpp:195
+#, kde-format
+msgctxt "Name <email> (validity, type, created: date)"
+msgid "%1 (%2, %3, created: %4)"
+msgstr ""
+
+#: ui/keyselectioncombo.cpp:196
+#, kde-format
+msgctxt "Name <email>"
+msgid "%1 <%2>"
+msgstr ""
+
+#: ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "OpenPGP"
+msgstr "OpenPGP"
+
+#: ui/keyselectioncombo.cpp:347
+#, fuzzy, kde-format
+#| msgid "Fetching keys..."
+msgid "Loading keys ..."
+msgstr "Ielādē atslēgas..."
+
+#: ui/keyselectiondialog.cpp:98
+#, kde-format
+msgid "The key is not valid."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:106
+#, kde-format
+msgid "The key is expired."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:110
+#, kde-format
+msgid "The key is revoked."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:114
+#, kde-format
+msgid "The key is disabled."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:122
+#, fuzzy, kde-format
+#| msgid "The following keys will be used for encryption:"
+msgid "The key is not designated for encryption."
+msgstr "Šīs atslēgtas tiks izmantotas šifrēšanai:"
+
+#: ui/keyselectiondialog.cpp:128
+#, kde-format
+msgid "The key is not designated for signing."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:134
+#, kde-format
+msgid "The key is not designated for certifying."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:140
+#, kde-format
+msgid "The key is not designated for authentication."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:148
+#, kde-format
+msgid "The key is not secret."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:163
+#, kde-format
+msgid "The key is not trusted enough."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:169
+#, kde-format
+msgid "The key can be used."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:230
+#, kde-format
+msgid "Key ID"
+msgstr "Atslēgas ID"
+
+#: ui/keyselectiondialog.cpp:231
+#, kde-format
+msgid "User ID"
+msgstr "Lietotāja ID"
+
+#: ui/keyselectiondialog.cpp:279
+#, kde-format
+msgid "never"
+msgstr "nekad"
+
+#: ui/keyselectiondialog.cpp:289 ui/keyselectiondialog.cpp:291
+#: ui/keyselectiondialog.cpp:300 ui/keyselectiondialog.cpp:302
+#, kde-format
+msgid "unknown"
+msgstr "nezināma"
+
+#: ui/keyselectiondialog.cpp:289
+#, kde-format
+msgid "OpenPGP key for <b>%1</b>"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:291
+#, kde-format
+msgid "S/MIME key for <b>%1</b>"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:298
+#, kde-format
+msgctxt "Key creation date"
+msgid "Created"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:299
+#, kde-format
+msgctxt "Key Expiration date"
+msgid "Expiry"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:300
+#, kde-format
+msgctxt "Key fingerprint"
+msgid "Fingerprint"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:302
+#, kde-format
+msgctxt "Key issuer"
+msgid "Issuer"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:304
+#, kde-format
+msgctxt "Key status"
+msgid "Status"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:456
+#, fuzzy, kde-format
+#| msgid "Other Certificates"
+msgid "Search for &External Certificates"
+msgstr "Citi sertifikāti"
+
+#: ui/keyselectiondialog.cpp:470
+#, kde-format
+msgid "&Search for:"
+msgstr "&Meklēt:"
+
+#: ui/keyselectiondialog.cpp:494
+#, kde-format
+msgid "&Remember choice"
+msgstr "&Atcerēties izvēli"
+
+#: ui/keyselectiondialog.cpp:497
+#, kde-format
+msgid ""
+"<qt><p>If you check this box your choice will be stored and you will not be "
+"asked again.</p></qt>"
+msgstr ""
+"<qt><p>Ja atzīmēsiet šo, jūsu izvēle tiks saglabāta un vairs netiks vaicāts."
+"</p></qt>"
+
+#: ui/keyselectiondialog.cpp:509
+#, kde-format
+msgid "&Reread Keys"
+msgstr "Pā&rielasīt atslēgas"
+
+#: ui/keyselectiondialog.cpp:510
+#, kde-format
+msgid "&Start Certificate Manager"
+msgstr "Palaist &sertifikātu pārvaldnieku"
+
+#: ui/keyselectiondialog.cpp:628
+#, kde-format
+msgid "No backends found for listing keys. Check your installation."
+msgstr ""
+"Nav atrasta neveina atslēgas uzskaitoša aizmugure. Pārbaudiet savu "
+"intalāciju."
+
+#: ui/keyselectiondialog.cpp:644
+#, kde-format
+msgid "Could not start certificate manager; please check your installation."
+msgstr ""
+"Neizdevās palaist sertifikātu pārvaldnieku. Lūdzu pārbaudiet savu "
+"instalāciju."
+
+#: ui/keyselectiondialog.cpp:646
+#, kde-format
+msgid "Certificate Manager Error"
+msgstr "Sertifikātu pārvaldnieka kļūda"
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Checking selected keys..."
+msgstr "Pārbauda izvēlētās atslēgas..."
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Fetching keys..."
+msgstr "Ielādē atslēgas..."
+
+#: ui/keyselectiondialog.cpp:731
+#, kde-format
+msgid ""
+"<qt>One backend returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgid_plural ""
+"<qt>%1 backends returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgstr[0] ""
+"<qt>%1 aizmugure atgrieza aprautu izvadu.<p>Ne visas pieejamās atslēgas ir "
+"parādītas</p></qt>"
+msgstr[1] ""
+"<qt>%1 aizmugures atgrieza aprautu izvadu.<p>Ne visas pieejamās atslēgas ir "
+"parādītas</p></qt>"
+msgstr[2] ""
+"<qt>%1 aizmugures atgrieza aprautu izvadu.<p>Ne visas pieejamās atslēgas ir "
+"parādītas</p></qt>"
+
+#: ui/keyselectiondialog.cpp:736
+#, kde-format
+msgid "Key List Result"
+msgstr "Atslēgu uzskaitīšanas rezultāts"
+
+#: ui/keyselectiondialog.cpp:856
+#, kde-format
+msgid "Recheck Key"
+msgstr "Pārbaudīt atslēgu"
+
+#: ui/messagebox.cpp:71
+#, kde-format
+msgid "Your system does not have support for GnuPG Audit Logs"
+msgstr "Jūsu sistēma neatbalsta GnuPG pārbaudes žurnālus"
+
+#: ui/messagebox.cpp:72
+#, kde-format
+msgid "System Error"
+msgstr "Sistēmas kļūda"
+
+#: ui/messagebox.cpp:79
+#, kde-format
+msgid ""
+"An error occurred while trying to retrieve the GnuPG Audit Log:\n"
+"%1"
+msgstr ""
+"Gadījās kļūda mēģinot iegūt GnuPG pārbaudes žurnālu:\n"
+"%1"
+
+#: ui/messagebox.cpp:81
+#, kde-format
+msgid "GnuPG Audit Log Error"
+msgstr "GnuPG pārbaudes žurnāla kļūda"
+
+#: ui/messagebox.cpp:88
+#, kde-format
+msgid "No GnuPG Audit Log available for this operation."
+msgstr "Šai darbībai nav pieejams GnuPG pārbaudes žurnāls"
+
+#: ui/messagebox.cpp:89
+#, kde-format
+msgid "No GnuPG Audit Log"
+msgstr "Nav GnuPG pārbaudes žurnāla"
+
+#: ui/messagebox.cpp:109 ui/messagebox.cpp:115
+#, kde-format
+msgid "GnuPG Audit Log Viewer"
+msgstr "GnuPG pārbaudes žurnāla skatītājs"
+
+#: ui/messagebox.cpp:121
+#, kde-format
+msgid "Signing failed: %1"
+msgstr "Neizdevās parakstīt: %1"
+
+#: ui/messagebox.cpp:122
+#, kde-format
+msgid "Signing successful"
+msgstr "Parakstīšana veiksmīga"
+
+#: ui/messagebox.cpp:133
+#, kde-format
+msgid "Encryption failed: %1"
+msgstr "Niezdevās šifrēt: %1"
+
+#: ui/messagebox.cpp:134
+#, kde-format
+msgid "Encryption successful"
+msgstr "Šifrēšana veiksmīga"
+
+#: ui/messagebox.cpp:155
+#, kde-format
+msgid "Signing Result"
+msgstr "Parakstīšanas rezultāts"
+
+#: ui/messagebox.cpp:167
+#, kde-format
+msgid "Signing Error"
+msgstr "Parakstīšanas kļūda"
+
+#: ui/messagebox.cpp:179 ui/messagebox.cpp:203
+#, kde-format
+msgid "Encryption Result"
+msgstr "Šifrēšanas rezultāts"
+
+#: ui/messagebox.cpp:191 ui/messagebox.cpp:215
+#, kde-format
+msgid "Encryption Error"
+msgstr "Šifrēšanas kļūda"
+
+#: ui/messagebox.cpp:263
+#, kde-format
+msgid "&Show Audit Log"
+msgstr "&Rādīt pārbaudes žurnālu"
+
+#: ui/progressdialog.cpp:91
+#, kde-format
+msgid "%1: %2"
+msgstr "%1: %2"
+
+#~ msgctxt "New X.509 Directory Server"
+#~ msgid "X.509"
+#~ msgstr "X.509"
+
+#~ msgctxt "New OpenPGP Directory Server"
+#~ msgid "OpenPGP"
+#~ msgstr "OpenPGP"
+
+#~ msgid "Scheme"
+#~ msgstr "Shēma"
+
+#~ msgid "X.509"
+#~ msgstr "X.509"
+
+#, fuzzy
+#~| msgid ""
+#~| "Select the access protocol (scheme) that the directory service is "
+#~| "available through."
+#~ msgid ""
+#~ "Select the access scheme (scheme) that the directory service is available "
+#~ "through."
+#~ msgstr ""
+#~ "Izvēlieties piekļuves protokolu (shēmu), ar kuru ir pieejams šis "
+#~ "direktorija serviss."
+
+#~ msgid ""
+#~ "Check this column if this directory service is providing S/MIME (X.509) "
+#~ "certificates."
+#~ msgstr ""
+#~ "Atzīmējiet šo kolonu, ja šis direktorija serviss piedāvā S/MIME (X.509) "
+#~ "sertifikātus."
+
+#~ msgid ""
+#~ "Check this column if this directory service is providing OpenPGP "
+#~ "certificates."
+#~ msgstr ""
+#~ "Atzīmējiet šo kolonu, ja šis direktorija serviss piedāvā OpenPGP "
+#~ "sertifikātus."
+
+#, fuzzy
+#~| msgid "None (no debugging at all)"
+#~ msgid "0 - None (no debugging at all)"
+#~ msgstr "Nav (nekādas atkļūdošanas)"
+
+#, fuzzy
+#~| msgid "Basic (some basic debug messages)"
+#~ msgid "1 - Basic (some basic debug messages)"
+#~ msgstr "Pamata (daži pamata atkļūdošanas paziņojumi)"
+
+#, fuzzy
+#~| msgid "Advanced (more verbose debug messages)"
+#~ msgid "2 - Advanced (more verbose debug messages)"
+#~ msgstr "Paplašināta (vairāk atkļūdošanas paziņojumu)"
+
+#, fuzzy
+#~| msgid "Expert (even more detailed messages)"
+#~ msgid "3 - Expert (even more detailed messages)"
+#~ msgstr "Eksperta (vēl detalizētāki paziņojumi)"
+
+#, fuzzy
+#~| msgid "Guru (all of the debug messages you can get)"
+#~ msgid "4 - Guru (all of the debug messages you can get)"
+#~ msgstr "Guru (visi pieejamie atkļūdošanas paziņojumi)"
+
+#~ msgid "General"
+#~ msgstr "Pamata"
+
+#~ msgid "Chiasmus"
+#~ msgstr "Chiasmus"
+
+#~ msgid "Chiasmus command line tool"
+#~ msgstr "Chiasmus komandrindas rīks"
+
+#~ msgid "Unsupported protocol \"%1\""
+#~ msgstr "Neatbalstīts protokols \"%1\""
+
+#~ msgid "File \"%1\" does not exist or is not executable."
+#~ msgstr "Fails \"%1\" nepastāv vai nav izpildāms."
+
+#~ msgid "Output from chiasmus"
+#~ msgstr "Chiasmus izvads"
+
+#~ msgid "Decryption failed: %1"
+#~ msgstr "Neizdevās atšifrēt: %1"
+
+#~ msgid ""
+#~ "The following was received on stderr:\n"
+#~ "%1"
+#~ msgstr ""
+#~ "Šis tika saņemts uz stderr:\n"
+#~ "
%1"
+
+#~ msgid "Failed to load %1: %2"
+#~ msgstr "Neizdevās ielādēt %1: %2"
+
+#~ msgid "Library does not contain the symbol \"Chiasmus\"."
+#~ msgstr "Bibliotēka nesatur simbolu \"Chiasmus\"."
+
+#~ msgid "Scanning directory %1..."
+#~ msgstr "Skenē mapi %1..."
+
+#~ msgid "GpgME"
+#~ msgstr "GpgME"
+
+#~ msgid "GPGME was compiled without support for %1."
+#~ msgstr "GPGME tika kompilēts bez %1 atbalsta."
+
+#~ msgid "Engine %1 is not installed properly."
+#~ msgstr "Dzinējs %1 nav korekti instalēts."
+
+#~ msgid "Engine %1 version %2 installed, but at least version %3 is required."
+#~ msgstr ""
+#~ "Ir instalēa %1 dzinēja versija %2, bet nepieciešama vismaz %3 versija."
+
+#~ msgid "Unknown problem with engine for protocol %1."
+#~ msgstr "Neiznāma problēma ar dzinēju %1 protokolam."
+
+#~ msgid "program terminated unexpectedly"
+#~ msgstr "programma negaidīti izgāja"
+
+#~ msgid "program not found or cannot be started"
+#~ msgstr "programma nav atrasta vai to nevar palaist"
+
+#~ msgid "<qt>Failed to execute gpgconf:<p>%1</p></qt>"
+#~ msgstr "<qt>Neizdevās izpildīt gpgconf:<p>%1</p></qt>"
+
+#~ msgid ""
+#~ "Could not start gpgconf.\n"
+#~ "Check that gpgconf is in the PATH and that it can be started."
+#~ msgstr ""
+#~ "Neizdevās palaist gpgconf.\n"
+#~ "
Pārbaudiet ka gpgconf ir jūsu PATH un ka to var palaist."
+
+#~ msgid "Error from gpgconf while saving configuration: %1"
+#~ msgstr "Kļūda no gpgconf, mēģinot saglabāt konfigurāciju: %1"
+
+#~ msgid "Generating DSA key..."
+#~ msgstr "Ģenerē DSA atslēgu..."
+
+#~ msgid "Generating ElGamal key..."
+#~ msgstr "Ģenerē EIGamal atslēgu..."
+
+#~ msgid "Searching for a large prime number..."
+#~ msgstr "Meklē lielu pirmskaitli..."
+
+#~ msgid ""
+#~ "Waiting for new entropy from random number generator (you might want to "
+#~ "exercise the harddisks or move the mouse)..."
+#~ msgstr ""
+#~ "Gaida vēl entropiju no nejaušo skaitļu ģeneratora (varat padarbināt "
+#~ "diskus vai pakustināt peli)..."
+
+#~ msgid "Please wait..."
+#~ msgstr "Lūdzu, uzgaidiet..."
+
+#~ msgid ""
+#~ "Starting gpg-agent (you should consider starting a global instance "
+#~ "instead)..."
+#~ msgstr ""
+#~ "Palaiž gpg-agent (jums vajadzētu padomāt par globālas instances "
+#~ "darbināšanu)..."
+
+#~ msgid "While scanning for %1 support in backend %2:"
+#~ msgstr "Skenējot %1 atbalstu %2 aizmugurē :"
+
+#~ msgctxt "progress info: \"%1 of %2\""
+#~ msgid "%1/%2"
+#~ msgstr "%1/%2"
+
+#~ msgid ""
+#~ "OpenPGP key for %1\n"
+#~ "Created: %2\n"
+#~ "Expiry: %3\n"
+#~ "Fingerprint: %4"
+#~ msgstr ""
+#~ "OpenPGP atslēga priekš %1\n"
+#~ "
Izveidota: %2\n"
+#~ "
Derīga līdz: %3\n"
+#~ "
Pirkstu nosp.: %4"
+
+#~ msgid ""
+#~ "S/MIME key for %1\n"
+#~ "Created: %2\n"
+#~ "Expiry: %3\n"
+#~ "Fingerprint: %4\n"
+#~ "Issuer: %5"
+#~ msgstr ""
+#~ "S/MIME atslēga priekš %1\n"
+#~ "
Izveidota: %2\n"
+#~ "
Derīga līdz: %3\n"
+#~ "
Pirkstu nosp.: %4\n"
+#~ "
Izdevis: %5"
+
+#~ msgid "Copy Audit Log to Clipboard"
+#~ msgstr "Kopēt pārbaudes žurnālu uz starpliktuvi"
+
+#~ msgid "Add or Change Directory Service"
+#~ msgstr "Pievienot vai mainīt direktorija pakalpojumu"
+
+#~ msgid "&Server name:"
+#~ msgstr "&Servera nosaukums:"
+
+#~ msgid "389"
+#~ msgstr "389"
+
+#~ msgid "&User name (optional):"
+#~ msgstr "&Lietotāja vārds (neobligāts):"
+
+#~ msgid "Pass&word (optional):"
+#~ msgstr "&Parole (neobligāta):"
+
+#~ msgid "&OK"
+#~ msgstr "&Labi"
+
+#~ msgid "&Cancel"
+#~ msgstr "At&celt"
+
+#~ msgid "&Base DN:"
+#~ msgstr "&Bāzes DN:"
+
+#~ msgid "&Port:"
+#~ msgstr "&Ports:"
+
+#~ msgctxt "NAME OF TRANSLATORS"
+#~ msgid "Your names"
+#~ msgstr "Viesturs Zariņš"
+
+#~ msgctxt "EMAIL OF TRANSLATORS"
+#~ msgid "Your emails"
+#~ msgstr "viesturs.zarins@mii.lu.lv"
+
+#~ msgid "(Unknown Protocol)"
+#~ msgstr "(Nezināms protokols)"
+
+#~ msgid "Error while initializing plugin \"%1\""
+#~ msgstr "Kļūda inicializējot spraudni \"%1\""
+
+#~ msgid "failed"
+#~ msgstr "neizdevās"
+
+#~ msgctxt ""
+#~ "Items in Kleo::BackendConfigWidget listview (1: protocol; 2: "
+#~ "implementation name)"
+#~ msgid "%1 (%2)"
+#~ msgstr "%1 (%2)"
+
+#~ msgid "Available Backends"
+#~ msgstr "Pieejamās aizmugures"
+
+#~ msgid "Confi&gure..."
+#~ msgstr "Konfi&gurēt..."
+
+#~ msgid "Rescan"
+#~ msgstr "Pārskenēt"
+
+#~ msgid "The following problems where encountered during scanning:"
+#~ msgstr "Skenēšanas procesā tika sastaptas šādas problēmas:"
+
+#~ msgctxt "@title:window Results of the scanning"
+#~ msgid "Scan Results"
+#~ msgstr "Skenēšanas rezultāti"
--- /dev/null
+# Copyright (C) YEAR This_file_is_part_of_KDE
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Chetan Khona <chetan@kompkin.com>, 2013.
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2017-07-12 06:56+0200\n"
+"PO-Revision-Date: 2013-03-11 09:58+0530\n"
+"Last-Translator: Chetan Khona <chetan@kompkin.com>\n"
+"Language-Team: Marathi <kde-i18n-doc@kde.org>\n"
+"Language: mr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n!=1);\n"
+"X-Generator: Lokalize 1.5\n"
+
+#: kleo/checksumdefinition.cpp:107
+#, kde-format
+msgid "Error in checksum definition %1: %2"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:157
+#, kde-format
+msgid "Cannot use both %f and | in '%1'"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:167
+#, kde-format
+msgid "Quoting error in '%1' entry"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:170
+#, kde-format
+msgid "'%1' too complex (would need shell)"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:174
+#, kde-format
+msgid "'%1' entry is empty/missing"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:183
+#, kde-format
+msgid "'%1' empty or not found"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:222
+#, kde-format
+msgid "'id' entry is empty/missing"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:225
+#, kde-format
+msgid "'output-file' entry is empty/missing"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:228
+#, kde-format
+msgid "'file-patterns' entry is empty/missing"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:395
+#, kde-format
+msgid "Caught unknown exception in group %1"
+msgstr ""
+
+#: kleo/dn.cpp:507
+#, kde-format
+msgid "Common name"
+msgstr ""
+
+#: kleo/dn.cpp:508
+#, kde-format
+msgid "Surname"
+msgstr "आडनाव"
+
+#: kleo/dn.cpp:509
+#, kde-format
+msgid "Given name"
+msgstr ""
+
+#: kleo/dn.cpp:510
+#, kde-format
+msgid "Location"
+msgstr "स्थान"
+
+#: kleo/dn.cpp:511
+#, kde-format
+msgid "Title"
+msgstr "शिर्षक"
+
+#: kleo/dn.cpp:512
+#, kde-format
+msgid "Organizational unit"
+msgstr ""
+
+#: kleo/dn.cpp:513
+#, kde-format
+msgid "Organization"
+msgstr "संस्था"
+
+#: kleo/dn.cpp:514
+#, kde-format
+msgid "Postal code"
+msgstr ""
+
+#: kleo/dn.cpp:515
+#, kde-format
+msgid "Country code"
+msgstr ""
+
+#: kleo/dn.cpp:516
+#, kde-format
+msgid "State or province"
+msgstr ""
+
+#: kleo/dn.cpp:517
+#, kde-format
+msgid "Domain component"
+msgstr ""
+
+#: kleo/dn.cpp:518
+#, kde-format
+msgid "Business category"
+msgstr ""
+
+#: kleo/dn.cpp:519
+#, kde-format
+msgid "Email address"
+msgstr "इमेल पत्ता"
+
+#: kleo/dn.cpp:520
+#, kde-format
+msgid "Mail address"
+msgstr ""
+
+#: kleo/dn.cpp:521
+#, kde-format
+msgid "Mobile phone number"
+msgstr ""
+
+#: kleo/dn.cpp:522
+#, kde-format
+msgid "Telephone number"
+msgstr ""
+
+#: kleo/dn.cpp:523
+#, kde-format
+msgid "Fax number"
+msgstr ""
+
+#: kleo/dn.cpp:524
+#, kde-format
+msgid "Street address"
+msgstr ""
+
+#: kleo/dn.cpp:525
+#, kde-format
+msgid "Unique ID"
+msgstr ""
+
+#: kleo/enum.cpp:57
+#, kde-format
+msgid "Inline OpenPGP (deprecated)"
+msgstr ""
+
+#: kleo/enum.cpp:62
+#, kde-format
+msgid "OpenPGP/MIME"
+msgstr ""
+
+#: kleo/enum.cpp:67 ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "S/MIME"
+msgstr ""
+
+#: kleo/enum.cpp:72
+#, kde-format
+msgid "S/MIME Opaque"
+msgstr ""
+
+#: kleo/enum.cpp:104
+#, kde-format
+msgid "Any"
+msgstr ""
+
+#: kleo/enum.cpp:177
+#, kde-format
+msgid "Never Encrypt"
+msgstr ""
+
+#: kleo/enum.cpp:179
+#, kde-format
+msgid "Always Encrypt"
+msgstr ""
+
+#: kleo/enum.cpp:181
+#, kde-format
+msgid "Always Encrypt If Possible"
+msgstr ""
+
+#: kleo/enum.cpp:183 kleo/enum.cpp:240
+#, kde-format
+msgid "Ask"
+msgstr "विचारा"
+
+#: kleo/enum.cpp:185 kleo/enum.cpp:242
+#, kde-format
+msgid "Ask Whenever Possible"
+msgstr ""
+
+#: kleo/enum.cpp:187
+#, kde-kuit-format
+msgctxt "no specific preference"
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>काही नाही</placeholder>"
+
+#: kleo/enum.cpp:234
+#, kde-format
+msgid "Never Sign"
+msgstr ""
+
+#: kleo/enum.cpp:236
+#, kde-format
+msgid "Always Sign"
+msgstr ""
+
+#: kleo/enum.cpp:238
+#, kde-format
+msgid "Always Sign If Possible"
+msgstr ""
+
+#: kleo/enum.cpp:244
+#, kde-format
+msgctxt "no specific preference"
+msgid "<none>"
+msgstr ""
+
+#: kleo/keyfiltermanager.cpp:85
+#, kde-format
+msgid "All Certificates"
+msgstr ""
+
+#: kleo/keyfiltermanager.cpp:100
+#, kde-format
+msgid "My Certificates"
+msgstr ""
+
+#: kleo/keyfiltermanager.cpp:118
+#, kde-format
+msgid "Trusted Certificates"
+msgstr ""
+
+#: kleo/keyfiltermanager.cpp:135
+#, kde-format
+msgid "Fully Trusted Certificates"
+msgstr ""
+
+#: kleo/keyfiltermanager.cpp:152
+#, kde-format
+msgid "Other Certificates"
+msgstr ""
+
+#: kleo/keyfiltermanager.cpp:166
+#, kde-format
+msgid "VS-compliant Certificates"
+msgstr ""
+
+#: kleo/keyfiltermanager.cpp:184
+#, kde-format
+msgid "Not validated Certificates"
+msgstr ""
+
+#: ui/auditlogviewer.cpp:49
+#, kde-format
+msgid "View GnuPG Audit Log"
+msgstr ""
+
+#: ui/auditlogviewer.cpp:53
+#, kde-format
+msgid "&Copy to Clipboard"
+msgstr "प्रत क्लिपबोर्ड मधे टाका (&C)"
+
+#: ui/auditlogviewer.cpp:59
+#, kde-format
+msgid "&Save to Disk..."
+msgstr ""
+
+#: ui/auditlogviewer.cpp:95
+#, kde-format
+msgid "Choose File to Save GnuPG Audit Log to"
+msgstr ""
+
+#: ui/auditlogviewer.cpp:118
+#, kde-format
+msgid "Could not save to file \"%1\": %2"
+msgstr "या फाईल मध्ये साठवू शकत नाही - \"%1\": %2"
+
+#: ui/auditlogviewer.cpp:120
+#, kde-format
+msgid "File Save Error"
+msgstr ""
+
+#: ui/cryptoconfigdialog.cpp:44
+#, kde-format
+msgid "Configure GnuPG Backend"
+msgstr ""
+
+#: ui/cryptoconfigdialog.cpp:55
+#, kde-format
+msgid "&Reset"
+msgstr "पुन्हस्थापित करा (&R)"
+
+#: ui/cryptoconfigmodule.cpp:160
+#, kde-format
+msgid "GpgConf Error"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:216
+#, kde-format
+msgid ""
+"The gpgconf tool used to provide the information for this dialog does not "
+"seem to be installed properly. It did not return any components. Try running "
+"\"%1\" on the command line for more information."
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:496
+#, kde-format
+msgctxt ""
+"Translate this to 'yes' or 'no' (use the English words!) depending on "
+"whether your language uses Sentence style capitalisation in GUI labels (yes) "
+"or not (no). Context: We get some backend strings in that have the wrong "
+"capitalizaion (in English, at least) so we need to force the first character "
+"to upper-case. It is this behaviour you can control for your language with "
+"this translation."
+msgid "yes"
+msgstr "yes"
+
+#: ui/cryptoconfigmodule.cpp:546
+#, kde-format
+msgid "0 - None"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:547
+#, kde-format
+msgid "1 - Basic"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:548
+#, kde-format
+msgid "2 - Verbose"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:549
+#, kde-format
+msgid "3 - More Verbose"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:550
+#, kde-format
+msgid "4 - All"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:559
+#, kde-format
+msgid "Set the debugging level to"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:787
+#, kde-format
+msgid "Show..."
+msgstr "दर्शवा..."
+
+#: ui/cryptoconfigmodule.cpp:787 ui/cryptoconfigmodule.cpp:876
+#, kde-format
+msgid "Edit..."
+msgstr "संपादन...."
+
+#: ui/cryptoconfigmodule.cpp:841
+#, kde-format
+msgid "Configure LDAP Servers"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:862
+#, kde-format
+msgid "None configured"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:864
+#, kde-format
+msgid "1 server configured"
+msgid_plural "%1 servers configured"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ui/cryptoconfigmodule.cpp:879
+#, kde-format
+msgid "Use keyserver at"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:968
+#, kde-format
+msgid "Configure Keyservers"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:67
+#, kde-format
+msgctxt "default server name, keep it a valid domain name, ie. no spaces"
+msgid "server"
+msgstr "सर्व्हर"
+
+#: ui/directoryserviceswidget.cpp:95
+#, kde-format
+msgid "hkp"
+msgstr "hkp"
+
+#: ui/directoryserviceswidget.cpp:96
+#, kde-format
+msgid "http"
+msgstr "http"
+
+#: ui/directoryserviceswidget.cpp:97
+#, kde-format
+msgid "https"
+msgstr "https"
+
+#: ui/directoryserviceswidget.cpp:98
+#, kde-format
+msgid "ftp"
+msgstr "ftp"
+
+#: ui/directoryserviceswidget.cpp:99
+#, kde-format
+msgid "ftps"
+msgstr "ftps"
+
+#: ui/directoryserviceswidget.cpp:100
+#, kde-format
+msgid "ldap"
+msgstr "ldap"
+
+#: ui/directoryserviceswidget.cpp:101
+#, kde-format
+msgid "ldaps"
+msgstr "ldaps"
+
+#: ui/directoryserviceswidget.cpp:588
+#, kde-format
+msgid "Server Name"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:589
+#, kde-format
+msgid "Server Port"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:590
+#, kde-format
+msgid "Base DN"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:591
+#, kde-format
+msgid "User Name"
+msgstr "वापरकर्ता नाव"
+
+#: ui/directoryserviceswidget.cpp:592
+#, kde-format
+msgid "Password"
+msgstr "गुप्तशब्द"
+
+#: ui/directoryserviceswidget.cpp:614
+#, kde-format
+msgid "(read-only)"
+msgstr "(फक्त वाचण्यासाठी)"
+
+#: ui/directoryserviceswidget.cpp:616
+#, kde-format
+msgctxt "amended tooltip; %1: original tooltip"
+msgid "%1 (read-only)"
+msgstr "%1 (फक्त वाचण्यासाठी)"
+
+#: ui/directoryserviceswidget.cpp:739
+#, kde-format
+msgid ""
+"Enter the name or IP address of the server hosting the directory service."
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:741
+#, kde-format
+msgid ""
+"<b>(Optional, the default is fine in most cases)</b> Pick the port number "
+"the directory service is listening on."
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:744
+#, kde-format
+msgid ""
+"<b>(Only for LDAP)</b> Enter the base DN for this LDAP server to limit "
+"searches to only that subtree of the directory."
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:747
+#, kde-format
+msgid "<b>(Optional)</b> Enter your user name here, if needed."
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:749
+#, kde-format
+msgid ""
+"<b>(Optional, not recommended)</b> Enter your password here, if needed. Note "
+"that the password will be saved in the clear in a config file in your home "
+"directory."
+msgstr ""
+
+#. i18n: ectx: property (windowTitle), widget (QWidget, DirectoryServicesWidget)
+#: ui/directoryserviceswidget.ui:14
+#, kde-format
+msgid "Directory Services Configuration"
+msgstr ""
+
+#. i18n: ectx: property (text), widget (QLabel, pgpKSLabel)
+#: ui/directoryserviceswidget.ui:22
+#, kde-format
+msgid "OpenPGP Keyserver:"
+msgstr ""
+
+#. i18n: ectx: property (title), widget (QGroupBox, x500LA)
+#: ui/directoryserviceswidget.ui:35
+#, fuzzy, kde-format
+#| msgid "Directory services:"
+msgid "X509 Directory services:"
+msgstr "संचयीका सेवा :"
+
+#. i18n: ectx: property (whatsThis), widget (QTreeView, treeView)
+#: ui/directoryserviceswidget.ui:43
+#, kde-format
+msgid ""
+"This is a list of all directory services that are configured for use with "
+"X.509."
+msgstr ""
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:70
+#, kde-format
+msgid "Click to add a service"
+msgstr ""
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:73
+#, kde-format
+msgid ""
+"Click this button to create a new directory service entry as a clone of the "
+"currently selected one (or with default values, if no other is selected). "
+"You can then configure details in the table on the left hand."
+msgstr ""
+
+#. i18n: ectx: property (text), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:76
+#, kde-format
+msgid "New"
+msgstr "नवीन"
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:92
+#, kde-format
+msgid "Click to remove the currently selected service"
+msgstr ""
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:95
+#, kde-format
+msgid ""
+"Click this button to remove the currently selected directory service. The "
+"change will only take effect once you acknowledge the main configuration "
+"dialog."
+msgstr ""
+
+#. i18n: ectx: property (text), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:98
+#, kde-format
+msgid "Delete"
+msgstr "काढून टाका"
+
+#. i18n: ectx: property (whatsThis), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:128
+#, kde-format
+msgid ""
+"Use this option to switch display of username and password information on or "
+"off in the above table."
+msgstr ""
+
+#. i18n: ectx: property (text), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:131
+#, kde-format
+msgid "Show user and password information"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:73
+#, kde-format
+msgid "Description"
+msgstr "वर्णन"
+
+#: ui/dnattributeorderconfigwidget.cpp:91
+#, kde-format
+msgid "Available attributes:"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:92
+#, kde-format
+msgid "Current attribute order:"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:112
+#, kde-format
+msgid "All others"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:129
+#, kde-format
+msgid "Move to top"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:130
+#, kde-format
+msgid "Move one up"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:131
+#, kde-format
+msgid "Remove from current attribute order"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:132
+#, kde-format
+msgid "Add to current attribute order"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:133
+#, kde-format
+msgid "Move one down"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:134
+#, kde-format
+msgid "Move to bottom"
+msgstr ""
+
+#: ui/keyapprovaldialog.cpp:87
+#, kde-kuit-format
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>काही नाही</placeholder>"
+
+#: ui/keyapprovaldialog.cpp:88
+#, kde-format
+msgid "Never Encrypt with This Key"
+msgstr ""
+
+#: ui/keyapprovaldialog.cpp:89
+#, kde-format
+msgid "Always Encrypt with This Key"
+msgstr ""
+
+#: ui/keyapprovaldialog.cpp:90
+#, kde-format
+msgid "Encrypt Whenever Encryption is Possible"
+msgstr ""
+
+#: ui/keyapprovaldialog.cpp:91
+#, kde-format
+msgid "Always Ask"
+msgstr "नेहमी विचारा"
+
+#: ui/keyapprovaldialog.cpp:92
+#, kde-format
+msgid "Ask Whenever Encryption is Possible"
+msgstr ""
+
+#: ui/keyapprovaldialog.cpp:113
+#, kde-format
+msgid "Encryption Key Approval"
+msgstr ""
+
+#: ui/keyapprovaldialog.cpp:129
+#, kde-format
+msgid "The following keys will be used for encryption:"
+msgstr ""
+
+#: ui/keyapprovaldialog.cpp:145
+#, kde-format
+msgid "Your keys:"
+msgstr ""
+
+#: ui/keyapprovaldialog.cpp:157
+#, kde-format
+msgid "Recipient:"
+msgstr ""
+
+#: ui/keyapprovaldialog.cpp:162
+#, kde-format
+msgid "Encryption keys:"
+msgstr ""
+
+#: ui/keyapprovaldialog.cpp:169
+#, kde-format
+msgid "Encryption preference:"
+msgstr ""
+
+#: ui/keyrequester.cpp:118
+#, kde-format
+msgid "Clear"
+msgstr "पुसून टाका"
+
+#: ui/keyrequester.cpp:121
+#, kde-format
+msgid "Change..."
+msgstr "बदला..."
+
+#: ui/keyrequester.cpp:232 ui/keyselectiondialog.cpp:256
+#, kde-kuit-format
+msgid "<placeholder>unknown</placeholder>"
+msgstr "<placeholder>अपरिचीत</placeholder>"
+
+#: ui/keyrequester.cpp:246 ui/keyselectiondialog.cpp:657
+#, kde-format
+msgid ""
+"<qt><p>An error occurred while fetching the keys from the backend:</p><p><b>"
+"%1</b></p></qt>"
+msgstr ""
+
+#: ui/keyrequester.cpp:251 ui/keyrequester.cpp:283 ui/keyrequester.cpp:306
+#: ui/keyselectiondialog.cpp:630 ui/keyselectiondialog.cpp:662
+#, kde-format
+msgid "Key Listing Failed"
+msgstr ""
+
+#: ui/keyrequester.cpp:281
+#, kde-format
+msgid ""
+"The OpenPGP backend does not support listing keys. Check your installation."
+msgstr ""
+
+#: ui/keyrequester.cpp:304
+#, kde-format
+msgid ""
+"The S/MIME backend does not support listing keys. Check your installation."
+msgstr ""
+
+#: ui/keyrequester.cpp:426
+#, kde-format
+msgid "OpenPGP Key Selection"
+msgstr ""
+
+#: ui/keyrequester.cpp:427
+#, kde-format
+msgid "Please select an OpenPGP key to use."
+msgstr ""
+
+#: ui/keyrequester.cpp:429
+#, kde-format
+msgid "S/MIME Key Selection"
+msgstr ""
+
+#: ui/keyrequester.cpp:430
+#, kde-format
+msgid "Please select an S/MIME key to use."
+msgstr ""
+
+#: ui/keyrequester.cpp:432
+#, kde-format
+msgid "Key Selection"
+msgstr ""
+
+#: ui/keyrequester.cpp:433
+#, kde-format
+msgid "Please select an (OpenPGP or S/MIME) key to use."
+msgstr ""
+
+#: ui/keyselectioncombo.cpp:195
+#, kde-format
+msgctxt "Name <email> (validity, type, created: date)"
+msgid "%1 (%2, %3, created: %4)"
+msgstr ""
+
+#: ui/keyselectioncombo.cpp:196
+#, kde-format
+msgctxt "Name <email>"
+msgid "%1 <%2>"
+msgstr ""
+
+#: ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "OpenPGP"
+msgstr ""
+
+#: ui/keyselectioncombo.cpp:347
+#, kde-format
+msgid "Loading keys ..."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:98
+#, kde-format
+msgid "The key is not valid."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:106
+#, kde-format
+msgid "The key is expired."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:110
+#, kde-format
+msgid "The key is revoked."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:114
+#, kde-format
+msgid "The key is disabled."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:122
+#, kde-format
+msgid "The key is not designated for encryption."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:128
+#, kde-format
+msgid "The key is not designated for signing."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:134
+#, kde-format
+msgid "The key is not designated for certifying."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:140
+#, kde-format
+msgid "The key is not designated for authentication."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:148
+#, kde-format
+msgid "The key is not secret."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:163
+#, kde-format
+msgid "The key is not trusted enough."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:169
+#, kde-format
+msgid "The key can be used."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:230
+#, kde-format
+msgid "Key ID"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:231
+#, kde-format
+msgid "User ID"
+msgstr "वापरकर्ता ID :"
+
+#: ui/keyselectiondialog.cpp:279
+#, kde-format
+msgid "never"
+msgstr "कधीही नाही"
+
+#: ui/keyselectiondialog.cpp:289 ui/keyselectiondialog.cpp:291
+#: ui/keyselectiondialog.cpp:300 ui/keyselectiondialog.cpp:302
+#, kde-format
+msgid "unknown"
+msgstr "अपरिचीत"
+
+#: ui/keyselectiondialog.cpp:289
+#, kde-format
+msgid "OpenPGP key for <b>%1</b>"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:291
+#, kde-format
+msgid "S/MIME key for <b>%1</b>"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:298
+#, kde-format
+msgctxt "Key creation date"
+msgid "Created"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:299
+#, kde-format
+msgctxt "Key Expiration date"
+msgid "Expiry"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:300
+#, kde-format
+msgctxt "Key fingerprint"
+msgid "Fingerprint"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:302
+#, kde-format
+msgctxt "Key issuer"
+msgid "Issuer"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:304
+#, kde-format
+msgctxt "Key status"
+msgid "Status"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:456
+#, kde-format
+msgid "Search for &External Certificates"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:470
+#, kde-format
+msgid "&Search for:"
+msgstr "याकरिता शोधा (&S):"
+
+#: ui/keyselectiondialog.cpp:494
+#, kde-format
+msgid "&Remember choice"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:497
+#, kde-format
+msgid ""
+"<qt><p>If you check this box your choice will be stored and you will not be "
+"asked again.</p></qt>"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:509
+#, kde-format
+msgid "&Reread Keys"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:510
+#, kde-format
+msgid "&Start Certificate Manager"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:628
+#, kde-format
+msgid "No backends found for listing keys. Check your installation."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:644
+#, kde-format
+msgid "Could not start certificate manager; please check your installation."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:646
+#, kde-format
+msgid "Certificate Manager Error"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Checking selected keys..."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Fetching keys..."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:731
+#, kde-format
+msgid ""
+"<qt>One backend returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgid_plural ""
+"<qt>%1 backends returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ui/keyselectiondialog.cpp:736
+#, kde-format
+msgid "Key List Result"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:856
+#, kde-format
+msgid "Recheck Key"
+msgstr ""
+
+#: ui/messagebox.cpp:71
+#, kde-format
+msgid "Your system does not have support for GnuPG Audit Logs"
+msgstr ""
+
+#: ui/messagebox.cpp:72
+#, kde-format
+msgid "System Error"
+msgstr "प्रणाली त्रुटी"
+
+#: ui/messagebox.cpp:79
+#, kde-format
+msgid ""
+"An error occurred while trying to retrieve the GnuPG Audit Log:\n"
+"%1"
+msgstr ""
+
+#: ui/messagebox.cpp:81
+#, kde-format
+msgid "GnuPG Audit Log Error"
+msgstr ""
+
+#: ui/messagebox.cpp:88
+#, kde-format
+msgid "No GnuPG Audit Log available for this operation."
+msgstr ""
+
+#: ui/messagebox.cpp:89
+#, kde-format
+msgid "No GnuPG Audit Log"
+msgstr ""
+
+#: ui/messagebox.cpp:109 ui/messagebox.cpp:115
+#, kde-format
+msgid "GnuPG Audit Log Viewer"
+msgstr ""
+
+#: ui/messagebox.cpp:121
+#, kde-format
+msgid "Signing failed: %1"
+msgstr ""
+
+#: ui/messagebox.cpp:122
+#, kde-format
+msgid "Signing successful"
+msgstr ""
+
+#: ui/messagebox.cpp:133
+#, kde-format
+msgid "Encryption failed: %1"
+msgstr ""
+
+#: ui/messagebox.cpp:134
+#, kde-format
+msgid "Encryption successful"
+msgstr ""
+
+#: ui/messagebox.cpp:155
+#, kde-format
+msgid "Signing Result"
+msgstr ""
+
+#: ui/messagebox.cpp:167
+#, kde-format
+msgid "Signing Error"
+msgstr ""
+
+#: ui/messagebox.cpp:179 ui/messagebox.cpp:203
+#, kde-format
+msgid "Encryption Result"
+msgstr ""
+
+#: ui/messagebox.cpp:191 ui/messagebox.cpp:215
+#, kde-format
+msgid "Encryption Error"
+msgstr ""
+
+#: ui/messagebox.cpp:263
+#, kde-format
+msgid "&Show Audit Log"
+msgstr ""
+
+#: ui/progressdialog.cpp:91
+#, kde-format
+msgid "%1: %2"
+msgstr ""
+
+#~ msgctxt "New X.509 Directory Server"
+#~ msgid "X.509"
+#~ msgstr "X.509"
+
+#~ msgid "Scheme"
+#~ msgstr "सुत्रयोजना"
+
+#~ msgid "X.509"
+#~ msgstr "X.509"
+
+#~ msgid "General"
+#~ msgstr "सामान्य"
+
+#~ msgid "&OK"
+#~ msgstr "ठीक आहे (&O)"
+
+#~ msgid "&Cancel"
+#~ msgstr "रद्द करा (&C)"
+
+#~ msgid "&Port:"
+#~ msgstr "पोर्ट (&P):"
--- /dev/null
+# Translation of libkleopatra to Norwegian Bokmål
+#
+# Knut Yrvin <knut.yrvin@gmail.com>, 2004.
+# Torstein Dybdahl <torsted@runbox.no>, 2004.
+# Jørgen Grønlund <jorgenhg@broadpark.no>, 2004.
+# Bjørn Steensrud <bjornst@skogkatt.homelinux.org>, 2004, 2007, 2008, 2009, 2010.
+# Axel Bojer <fri_programvare@bojer.no>, 2005.
+# Nils Kristian Tomren <slx@nilsk.net>, 2005, 2007.
+# Espen Talberg <espental@gmail.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: libkleopatra\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2017-07-12 06:56+0200\n"
+"PO-Revision-Date: 2010-08-30 22:07+0200\n"
+"Last-Translator: Bjørn Steensrud <bjornst@skogkatt.homelinux.org>\n"
+"Language-Team: Norwegian Bokmål <i18n-nb@lister.ping.uio.no>\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.0\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Environment: kde\n"
+"X-Accelerator-Marker: &\n"
+"X-Text-Markup: kde4\n"
+
+#: kleo/checksumdefinition.cpp:107
+#, kde-format
+msgid "Error in checksum definition %1: %2"
+msgstr "Feil i sjekksumdefinisjon %1: %2"
+
+#: kleo/checksumdefinition.cpp:157
+#, kde-format
+msgid "Cannot use both %f and | in '%1'"
+msgstr "Kan ikke bruke både %f og | i «%1»"
+
+#: kleo/checksumdefinition.cpp:167
+#, kde-format
+msgid "Quoting error in '%1' entry"
+msgstr "Siteringsfeil i oppføringen «%1»"
+
+#: kleo/checksumdefinition.cpp:170
+#, kde-format
+msgid "'%1' too complex (would need shell)"
+msgstr "«%1» er for komplisert (ville trenge et skall)"
+
+#: kleo/checksumdefinition.cpp:174
+#, kde-format
+msgid "'%1' entry is empty/missing"
+msgstr "«%1»-oppføring er tom/mangler"
+
+#: kleo/checksumdefinition.cpp:183
+#, kde-format
+msgid "'%1' empty or not found"
+msgstr "«%1» er tom eller ikke funnet"
+
+#: kleo/checksumdefinition.cpp:222
+#, kde-format
+msgid "'id' entry is empty/missing"
+msgstr "«id»-oppføring er tom/mangler"
+
+#: kleo/checksumdefinition.cpp:225
+#, kde-format
+msgid "'output-file' entry is empty/missing"
+msgstr "«utdata-fil» er tom/mangler"
+
+#: kleo/checksumdefinition.cpp:228
+#, kde-format
+msgid "'file-patterns' entry is empty/missing"
+msgstr "«filmønstre» mangler eller er tomt"
+
+#: kleo/checksumdefinition.cpp:395
+#, kde-format
+msgid "Caught unknown exception in group %1"
+msgstr "Fanget opp ukjent avvik i gruppe %1"
+
+#: kleo/dn.cpp:507
+#, kde-format
+msgid "Common name"
+msgstr "Vanlig navn"
+
+#: kleo/dn.cpp:508
+#, kde-format
+msgid "Surname"
+msgstr "Etternavn"
+
+#: kleo/dn.cpp:509
+#, kde-format
+msgid "Given name"
+msgstr "Fornavn"
+
+#: kleo/dn.cpp:510
+#, kde-format
+msgid "Location"
+msgstr "Sted"
+
+#: kleo/dn.cpp:511
+#, kde-format
+msgid "Title"
+msgstr "Tittel"
+
+#: kleo/dn.cpp:512
+#, kde-format
+msgid "Organizational unit"
+msgstr "Organisasjonsenhet"
+
+#: kleo/dn.cpp:513
+#, kde-format
+msgid "Organization"
+msgstr "Organisasjon"
+
+#: kleo/dn.cpp:514
+#, kde-format
+msgid "Postal code"
+msgstr "Postnummer"
+
+#: kleo/dn.cpp:515
+#, kde-format
+msgid "Country code"
+msgstr "Landkode"
+
+#: kleo/dn.cpp:516
+#, kde-format
+msgid "State or province"
+msgstr "Stat eller provins"
+
+#: kleo/dn.cpp:517
+#, kde-format
+msgid "Domain component"
+msgstr "Domene-komponent"
+
+#: kleo/dn.cpp:518
+#, kde-format
+msgid "Business category"
+msgstr "Forretningskategori"
+
+#: kleo/dn.cpp:519
+#, kde-format
+msgid "Email address"
+msgstr "E-post-adresse"
+
+#: kleo/dn.cpp:520
+#, kde-format
+msgid "Mail address"
+msgstr "Postadresse"
+
+#: kleo/dn.cpp:521
+#, kde-format
+msgid "Mobile phone number"
+msgstr "Mobiltelefonnummer"
+
+#: kleo/dn.cpp:522
+#, kde-format
+msgid "Telephone number"
+msgstr "Telefonnummer"
+
+#: kleo/dn.cpp:523
+#, kde-format
+msgid "Fax number"
+msgstr "Faksnummer"
+
+#: kleo/dn.cpp:524
+#, kde-format
+msgid "Street address"
+msgstr "Gateadresse"
+
+#: kleo/dn.cpp:525
+#, kde-format
+msgid "Unique ID"
+msgstr "Entydig ID"
+
+#: kleo/enum.cpp:57
+#, kde-format
+msgid "Inline OpenPGP (deprecated)"
+msgstr "OpenPGP innebygd (frarådes)"
+
+#: kleo/enum.cpp:62
+#, kde-format
+msgid "OpenPGP/MIME"
+msgstr "OpenPGP/MIME"
+
+#: kleo/enum.cpp:67 ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "S/MIME"
+msgstr "S/MIME"
+
+#: kleo/enum.cpp:72
+#, kde-format
+msgid "S/MIME Opaque"
+msgstr "S/MIME-gjennomsiktig"
+
+#: kleo/enum.cpp:104
+#, kde-format
+msgid "Any"
+msgstr "Alle"
+
+#: kleo/enum.cpp:177
+#, kde-format
+msgid "Never Encrypt"
+msgstr "Krypter aldri"
+
+#: kleo/enum.cpp:179
+#, kde-format
+msgid "Always Encrypt"
+msgstr "Krypter alltid"
+
+#: kleo/enum.cpp:181
+#, kde-format
+msgid "Always Encrypt If Possible"
+msgstr "Krypter alltid hvis mulig"
+
+#: kleo/enum.cpp:183 kleo/enum.cpp:240
+#, kde-format
+msgid "Ask"
+msgstr "Spør"
+
+#: kleo/enum.cpp:185 kleo/enum.cpp:242
+#, kde-format
+msgid "Ask Whenever Possible"
+msgstr "Spør når det er mulig"
+
+#: kleo/enum.cpp:187
+#, kde-kuit-format
+msgctxt "no specific preference"
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>ingen</placeholder>"
+
+#: kleo/enum.cpp:234
+#, kde-format
+msgid "Never Sign"
+msgstr "Signer aldri"
+
+#: kleo/enum.cpp:236
+#, kde-format
+msgid "Always Sign"
+msgstr "Signer alltid"
+
+#: kleo/enum.cpp:238
+#, kde-format
+msgid "Always Sign If Possible"
+msgstr "Signer alltid hvis mulig"
+
+#: kleo/enum.cpp:244
+#, kde-format
+msgctxt "no specific preference"
+msgid "<none>"
+msgstr "<ingen>"
+
+#: kleo/keyfiltermanager.cpp:85
+#, kde-format
+msgid "All Certificates"
+msgstr "Alle sertifikat"
+
+#: kleo/keyfiltermanager.cpp:100
+#, kde-format
+msgid "My Certificates"
+msgstr "Mine sertifikat"
+
+#: kleo/keyfiltermanager.cpp:118
+#, kde-format
+msgid "Trusted Certificates"
+msgstr "Tiltrodde sertifikat"
+
+#: kleo/keyfiltermanager.cpp:135
+#, kde-format
+msgid "Fully Trusted Certificates"
+msgstr ""
+
+#: kleo/keyfiltermanager.cpp:152
+#, kde-format
+msgid "Other Certificates"
+msgstr "Andre sertifikat"
+
+#: kleo/keyfiltermanager.cpp:166
+#, kde-format
+msgid "VS-compliant Certificates"
+msgstr ""
+
+#: kleo/keyfiltermanager.cpp:184
+#, kde-format
+msgid "Not validated Certificates"
+msgstr ""
+
+#: ui/auditlogviewer.cpp:49
+#, kde-format
+msgid "View GnuPG Audit Log"
+msgstr "Vis GnuPG kontroll-logg"
+
+#: ui/auditlogviewer.cpp:53
+#, kde-format
+msgid "&Copy to Clipboard"
+msgstr "&Kopier til utklippstavla"
+
+#: ui/auditlogviewer.cpp:59
+#, kde-format
+msgid "&Save to Disk..."
+msgstr "&Lagre til disk …"
+
+#: ui/auditlogviewer.cpp:95
+#, kde-format
+msgid "Choose File to Save GnuPG Audit Log to"
+msgstr "Angi fila for lagring av GnuPG kontroll-logg"
+
+#: ui/auditlogviewer.cpp:118
+#, kde-format
+msgid "Could not save to file \"%1\": %2"
+msgstr "Kunne ikke lagre til fila «%1»: %2"
+
+#: ui/auditlogviewer.cpp:120
+#, kde-format
+msgid "File Save Error"
+msgstr "Feil ved lagring av fil"
+
+#: ui/cryptoconfigdialog.cpp:44
+#, kde-format
+msgid "Configure GnuPG Backend"
+msgstr "Sett opp GnuPG bakstykket"
+
+#: ui/cryptoconfigdialog.cpp:55
+#, kde-format
+msgid "&Reset"
+msgstr "&Tilbakestill"
+
+#: ui/cryptoconfigmodule.cpp:160
+#, kde-format
+msgid "GpgConf Error"
+msgstr "GpgConf-feil"
+
+#: ui/cryptoconfigmodule.cpp:216
+#, kde-format
+msgid ""
+"The gpgconf tool used to provide the information for this dialog does not "
+"seem to be installed properly. It did not return any components. Try running "
+"\"%1\" on the command line for more information."
+msgstr ""
+"Det ser ikke ut til at gpgconf-verktøyet er riktig installert; det brukes "
+"til å håndtere informasjon for dette dialogvinduet. Ingen komponenter ble "
+"hentet. Forsøk å kjøre «%1» på kommandolinja for å få mer informasjon."
+
+#: ui/cryptoconfigmodule.cpp:496
+#, kde-format
+msgctxt ""
+"Translate this to 'yes' or 'no' (use the English words!) depending on "
+"whether your language uses Sentence style capitalisation in GUI labels (yes) "
+"or not (no). Context: We get some backend strings in that have the wrong "
+"capitalizaion (in English, at least) so we need to force the first character "
+"to upper-case. It is this behaviour you can control for your language with "
+"this translation."
+msgid "yes"
+msgstr "yes"
+
+#: ui/cryptoconfigmodule.cpp:546
+#, kde-format
+msgid "0 - None"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:547
+#, kde-format
+msgid "1 - Basic"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:548
+#, kde-format
+msgid "2 - Verbose"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:549
+#, kde-format
+msgid "3 - More Verbose"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:550
+#, kde-format
+msgid "4 - All"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:559
+#, kde-format
+msgid "Set the debugging level to"
+msgstr "Sett feilsøkings-nivået til"
+
+#: ui/cryptoconfigmodule.cpp:787
+#, kde-format
+msgid "Show..."
+msgstr "Vis …"
+
+#: ui/cryptoconfigmodule.cpp:787 ui/cryptoconfigmodule.cpp:876
+#, kde-format
+msgid "Edit..."
+msgstr "Rediger …"
+
+#: ui/cryptoconfigmodule.cpp:841
+#, kde-format
+msgid "Configure LDAP Servers"
+msgstr "Sett opp LDAP-tjenere"
+
+#: ui/cryptoconfigmodule.cpp:862
+#, kde-format
+msgid "None configured"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:864
+#, kde-format
+msgid "1 server configured"
+msgid_plural "%1 servers configured"
+msgstr[0] "1 tjener satt opp"
+msgstr[1] "%1 tjenere satt opp"
+
+#: ui/cryptoconfigmodule.cpp:879
+#, kde-format
+msgid "Use keyserver at"
+msgstr "Bruk nøkkeltjeneren hos"
+
+#: ui/cryptoconfigmodule.cpp:968
+#, kde-format
+msgid "Configure Keyservers"
+msgstr "Sett opp nøkkeltjenere"
+
+#: ui/directoryserviceswidget.cpp:67
+#, kde-format
+msgctxt "default server name, keep it a valid domain name, ie. no spaces"
+msgid "server"
+msgstr "tjener"
+
+#: ui/directoryserviceswidget.cpp:95
+#, kde-format
+msgid "hkp"
+msgstr "hkp"
+
+#: ui/directoryserviceswidget.cpp:96
+#, kde-format
+msgid "http"
+msgstr "http"
+
+#: ui/directoryserviceswidget.cpp:97
+#, kde-format
+msgid "https"
+msgstr "https"
+
+#: ui/directoryserviceswidget.cpp:98
+#, kde-format
+msgid "ftp"
+msgstr "ftp"
+
+#: ui/directoryserviceswidget.cpp:99
+#, kde-format
+msgid "ftps"
+msgstr "ftps"
+
+#: ui/directoryserviceswidget.cpp:100
+#, kde-format
+msgid "ldap"
+msgstr "ldap"
+
+#: ui/directoryserviceswidget.cpp:101
+#, kde-format
+msgid "ldaps"
+msgstr "ldaps"
+
+#: ui/directoryserviceswidget.cpp:588
+#, kde-format
+msgid "Server Name"
+msgstr "Tjenernavn"
+
+#: ui/directoryserviceswidget.cpp:589
+#, kde-format
+msgid "Server Port"
+msgstr "Tjenerport"
+
+#: ui/directoryserviceswidget.cpp:590
+#, kde-format
+msgid "Base DN"
+msgstr "Base-DN"
+
+#: ui/directoryserviceswidget.cpp:591
+#, kde-format
+msgid "User Name"
+msgstr "Brukernavn"
+
+#: ui/directoryserviceswidget.cpp:592
+#, kde-format
+msgid "Password"
+msgstr "Passord"
+
+#: ui/directoryserviceswidget.cpp:614
+#, kde-format
+msgid "(read-only)"
+msgstr "(skrivebeskyttet)"
+
+#: ui/directoryserviceswidget.cpp:616
+#, kde-format
+msgctxt "amended tooltip; %1: original tooltip"
+msgid "%1 (read-only)"
+msgstr "%1 (skrivebeskyttet)"
+
+#: ui/directoryserviceswidget.cpp:739
+#, kde-format
+msgid ""
+"Enter the name or IP address of the server hosting the directory service."
+msgstr ""
+"Skriv inn navn eller IP-adresse til tjeneren som huser katalogtjenesten."
+
+#: ui/directoryserviceswidget.cpp:741
+#, kde-format
+msgid ""
+"<b>(Optional, the default is fine in most cases)</b> Pick the port number "
+"the directory service is listening on."
+msgstr ""
+"<b>(Valgfritt, standard oppsett er nok i de fleste tilfeller)</b> Angi "
+"porten som katalogtjenesten lytter på."
+
+#: ui/directoryserviceswidget.cpp:744
+#, kde-format
+msgid ""
+"<b>(Only for LDAP)</b> Enter the base DN for this LDAP server to limit "
+"searches to only that subtree of the directory."
+msgstr ""
+"<b>(Bare for LDAP)</b> Angi utgangspunkt (Base DN) for denne LDAP tjeneren "
+"for å begrense antall søk til en underkatalog i mappen."
+
+#: ui/directoryserviceswidget.cpp:747
+#, kde-format
+msgid "<b>(Optional)</b> Enter your user name here, if needed."
+msgstr "<b>(Valgfritt)</b> Angi brukernavn her, om nødvendig."
+
+#: ui/directoryserviceswidget.cpp:749
+#, kde-format
+msgid ""
+"<b>(Optional, not recommended)</b> Enter your password here, if needed. Note "
+"that the password will be saved in the clear in a config file in your home "
+"directory."
+msgstr ""
+"<b>(Valgfritt, ikke anbefalt)</b> Angi ditt passord her, om nødvendig. Vær "
+"oppmerksom på at passordet vil bli lagret i klartekst i konfigurasjonen som "
+"ligger i din hjemmemappe."
+
+#. i18n: ectx: property (windowTitle), widget (QWidget, DirectoryServicesWidget)
+#: ui/directoryserviceswidget.ui:14
+#, kde-format
+msgid "Directory Services Configuration"
+msgstr "Oppsett av katalogtjenester"
+
+#. i18n: ectx: property (text), widget (QLabel, pgpKSLabel)
+#: ui/directoryserviceswidget.ui:22
+#, kde-format
+msgid "OpenPGP Keyserver:"
+msgstr ""
+
+#. i18n: ectx: property (title), widget (QGroupBox, x500LA)
+#: ui/directoryserviceswidget.ui:35
+#, kde-format
+msgid "X509 Directory services:"
+msgstr ""
+
+#. i18n: ectx: property (whatsThis), widget (QTreeView, treeView)
+#: ui/directoryserviceswidget.ui:43
+#, kde-format
+msgid ""
+"This is a list of all directory services that are configured for use with "
+"X.509."
+msgstr ""
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:70
+#, kde-format
+msgid "Click to add a service"
+msgstr "Trykk for å legge til en tjeneste"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:73
+#, kde-format
+msgid ""
+"Click this button to create a new directory service entry as a clone of the "
+"currently selected one (or with default values, if no other is selected). "
+"You can then configure details in the table on the left hand."
+msgstr ""
+"Trykk på denne knappen for å lage en ny katalogtjeneste som er en klone av "
+"det nåværende valgte (eller med standard verdier, hvis ingen andre er "
+"valgt). Du kan deretter endre detaljene i tabellen på venstre side."
+
+#. i18n: ectx: property (text), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:76
+#, kde-format
+msgid "New"
+msgstr "Ny"
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:92
+#, kde-format
+msgid "Click to remove the currently selected service"
+msgstr "Trykk for å fjerne den tjenesten som er valgt"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:95
+#, kde-format
+msgid ""
+"Click this button to remove the currently selected directory service. The "
+"change will only take effect once you acknowledge the main configuration "
+"dialog."
+msgstr ""
+"Trykk på denne knappen for å fjerne den nåværende valgte katalogtjenesten. "
+"Endringa vil bli gjeldene etter at du bekrefter i dialogen med hoved "
+"innstillingene."
+
+#. i18n: ectx: property (text), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:98
+#, kde-format
+msgid "Delete"
+msgstr "Slett"
+
+#. i18n: ectx: property (whatsThis), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:128
+#, kde-format
+msgid ""
+"Use this option to switch display of username and password information on or "
+"off in the above table."
+msgstr ""
+"Bruk dette valget for å endre visningen av brukernavn og passord enten av "
+"eller på i tabellen ovenfor."
+
+#. i18n: ectx: property (text), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:131
+#, kde-format
+msgid "Show user and password information"
+msgstr "Vis bruker og passord informasjon"
+
+#: ui/dnattributeorderconfigwidget.cpp:73
+#, kde-format
+msgid "Description"
+msgstr "Beskrivelse"
+
+#: ui/dnattributeorderconfigwidget.cpp:91
+#, kde-format
+msgid "Available attributes:"
+msgstr "Tilgjengelige attributter:"
+
+#: ui/dnattributeorderconfigwidget.cpp:92
+#, kde-format
+msgid "Current attribute order:"
+msgstr "Gjeldende attributtrekkefølge:"
+
+#: ui/dnattributeorderconfigwidget.cpp:112
+#, kde-format
+msgid "All others"
+msgstr "Alle andre"
+
+#: ui/dnattributeorderconfigwidget.cpp:129
+#, kde-format
+msgid "Move to top"
+msgstr "Flytt til øverst"
+
+#: ui/dnattributeorderconfigwidget.cpp:130
+#, kde-format
+msgid "Move one up"
+msgstr "Flytt én opp"
+
+#: ui/dnattributeorderconfigwidget.cpp:131
+#, kde-format
+msgid "Remove from current attribute order"
+msgstr "Fjern fra gjeldende attributtrekkefølge"
+
+#: ui/dnattributeorderconfigwidget.cpp:132
+#, kde-format
+msgid "Add to current attribute order"
+msgstr "Legg til til gjeldende attributtrekkefølge"
+
+#: ui/dnattributeorderconfigwidget.cpp:133
+#, kde-format
+msgid "Move one down"
+msgstr "Flytt én ned"
+
+#: ui/dnattributeorderconfigwidget.cpp:134
+#, kde-format
+msgid "Move to bottom"
+msgstr "Flytt til nederst"
+
+#: ui/keyapprovaldialog.cpp:87
+#, kde-kuit-format
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>ingen</placeholder>"
+
+#: ui/keyapprovaldialog.cpp:88
+#, kde-format
+msgid "Never Encrypt with This Key"
+msgstr "Krypter aldri med denne nøkkelen"
+
+#: ui/keyapprovaldialog.cpp:89
+#, kde-format
+msgid "Always Encrypt with This Key"
+msgstr "Krypter alltid med denne nøkkelen"
+
+#: ui/keyapprovaldialog.cpp:90
+#, kde-format
+msgid "Encrypt Whenever Encryption is Possible"
+msgstr "Krypter alltid når det er mulig"
+
+#: ui/keyapprovaldialog.cpp:91
+#, kde-format
+msgid "Always Ask"
+msgstr "Spør alltid"
+
+#: ui/keyapprovaldialog.cpp:92
+#, kde-format
+msgid "Ask Whenever Encryption is Possible"
+msgstr "Spør alltid når kryptering er mulig"
+
+#: ui/keyapprovaldialog.cpp:113
+#, kde-format
+msgid "Encryption Key Approval"
+msgstr "Godkjenning av krypteringsnøkkel"
+
+#: ui/keyapprovaldialog.cpp:129
+#, kde-format
+msgid "The following keys will be used for encryption:"
+msgstr "De følgende nøklene vil bli brukt for kryptering:"
+
+#: ui/keyapprovaldialog.cpp:145
+#, kde-format
+msgid "Your keys:"
+msgstr "Dine nøkler:"
+
+#: ui/keyapprovaldialog.cpp:157
+#, kde-format
+msgid "Recipient:"
+msgstr "Mottaker:"
+
+#: ui/keyapprovaldialog.cpp:162
+#, kde-format
+msgid "Encryption keys:"
+msgstr "Krypteringsnøkler:"
+
+#: ui/keyapprovaldialog.cpp:169
+#, kde-format
+msgid "Encryption preference:"
+msgstr "Krypteringsvalg:"
+
+#: ui/keyrequester.cpp:118
+#, kde-format
+msgid "Clear"
+msgstr "Nullstill"
+
+#: ui/keyrequester.cpp:121
+#, kde-format
+msgid "Change..."
+msgstr "Endre …"
+
+#: ui/keyrequester.cpp:232 ui/keyselectiondialog.cpp:256
+#, kde-kuit-format
+msgid "<placeholder>unknown</placeholder>"
+msgstr "<placeholder>ukjent</placeholder>"
+
+#: ui/keyrequester.cpp:246 ui/keyselectiondialog.cpp:657
+#, kde-format
+msgid ""
+"<qt><p>An error occurred while fetching the keys from the backend:</p><p><b>"
+"%1</b></p></qt>"
+msgstr ""
+"<qt><p> Det oppsto en feil da nøklene ble hentet fra motoren:</p><p><b>%1</"
+"b></p></qt>"
+
+#: ui/keyrequester.cpp:251 ui/keyrequester.cpp:283 ui/keyrequester.cpp:306
+#: ui/keyselectiondialog.cpp:630 ui/keyselectiondialog.cpp:662
+#, kde-format
+msgid "Key Listing Failed"
+msgstr "Nøkkelopplisting mislyktes"
+
+#: ui/keyrequester.cpp:281
+#, kde-format
+msgid ""
+"The OpenPGP backend does not support listing keys. Check your installation."
+msgstr "OpenPGP-motoren støtter ikke nøkkelliste. Sjekk installasjonen."
+
+#: ui/keyrequester.cpp:304
+#, kde-format
+msgid ""
+"The S/MIME backend does not support listing keys. Check your installation."
+msgstr "S/MIME-motoren støtter ikke nøkkelliste. Sjekk installasjonen."
+
+#: ui/keyrequester.cpp:426
+#, kde-format
+msgid "OpenPGP Key Selection"
+msgstr "Valg av OpenPGP-nøkkel"
+
+#: ui/keyrequester.cpp:427
+#, kde-format
+msgid "Please select an OpenPGP key to use."
+msgstr "Velg OpenPGP-nøkkelen som skal brukes."
+
+#: ui/keyrequester.cpp:429
+#, kde-format
+msgid "S/MIME Key Selection"
+msgstr "Valg av S/MIME-nøkkel"
+
+#: ui/keyrequester.cpp:430
+#, kde-format
+msgid "Please select an S/MIME key to use."
+msgstr "Velg en S/MIME-nøkkel som skal brukes."
+
+#: ui/keyrequester.cpp:432
+#, kde-format
+msgid "Key Selection"
+msgstr "Nøkkelvalg"
+
+#: ui/keyrequester.cpp:433
+#, kde-format
+msgid "Please select an (OpenPGP or S/MIME) key to use."
+msgstr "Velg en (OpenPGP eller S/MIME) nøkkel som skal brukes."
+
+#: ui/keyselectioncombo.cpp:195
+#, kde-format
+msgctxt "Name <email> (validity, type, created: date)"
+msgid "%1 (%2, %3, created: %4)"
+msgstr ""
+
+#: ui/keyselectioncombo.cpp:196
+#, kde-format
+msgctxt "Name <email>"
+msgid "%1 <%2>"
+msgstr ""
+
+#: ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "OpenPGP"
+msgstr "OpenPGP"
+
+#: ui/keyselectioncombo.cpp:347
+#, kde-format
+msgid "Loading keys ..."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:98
+#, kde-format
+msgid "The key is not valid."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:106
+#, kde-format
+msgid "The key is expired."
+msgstr "Nøkkelen er utløpt."
+
+#: ui/keyselectiondialog.cpp:110
+#, kde-format
+msgid "The key is revoked."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:114
+#, kde-format
+msgid "The key is disabled."
+msgstr "Nøkkelen er slått av."
+
+#: ui/keyselectiondialog.cpp:122
+#, kde-format
+msgid "The key is not designated for encryption."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:128
+#, kde-format
+msgid "The key is not designated for signing."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:134
+#, kde-format
+msgid "The key is not designated for certifying."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:140
+#, kde-format
+msgid "The key is not designated for authentication."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:148
+#, kde-format
+msgid "The key is not secret."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:163
+#, kde-format
+msgid "The key is not trusted enough."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:169
+#, kde-format
+msgid "The key can be used."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:230
+#, kde-format
+msgid "Key ID"
+msgstr "Nøkkel-ID"
+
+#: ui/keyselectiondialog.cpp:231
+#, kde-format
+msgid "User ID"
+msgstr "Bruker-ID"
+
+#: ui/keyselectiondialog.cpp:279
+#, kde-format
+msgid "never"
+msgstr "aldri"
+
+#: ui/keyselectiondialog.cpp:289 ui/keyselectiondialog.cpp:291
+#: ui/keyselectiondialog.cpp:300 ui/keyselectiondialog.cpp:302
+#, kde-format
+msgid "unknown"
+msgstr "ukjent"
+
+#: ui/keyselectiondialog.cpp:289
+#, kde-format
+msgid "OpenPGP key for <b>%1</b>"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:291
+#, kde-format
+msgid "S/MIME key for <b>%1</b>"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:298
+#, kde-format
+msgctxt "Key creation date"
+msgid "Created"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:299
+#, kde-format
+msgctxt "Key Expiration date"
+msgid "Expiry"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:300
+#, kde-format
+msgctxt "Key fingerprint"
+msgid "Fingerprint"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:302
+#, kde-format
+msgctxt "Key issuer"
+msgid "Issuer"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:304
+#, kde-format
+msgctxt "Key status"
+msgid "Status"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:456
+#, kde-format
+msgid "Search for &External Certificates"
+msgstr "Søk etter &eksterne sertifikater"
+
+#: ui/keyselectiondialog.cpp:470
+#, kde-format
+msgid "&Search for:"
+msgstr "&Søk etter:"
+
+#: ui/keyselectiondialog.cpp:494
+#, kde-format
+msgid "&Remember choice"
+msgstr "&Husk valget"
+
+#: ui/keyselectiondialog.cpp:497
+#, kde-format
+msgid ""
+"<qt><p>If you check this box your choice will be stored and you will not be "
+"asked again.</p></qt>"
+msgstr ""
+"<qt><p>Dersom du krysser av her, blir valget lagret slik at du ikke blir "
+"spurt igjen.</p></qt>"
+
+#: ui/keyselectiondialog.cpp:509
+#, kde-format
+msgid "&Reread Keys"
+msgstr "&Les nøkler om igjen"
+
+#: ui/keyselectiondialog.cpp:510
+#, kde-format
+msgid "&Start Certificate Manager"
+msgstr "&Start sertifikathåndterer"
+
+#: ui/keyselectiondialog.cpp:628
+#, kde-format
+msgid "No backends found for listing keys. Check your installation."
+msgstr "Fant ingen motor for nøkkelliste. Sjekk installasjonen."
+
+#: ui/keyselectiondialog.cpp:644
+#, kde-format
+msgid "Could not start certificate manager; please check your installation."
+msgstr "Klarte ikke starte sertifikathåndteringa. Kontroller installasjonen."
+
+#: ui/keyselectiondialog.cpp:646
+#, kde-format
+msgid "Certificate Manager Error"
+msgstr "Feil i sertifikathåndteringa"
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Checking selected keys..."
+msgstr "Undersøker valgte nøkler …"
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Fetching keys..."
+msgstr "Henter nøkler …"
+
+#: ui/keyselectiondialog.cpp:731
+#, kde-format
+msgid ""
+"<qt>One backend returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgid_plural ""
+"<qt>%1 backends returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgstr[0] ""
+"<qt>En motor ga avkuttet utdata. <p>Ikke alle tilgjengelige nøkler er vist</"
+"p></qt>"
+msgstr[1] ""
+"<qt>%1 motorer ga avkuttet utdata.<p>Ikke alle tilgjengelige nøkler er vist</"
+"p></qt>"
+
+#: ui/keyselectiondialog.cpp:736
+#, kde-format
+msgid "Key List Result"
+msgstr "Nøkkelliste-resultat"
+
+#: ui/keyselectiondialog.cpp:856
+#, kde-format
+msgid "Recheck Key"
+msgstr "Sjekk nøkkel om igjen"
+
+#: ui/messagebox.cpp:71
+#, kde-format
+msgid "Your system does not have support for GnuPG Audit Logs"
+msgstr "Ditt system støtter ikke GnuPG kontroll-logger"
+
+#: ui/messagebox.cpp:72
+#, kde-format
+msgid "System Error"
+msgstr "Systemfeil"
+
+#: ui/messagebox.cpp:79
+#, kde-format
+msgid ""
+"An error occurred while trying to retrieve the GnuPG Audit Log:\n"
+"%1"
+msgstr ""
+"Det oppsto en feil under forsøk på å hente GnuPG kontroll-loggen:\n"
+"%1"
+
+#: ui/messagebox.cpp:81
+#, kde-format
+msgid "GnuPG Audit Log Error"
+msgstr "Feil ved GnuPG kontroll-logg"
+
+#: ui/messagebox.cpp:88
+#, kde-format
+msgid "No GnuPG Audit Log available for this operation."
+msgstr "Ingen GnuPG kontroll-logg er tilgjengelig for denne handlinga."
+
+#: ui/messagebox.cpp:89
+#, kde-format
+msgid "No GnuPG Audit Log"
+msgstr "Ingen GnuPG kontroll-logg"
+
+#: ui/messagebox.cpp:109 ui/messagebox.cpp:115
+#, kde-format
+msgid "GnuPG Audit Log Viewer"
+msgstr "Loggviser for GnuPG kontroll-logg"
+
+#: ui/messagebox.cpp:121
+#, kde-format
+msgid "Signing failed: %1"
+msgstr "Signering mislyktes: %1"
+
+#: ui/messagebox.cpp:122
+#, kde-format
+msgid "Signing successful"
+msgstr "Signering var vellykket"
+
+#: ui/messagebox.cpp:133
+#, kde-format
+msgid "Encryption failed: %1"
+msgstr "Kryptering mislyktes: %1"
+
+#: ui/messagebox.cpp:134
+#, kde-format
+msgid "Encryption successful"
+msgstr "Kryptering var vellykket"
+
+#: ui/messagebox.cpp:155
+#, kde-format
+msgid "Signing Result"
+msgstr "Signeringsresultat"
+
+#: ui/messagebox.cpp:167
+#, kde-format
+msgid "Signing Error"
+msgstr "Signeringsfeil"
+
+#: ui/messagebox.cpp:179 ui/messagebox.cpp:203
+#, kde-format
+msgid "Encryption Result"
+msgstr "Krypteringsresultat"
+
+#: ui/messagebox.cpp:191 ui/messagebox.cpp:215
+#, kde-format
+msgid "Encryption Error"
+msgstr "Krypteringsfeil"
+
+#: ui/messagebox.cpp:263
+#, kde-format
+msgid "&Show Audit Log"
+msgstr "Vi&s kontroll-logg"
+
+#: ui/progressdialog.cpp:91
+#, kde-format
+msgid "%1: %2"
+msgstr "%1: %2"
--- /dev/null
+# Translation of libkleopatra.po to Low Saxon
+#
+# Sönke Dibbern <s_dibbern@web.de>, 2006, 2007, 2008, 2009.
+# Manfred Wiese <m.j.wiese@web.de>, 2010.
+msgid ""
+msgstr ""
+"Project-Id-Version: libkleopatra\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2017-07-12 06:56+0200\n"
+"PO-Revision-Date: 2010-09-13 05:42+0200\n"
+"Last-Translator: Manfred Wiese <m.j.wiese@web.de>\n"
+"Language-Team: Low Saxon <kde-i18n-nds@kde.org>\n"
+"Language: nds\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Lokalize 1.0\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+
+#: kleo/checksumdefinition.cpp:107
+#, kde-format
+msgid "Error in checksum definition %1: %2"
+msgstr "Fehler in Pröövsummdefinitschoon %1: %2"
+
+#: kleo/checksumdefinition.cpp:157
+#, kde-format
+msgid "Cannot use both %f and | in '%1'"
+msgstr "\"%f \"un \"|\" tohoop laat sik nich in \"%1\" bruken."
+
+#: kleo/checksumdefinition.cpp:167
+#, kde-format
+msgid "Quoting error in '%1' entry"
+msgstr "Indrag \"%1\" bargt Zitaatfehler."
+
+#: kleo/checksumdefinition.cpp:170
+#, kde-format
+msgid "'%1' too complex (would need shell)"
+msgstr "\"%1\" to vigeliensch (Konsool deit noot)"
+
+#: kleo/checksumdefinition.cpp:174
+#, kde-format
+msgid "'%1' entry is empty/missing"
+msgstr "Indrag \"%1\" is leddig oder fehlt."
+
+#: kleo/checksumdefinition.cpp:183
+#, kde-format
+msgid "'%1' empty or not found"
+msgstr "\"%1\" is leddig oder lett sik nich finnen."
+
+#: kleo/checksumdefinition.cpp:222
+#, kde-format
+msgid "'id' entry is empty/missing"
+msgstr "Indrag \"id\" is leddig oder fehlt."
+
+#: kleo/checksumdefinition.cpp:225
+#, kde-format
+msgid "'output-file' entry is empty/missing"
+msgstr "Indrag \"output-file\" is leddig oder fehlt."
+
+#: kleo/checksumdefinition.cpp:228
+#, kde-format
+msgid "'file-patterns' entry is empty/missing"
+msgstr "Indrag \"file-patterns\" is leddig oder fehlt."
+
+#: kleo/checksumdefinition.cpp:395
+#, kde-format
+msgid "Caught unknown exception in group %1"
+msgstr "Nich begäng Utnahm binnen Koppel \"%1\" affungen"
+
+#: kleo/dn.cpp:507
+#, kde-format
+msgid "Common name"
+msgstr "Allgemeen Naam"
+
+#: kleo/dn.cpp:508
+#, kde-format
+msgid "Surname"
+msgstr "Familiennaam"
+
+#: kleo/dn.cpp:509
+#, kde-format
+msgid "Given name"
+msgstr "Vörnaam"
+
+#: kleo/dn.cpp:510
+#, kde-format
+msgid "Location"
+msgstr "Oort"
+
+#: kleo/dn.cpp:511
+#, kde-format
+msgid "Title"
+msgstr "Titel"
+
+#: kleo/dn.cpp:512
+#, kde-format
+msgid "Organizational unit"
+msgstr "Afdelen"
+
+#: kleo/dn.cpp:513
+#, kde-format
+msgid "Organization"
+msgstr "Organisatschoon"
+
+#: kleo/dn.cpp:514
+#, kde-format
+msgid "Postal code"
+msgstr "Postleddtall"
+
+#: kleo/dn.cpp:515
+#, kde-format
+msgid "Country code"
+msgstr "Landkode"
+
+#: kleo/dn.cpp:516
+#, kde-format
+msgid "State or province"
+msgstr "Bundsland oder Provinz"
+
+#: kleo/dn.cpp:517
+#, kde-format
+msgid "Domain component"
+msgstr "Domäänkomponent"
+
+#: kleo/dn.cpp:518
+#, kde-format
+msgid "Business category"
+msgstr "Warf-Kategorie"
+
+#: kleo/dn.cpp:519
+#, kde-format
+msgid "Email address"
+msgstr "Nettpostadress"
+
+#: kleo/dn.cpp:520
+#, kde-format
+msgid "Mail address"
+msgstr "Postadress"
+
+#: kleo/dn.cpp:521
+#, kde-format
+msgid "Mobile phone number"
+msgstr "Mobilnummer"
+
+#: kleo/dn.cpp:522
+#, kde-format
+msgid "Telephone number"
+msgstr "Telefoonnummer"
+
+#: kleo/dn.cpp:523
+#, kde-format
+msgid "Fax number"
+msgstr "Faxnummer"
+
+#: kleo/dn.cpp:524
+#, kde-format
+msgid "Street address"
+msgstr "Straat"
+
+#: kleo/dn.cpp:525
+#, kde-format
+msgid "Unique ID"
+msgstr "Eensoortet ID"
+
+#: kleo/enum.cpp:57
+#, kde-format
+msgid "Inline OpenPGP (deprecated)"
+msgstr "Inbett OpenPGP (överhaalt)"
+
+#: kleo/enum.cpp:62
+#, kde-format
+msgid "OpenPGP/MIME"
+msgstr "OpenPGP/MIME"
+
+#: kleo/enum.cpp:67 ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "S/MIME"
+msgstr "S/MIME"
+
+#: kleo/enum.cpp:72
+#, kde-format
+msgid "S/MIME Opaque"
+msgstr "S/MIME kodeert"
+
+#: kleo/enum.cpp:104
+#, kde-format
+msgid "Any"
+msgstr "Jichtenseen"
+
+#: kleo/enum.cpp:177
+#, kde-format
+msgid "Never Encrypt"
+msgstr "Nienich verslöteln"
+
+#: kleo/enum.cpp:179
+#, kde-format
+msgid "Always Encrypt"
+msgstr "Jümmers verslöteln"
+
+#: kleo/enum.cpp:181
+#, kde-format
+msgid "Always Encrypt If Possible"
+msgstr "Jümmers verslöteln, wenn mööglich"
+
+#: kleo/enum.cpp:183 kleo/enum.cpp:240
+#, kde-format
+msgid "Ask"
+msgstr "Nafragen"
+
+#: kleo/enum.cpp:185 kleo/enum.cpp:242
+#, kde-format
+msgid "Ask Whenever Possible"
+msgstr "Jümmers nafragen, wenn mööglich"
+
+#: kleo/enum.cpp:187
+#, kde-kuit-format
+msgctxt "no specific preference"
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>keen</placeholder>"
+
+#: kleo/enum.cpp:234
+#, kde-format
+msgid "Never Sign"
+msgstr "Nienich ünnerschrieven"
+
+#: kleo/enum.cpp:236
+#, kde-format
+msgid "Always Sign"
+msgstr "Jümmers ünnerschrieven"
+
+#: kleo/enum.cpp:238
+#, kde-format
+msgid "Always Sign If Possible"
+msgstr "Jümmers ünnerschrieven, wenn mööglich"
+
+#: kleo/enum.cpp:244
+#, kde-format
+msgctxt "no specific preference"
+msgid "<none>"
+msgstr "<keen>"
+
+#: kleo/keyfiltermanager.cpp:85
+#, kde-format
+msgid "All Certificates"
+msgstr "All Zertifikaten"
+
+#: kleo/keyfiltermanager.cpp:100
+#, kde-format
+msgid "My Certificates"
+msgstr "Egen Zertifikaten"
+
+#: kleo/keyfiltermanager.cpp:118
+#, kde-format
+msgid "Trusted Certificates"
+msgstr "Troot Zertifikaten"
+
+#: kleo/keyfiltermanager.cpp:135
+#, fuzzy, kde-format
+#| msgid "Trusted Certificates"
+msgid "Fully Trusted Certificates"
+msgstr "Troot Zertifikaten"
+
+#: kleo/keyfiltermanager.cpp:152
+#, kde-format
+msgid "Other Certificates"
+msgstr "Anner Zertifikaten"
+
+#: kleo/keyfiltermanager.cpp:166
+#, fuzzy, kde-format
+#| msgid "All Certificates"
+msgid "VS-compliant Certificates"
+msgstr "All Zertifikaten"
+
+#: kleo/keyfiltermanager.cpp:184
+#, fuzzy, kde-format
+#| msgid "Trusted Certificates"
+msgid "Not validated Certificates"
+msgstr "Troot Zertifikaten"
+
+#: ui/auditlogviewer.cpp:49
+#, kde-format
+msgid "View GnuPG Audit Log"
+msgstr "GnuPG-Pröövlogbook ankieken"
+
+#: ui/auditlogviewer.cpp:53
+#, kde-format
+msgid "&Copy to Clipboard"
+msgstr "Na Twischenaflaag &koperen"
+
+#: ui/auditlogviewer.cpp:59
+#, kde-format
+msgid "&Save to Disk..."
+msgstr "Op Fastplaat &sekern..."
+
+#: ui/auditlogviewer.cpp:95
+#, kde-format
+msgid "Choose File to Save GnuPG Audit Log to"
+msgstr "GnuPG-Pröövlogbook sekern"
+
+#: ui/auditlogviewer.cpp:118
+#, kde-format
+msgid "Could not save to file \"%1\": %2"
+msgstr "Datei lett sik nich as \"%1\" sekern: %2"
+
+#: ui/auditlogviewer.cpp:120
+#, kde-format
+msgid "File Save Error"
+msgstr "Fehler bi't Sekern"
+
+#: ui/cryptoconfigdialog.cpp:44
+#, kde-format
+msgid "Configure GnuPG Backend"
+msgstr "GnuPG-Hülpprogramm instellen"
+
+#: ui/cryptoconfigdialog.cpp:55
+#, kde-format
+msgid "&Reset"
+msgstr "To&rüchsetten"
+
+#: ui/cryptoconfigmodule.cpp:160
+#, kde-format
+msgid "GpgConf Error"
+msgstr "GpgConf-Fehler"
+
+#: ui/cryptoconfigmodule.cpp:216
+#, kde-format
+msgid ""
+"The gpgconf tool used to provide the information for this dialog does not "
+"seem to be installed properly. It did not return any components. Try running "
+"\"%1\" on the command line for more information."
+msgstr ""
+"As't lett is dat Programm \"gpgconf\", dat de Informatschonen för dissen "
+"Dialoog praatstellt, nich propper installeert; dat hett keeneen Komponent "
+"torüchgeven. Versöök dat un föhr \"%1\" op de Konsool ut, wenn Du mehr weten "
+"wullt."
+
+#: ui/cryptoconfigmodule.cpp:496
+#, kde-format
+msgctxt ""
+"Translate this to 'yes' or 'no' (use the English words!) depending on "
+"whether your language uses Sentence style capitalisation in GUI labels (yes) "
+"or not (no). Context: We get some backend strings in that have the wrong "
+"capitalizaion (in English, at least) so we need to force the first character "
+"to upper-case. It is this behaviour you can control for your language with "
+"this translation."
+msgid "yes"
+msgstr "yes"
+
+#: ui/cryptoconfigmodule.cpp:546
+#, kde-format
+msgid "0 - None"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:547
+#, kde-format
+msgid "1 - Basic"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:548
+#, kde-format
+msgid "2 - Verbose"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:549
+#, kde-format
+msgid "3 - More Verbose"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:550
+#, kde-format
+msgid "4 - All"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:559
+#, kde-format
+msgid "Set the debugging level to"
+msgstr "Fehlersöök-Stoop fastleggen op"
+
+#: ui/cryptoconfigmodule.cpp:787
+#, kde-format
+msgid "Show..."
+msgstr "Wiesen..."
+
+#: ui/cryptoconfigmodule.cpp:787 ui/cryptoconfigmodule.cpp:876
+#, kde-format
+msgid "Edit..."
+msgstr "Bewerken..."
+
+#: ui/cryptoconfigmodule.cpp:841
+#, kde-format
+msgid "Configure LDAP Servers"
+msgstr "LDAP-Servers instellen"
+
+#: ui/cryptoconfigmodule.cpp:862
+#, fuzzy, kde-format
+#| msgid "No server configured yet"
+msgid "None configured"
+msgstr "Noch keen Server inricht"
+
+#: ui/cryptoconfigmodule.cpp:864
+#, kde-format
+msgid "1 server configured"
+msgid_plural "%1 servers configured"
+msgstr[0] "1 Server inricht"
+msgstr[1] "%1 Servers inricht"
+
+#: ui/cryptoconfigmodule.cpp:879
+#, kde-format
+msgid "Use keyserver at"
+msgstr "Dissen Slötelserver bruken:"
+
+#: ui/cryptoconfigmodule.cpp:968
+#, kde-format
+msgid "Configure Keyservers"
+msgstr "Slötelservers instellen"
+
+#: ui/directoryserviceswidget.cpp:67
+#, kde-format
+msgctxt "default server name, keep it a valid domain name, ie. no spaces"
+msgid "server"
+msgstr "server"
+
+#: ui/directoryserviceswidget.cpp:95
+#, kde-format
+msgid "hkp"
+msgstr "hkp"
+
+#: ui/directoryserviceswidget.cpp:96
+#, kde-format
+msgid "http"
+msgstr "http"
+
+#: ui/directoryserviceswidget.cpp:97
+#, kde-format
+msgid "https"
+msgstr "https"
+
+#: ui/directoryserviceswidget.cpp:98
+#, kde-format
+msgid "ftp"
+msgstr "ftp"
+
+#: ui/directoryserviceswidget.cpp:99
+#, kde-format
+msgid "ftps"
+msgstr "ftps"
+
+#: ui/directoryserviceswidget.cpp:100
+#, kde-format
+msgid "ldap"
+msgstr "ldap"
+
+#: ui/directoryserviceswidget.cpp:101
+#, kde-format
+msgid "ldaps"
+msgstr "ldaps"
+
+#: ui/directoryserviceswidget.cpp:588
+#, kde-format
+msgid "Server Name"
+msgstr "Servernaam"
+
+#: ui/directoryserviceswidget.cpp:589
+#, kde-format
+msgid "Server Port"
+msgstr "Server-Port"
+
+#: ui/directoryserviceswidget.cpp:590
+#, kde-format
+msgid "Base DN"
+msgstr "Wörtel-DN"
+
+#: ui/directoryserviceswidget.cpp:591
+#, kde-format
+msgid "User Name"
+msgstr "Brukernaam"
+
+#: ui/directoryserviceswidget.cpp:592
+#, kde-format
+msgid "Password"
+msgstr "Passwoort"
+
+#: ui/directoryserviceswidget.cpp:614
+#, kde-format
+msgid "(read-only)"
+msgstr "(bloots-leesbor)"
+
+#: ui/directoryserviceswidget.cpp:616
+#, kde-format
+msgctxt "amended tooltip; %1: original tooltip"
+msgid "%1 (read-only)"
+msgstr "%1 (bloots-leesbor)"
+
+#: ui/directoryserviceswidget.cpp:739
+#, kde-format
+msgid ""
+"Enter the name or IP address of the server hosting the directory service."
+msgstr ""
+"Den Naam oder de IP-Adress vun den Server ingeven, de den Vertekendeenst "
+"praatstellt"
+
+#: ui/directoryserviceswidget.cpp:741
+#, kde-format
+msgid ""
+"<b>(Optional, the default is fine in most cases)</b> Pick the port number "
+"the directory service is listening on."
+msgstr ""
+"<b>(Wahlwies, de Standardinstellen lett sik meist jümmers bruken)</b> De "
+"Port utsöken, achter de de Vertekendeenst luustert"
+
+#: ui/directoryserviceswidget.cpp:744
+#, kde-format
+msgid ""
+"<b>(Only for LDAP)</b> Enter the base DN for this LDAP server to limit "
+"searches to only that subtree of the directory."
+msgstr ""
+"<b>(Bloots bi LDAP)</b> Den Wörtel-DN för dissen LDAP-Server angeven, grenzt "
+"dat Söken op dissen Ünnerboom vun dat Verteken in."
+
+#: ui/directoryserviceswidget.cpp:747
+#, kde-format
+msgid "<b>(Optional)</b> Enter your user name here, if needed."
+msgstr "<b>(Wahlwies)</b> Dien Brukernaam angeven, wenn nödig."
+
+#: ui/directoryserviceswidget.cpp:749
+#, kde-format
+msgid ""
+"<b>(Optional, not recommended)</b> Enter your password here, if needed. Note "
+"that the password will be saved in the clear in a config file in your home "
+"directory."
+msgstr ""
+"<b>(Wahlwies, nich anraadt)</b> Dien Passwoort ingeven, wenn nödig. Beacht, "
+"dat Passwoort warrt as Kloortext na en Instellendatei binnen Dien "
+"Tohuusorner schreven."
+
+#. i18n: ectx: property (windowTitle), widget (QWidget, DirectoryServicesWidget)
+#: ui/directoryserviceswidget.ui:14
+#, kde-format
+msgid "Directory Services Configuration"
+msgstr "Vertekendeensten instellen"
+
+#. i18n: ectx: property (text), widget (QLabel, pgpKSLabel)
+#: ui/directoryserviceswidget.ui:22
+#, fuzzy, kde-format
+#| msgid "OpenPGP Key Selection"
+msgid "OpenPGP Keyserver:"
+msgstr "OpenPGP-Slötel utsöken"
+
+#. i18n: ectx: property (title), widget (QGroupBox, x500LA)
+#: ui/directoryserviceswidget.ui:35
+#, fuzzy, kde-format
+#| msgid "Directory services:"
+msgid "X509 Directory services:"
+msgstr "Vertekendeensten:"
+
+#. i18n: ectx: property (whatsThis), widget (QTreeView, treeView)
+#: ui/directoryserviceswidget.ui:43
+#, fuzzy, kde-format
+#| msgid ""
+#| "This is a list of all directory services that are configured for use with "
+#| "X.509 and OpenPGP."
+msgid ""
+"This is a list of all directory services that are configured for use with "
+"X.509."
+msgstr ""
+"Disse List wiest de Vertekendeensten, de för't Bruken mit X.509 un OpenPGP "
+"instellt sünd."
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:70
+#, kde-format
+msgid "Click to add a service"
+msgstr "Klick hier, wenn Du en Deenst tofögen wullt"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:73
+#, kde-format
+msgid ""
+"Click this button to create a new directory service entry as a clone of the "
+"currently selected one (or with default values, if no other is selected). "
+"You can then configure details in the table on the left hand."
+msgstr ""
+"Klick op dissen Knoop, wenn Du en nieg Vertekendeenst as en Kopie vun den "
+"opstunns utsöchten opstellen wullt (oder mit de Standardweerten, wenn keen "
+"utsöcht is). Du kannst de Enkelheiten denn binnen de Tabell linkerhand "
+"instellen."
+
+#. i18n: ectx: property (text), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:76
+#, kde-format
+msgid "New"
+msgstr "Nieg"
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:92
+#, kde-format
+msgid "Click to remove the currently selected service"
+msgstr "Klick hier, wenn Du den opstunns utsöchten Deenst wegmaken wullt"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:95
+#, kde-format
+msgid ""
+"Click this button to remove the currently selected directory service. The "
+"change will only take effect once you acknowledge the main configuration "
+"dialog."
+msgstr ""
+"Klick op dissen Knoop, wenn Du de den opstunns utsöchten Vertekendeenst "
+"wegmaken wullt. De Ännern warrt eerst bruukt, wenn Du den Hööft-"
+"Instellendialoog beglöven deist."
+
+#. i18n: ectx: property (text), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:98
+#, kde-format
+msgid "Delete"
+msgstr "Wegdoon"
+
+#. i18n: ectx: property (whatsThis), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:128
+#, kde-format
+msgid ""
+"Use this option to switch display of username and password information on or "
+"off in the above table."
+msgstr ""
+"Mit disse Optschoon kannst Du dat Wiesen vun Brukernaam un Passwoort binnen "
+"de Tabell baven an- un utmaken."
+
+#. i18n: ectx: property (text), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:131
+#, kde-format
+msgid "Show user and password information"
+msgstr "Bruker- un Passwoortinformatschonen wiesen"
+
+#: ui/dnattributeorderconfigwidget.cpp:73
+#, kde-format
+msgid "Description"
+msgstr "Beschrieven"
+
+#: ui/dnattributeorderconfigwidget.cpp:91
+#, kde-format
+msgid "Available attributes:"
+msgstr "Verföögbor Attributen:"
+
+#: ui/dnattributeorderconfigwidget.cpp:92
+#, kde-format
+msgid "Current attribute order:"
+msgstr "Aktuelle Attributreeg:"
+
+#: ui/dnattributeorderconfigwidget.cpp:112
+#, kde-format
+msgid "All others"
+msgstr "All anner"
+
+#: ui/dnattributeorderconfigwidget.cpp:129
+#, kde-format
+msgid "Move to top"
+msgstr "Heel na baven"
+
+#: ui/dnattributeorderconfigwidget.cpp:130
+#, kde-format
+msgid "Move one up"
+msgstr "Na baven"
+
+#: ui/dnattributeorderconfigwidget.cpp:131
+#, kde-format
+msgid "Remove from current attribute order"
+msgstr "Ut aktuelle Attributreeg wegmaken"
+
+#: ui/dnattributeorderconfigwidget.cpp:132
+#, kde-format
+msgid "Add to current attribute order"
+msgstr "Na aktuelle Attributreeg tofögen"
+
+#: ui/dnattributeorderconfigwidget.cpp:133
+#, kde-format
+msgid "Move one down"
+msgstr "Na nerrn"
+
+#: ui/dnattributeorderconfigwidget.cpp:134
+#, kde-format
+msgid "Move to bottom"
+msgstr "Heel na nerrn"
+
+#: ui/keyapprovaldialog.cpp:87
+#, kde-kuit-format
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>keen</placeholder>"
+
+#: ui/keyapprovaldialog.cpp:88
+#, kde-format
+msgid "Never Encrypt with This Key"
+msgstr "Nienich mit dissen Slötel verslöteln"
+
+#: ui/keyapprovaldialog.cpp:89
+#, kde-format
+msgid "Always Encrypt with This Key"
+msgstr "Jümmers mit dissen Slötel verslöteln"
+
+#: ui/keyapprovaldialog.cpp:90
+#, kde-format
+msgid "Encrypt Whenever Encryption is Possible"
+msgstr "Jümmers verslöteln, wenn dat mööglich is"
+
+#: ui/keyapprovaldialog.cpp:91
+#, kde-format
+msgid "Always Ask"
+msgstr "Jümmers nafragen"
+
+#: ui/keyapprovaldialog.cpp:92
+#, kde-format
+msgid "Ask Whenever Encryption is Possible"
+msgstr "Jümmers nafragen, wenn Verslöteln mööglich is"
+
+#: ui/keyapprovaldialog.cpp:113
+#, kde-format
+msgid "Encryption Key Approval"
+msgstr "Verslötel-Slötel beglöven"
+
+#: ui/keyapprovaldialog.cpp:129
+#, kde-format
+msgid "The following keys will be used for encryption:"
+msgstr "Mit disse Slötels warrt verslötelt:"
+
+#: ui/keyapprovaldialog.cpp:145
+#, kde-format
+msgid "Your keys:"
+msgstr "Dien Slötels:"
+
+#: ui/keyapprovaldialog.cpp:157
+#, kde-format
+msgid "Recipient:"
+msgstr "Adressaat:"
+
+#: ui/keyapprovaldialog.cpp:162
+#, kde-format
+msgid "Encryption keys:"
+msgstr "Verslötel-Slötels:"
+
+#: ui/keyapprovaldialog.cpp:169
+#, kde-format
+msgid "Encryption preference:"
+msgstr "Verslötel-Instellen:"
+
+#: ui/keyrequester.cpp:118
+#, kde-format
+msgid "Clear"
+msgstr "Leddig maken"
+
+#: ui/keyrequester.cpp:121
+#, kde-format
+msgid "Change..."
+msgstr "Ännern..."
+
+#: ui/keyrequester.cpp:232 ui/keyselectiondialog.cpp:256
+#, kde-kuit-format
+msgid "<placeholder>unknown</placeholder>"
+msgstr "<placeholder>nich begäng</placeholder>"
+
+#: ui/keyrequester.cpp:246 ui/keyselectiondialog.cpp:657
+#, kde-format
+msgid ""
+"<qt><p>An error occurred while fetching the keys from the backend:</p><p><b>"
+"%1</b></p></qt>"
+msgstr ""
+"<qt><p>Bi't Halen vun de Slötels vun dat Hölp-Programm geev dat disse "
+"Problemen:</p><p><b>%1</b></p></qt>"
+
+#: ui/keyrequester.cpp:251 ui/keyrequester.cpp:283 ui/keyrequester.cpp:306
+#: ui/keyselectiondialog.cpp:630 ui/keyselectiondialog.cpp:662
+#, kde-format
+msgid "Key Listing Failed"
+msgstr "Oplisten vun de Slötels fehlslaan"
+
+#: ui/keyrequester.cpp:281
+#, kde-format
+msgid ""
+"The OpenPGP backend does not support listing keys. Check your installation."
+msgstr ""
+"Dat Hölp-Programm för OpenPGP ünnerstütt dat Oplisten vun Slötels nich. "
+"Prööv bitte Dien Installatschoon."
+
+#: ui/keyrequester.cpp:304
+#, kde-format
+msgid ""
+"The S/MIME backend does not support listing keys. Check your installation."
+msgstr ""
+"Dat Hölp-Programm för S/MIME ünnerstütt dat Oplisten vun Slötels nich. Prööv "
+"bitte Dien Installatschoon."
+
+#: ui/keyrequester.cpp:426
+#, kde-format
+msgid "OpenPGP Key Selection"
+msgstr "OpenPGP-Slötel utsöken"
+
+#: ui/keyrequester.cpp:427
+#, kde-format
+msgid "Please select an OpenPGP key to use."
+msgstr "Söök bitte en OpenPGP-Slötel ut"
+
+#: ui/keyrequester.cpp:429
+#, kde-format
+msgid "S/MIME Key Selection"
+msgstr "S/MIME-Slötel utsöken"
+
+#: ui/keyrequester.cpp:430
+#, kde-format
+msgid "Please select an S/MIME key to use."
+msgstr "Söök bitte en S/MIME-Slötel ut"
+
+#: ui/keyrequester.cpp:432
+#, kde-format
+msgid "Key Selection"
+msgstr "Slötel utsöken"
+
+#: ui/keyrequester.cpp:433
+#, kde-format
+msgid "Please select an (OpenPGP or S/MIME) key to use."
+msgstr "Söök bitte en (OpenPGP- oder S/MIME-) Slötel ut"
+
+#: ui/keyselectioncombo.cpp:195
+#, kde-format
+msgctxt "Name <email> (validity, type, created: date)"
+msgid "%1 (%2, %3, created: %4)"
+msgstr ""
+
+#: ui/keyselectioncombo.cpp:196
+#, kde-format
+msgctxt "Name <email>"
+msgid "%1 <%2>"
+msgstr ""
+
+#: ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "OpenPGP"
+msgstr "OpenPGP"
+
+#: ui/keyselectioncombo.cpp:347
+#, fuzzy, kde-format
+#| msgid "Fetching keys..."
+msgid "Loading keys ..."
+msgstr "Slötels warrt haalt..."
+
+#: ui/keyselectiondialog.cpp:98
+#, kde-format
+msgid "The key is not valid."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:106
+#, kde-format
+msgid "The key is expired."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:110
+#, kde-format
+msgid "The key is revoked."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:114
+#, kde-format
+msgid "The key is disabled."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:122
+#, fuzzy, kde-format
+#| msgid "The following keys will be used for encryption:"
+msgid "The key is not designated for encryption."
+msgstr "Mit disse Slötels warrt verslötelt:"
+
+#: ui/keyselectiondialog.cpp:128
+#, kde-format
+msgid "The key is not designated for signing."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:134
+#, kde-format
+msgid "The key is not designated for certifying."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:140
+#, kde-format
+msgid "The key is not designated for authentication."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:148
+#, kde-format
+msgid "The key is not secret."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:163
+#, kde-format
+msgid "The key is not trusted enough."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:169
+#, kde-format
+msgid "The key can be used."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:230
+#, kde-format
+msgid "Key ID"
+msgstr "Slötel-ID"
+
+#: ui/keyselectiondialog.cpp:231
+#, kde-format
+msgid "User ID"
+msgstr "Bruker-ID"
+
+#: ui/keyselectiondialog.cpp:279
+#, kde-format
+msgid "never"
+msgstr "nienich"
+
+#: ui/keyselectiondialog.cpp:289 ui/keyselectiondialog.cpp:291
+#: ui/keyselectiondialog.cpp:300 ui/keyselectiondialog.cpp:302
+#, kde-format
+msgid "unknown"
+msgstr "nich begäng"
+
+#: ui/keyselectiondialog.cpp:289
+#, kde-format
+msgid "OpenPGP key for <b>%1</b>"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:291
+#, kde-format
+msgid "S/MIME key for <b>%1</b>"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:298
+#, kde-format
+msgctxt "Key creation date"
+msgid "Created"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:299
+#, kde-format
+msgctxt "Key Expiration date"
+msgid "Expiry"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:300
+#, kde-format
+msgctxt "Key fingerprint"
+msgid "Fingerprint"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:302
+#, kde-format
+msgctxt "Key issuer"
+msgid "Issuer"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:304
+#, kde-format
+msgctxt "Key status"
+msgid "Status"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:456
+#, kde-format
+msgid "Search for &External Certificates"
+msgstr "Na &extern Zertifikaten söken"
+
+#: ui/keyselectiondialog.cpp:470
+#, kde-format
+msgid "&Search for:"
+msgstr "&Söken na:"
+
+#: ui/keyselectiondialog.cpp:494
+#, kde-format
+msgid "&Remember choice"
+msgstr "Köör woh&ren"
+
+#: ui/keyselectiondialog.cpp:497
+#, kde-format
+msgid ""
+"<qt><p>If you check this box your choice will be stored and you will not be "
+"asked again.</p></qt>"
+msgstr ""
+"<qt><p>Wenn Du dit ankrüüzt, warrt Dien Köör wohrt un Du warrst nich "
+"nochmaal fraagt.</p></qt>"
+
+#: ui/keyselectiondialog.cpp:509
+#, kde-format
+msgid "&Reread Keys"
+msgstr "Slötels nie&g lesen"
+
+#: ui/keyselectiondialog.cpp:510
+#, kde-format
+msgid "&Start Certificate Manager"
+msgstr "&Zertifikaatpleger opropen"
+
+#: ui/keyselectiondialog.cpp:628
+#, kde-format
+msgid "No backends found for listing keys. Check your installation."
+msgstr ""
+"Keen Hölp-Programmen för't Oplisten vun Slötels funnen. Prööv bitte Dien "
+"Installatschoon."
+
+#: ui/keyselectiondialog.cpp:644
+#, kde-format
+msgid "Could not start certificate manager; please check your installation."
+msgstr ""
+"De Zertifikaatpleger lett sik nich starten, bitte prööv Dien Installatschoon."
+
+#: ui/keyselectiondialog.cpp:646
+#, kde-format
+msgid "Certificate Manager Error"
+msgstr "Zertifikaatpleger-Fehler"
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Checking selected keys..."
+msgstr "Utsöcht Slötels warrt pröövt..."
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Fetching keys..."
+msgstr "Slötels warrt haalt..."
+
+#: ui/keyselectiondialog.cpp:731
+#, kde-format
+msgid ""
+"<qt>One backend returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgid_plural ""
+"<qt>%1 backends returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgstr[0] ""
+"<qt>Een Hülpprogramm hett en afsneden Utgaav levert.<p>Nich all verföögbor "
+"Slötels warrt wiest.</p></qt>"
+msgstr[1] ""
+"<qt>%1 Hülpprogrammen hebbt en afsneden Utgaav levert.<p>Nch all verföögbore "
+"Sltels warrt wiest.</p></qt>"
+
+#: ui/keyselectiondialog.cpp:736
+#, kde-format
+msgid "Key List Result"
+msgstr "Resultaat vun't Slötel-Oplisten"
+
+#: ui/keyselectiondialog.cpp:856
+#, kde-format
+msgid "Recheck Key"
+msgstr "Slötel nieg pröven"
+
+#: ui/messagebox.cpp:71
+#, kde-format
+msgid "Your system does not have support for GnuPG Audit Logs"
+msgstr "Dien Systeem ünnerstütt GnuPG-Pröövlogböker nich"
+
+#: ui/messagebox.cpp:72
+#, kde-format
+msgid "System Error"
+msgstr "Systeemfehler"
+
+#: ui/messagebox.cpp:79
+#, kde-format
+msgid ""
+"An error occurred while trying to retrieve the GnuPG Audit Log:\n"
+"%1"
+msgstr ""
+"Dat geev en Fehler bi't Halen vun GnuPG sien Pröövlogbook:\n"
+"%1"
+
+#: ui/messagebox.cpp:81
+#, kde-format
+msgid "GnuPG Audit Log Error"
+msgstr "GnuPG-Pröövlogbook-Fehler"
+
+#: ui/messagebox.cpp:88
+#, kde-format
+msgid "No GnuPG Audit Log available for this operation."
+msgstr "För disse Akschoon is keen GnuPG-Pröövlogbook verföögbor"
+
+#: ui/messagebox.cpp:89
+#, kde-format
+msgid "No GnuPG Audit Log"
+msgstr "Keen GnuPG-Pröövlogbook"
+
+#: ui/messagebox.cpp:109 ui/messagebox.cpp:115
+#, kde-format
+msgid "GnuPG Audit Log Viewer"
+msgstr "Kieker för GnuPG-Pröövlogböker"
+
+#: ui/messagebox.cpp:121
+#, kde-format
+msgid "Signing failed: %1"
+msgstr "Ünnerschrieven fehlslaan: %1"
+
+#: ui/messagebox.cpp:122
+#, kde-format
+msgid "Signing successful"
+msgstr "Mit Spood ünnerschreven"
+
+#: ui/messagebox.cpp:133
+#, kde-format
+msgid "Encryption failed: %1"
+msgstr "Verslöteln fehlslaan: %1"
+
+#: ui/messagebox.cpp:134
+#, kde-format
+msgid "Encryption successful"
+msgstr "Mit Spood verslötelt"
+
+#: ui/messagebox.cpp:155
+#, kde-format
+msgid "Signing Result"
+msgstr "Ünnerschriev-Resultaat"
+
+#: ui/messagebox.cpp:167
+#, kde-format
+msgid "Signing Error"
+msgstr "Fehler bi't Ünnerschrieven"
+
+#: ui/messagebox.cpp:179 ui/messagebox.cpp:203
+#, kde-format
+msgid "Encryption Result"
+msgstr "Verslötel-Resultaat"
+
+#: ui/messagebox.cpp:191 ui/messagebox.cpp:215
+#, kde-format
+msgid "Encryption Error"
+msgstr "Fehler bi't Verslöteln"
+
+#: ui/messagebox.cpp:263
+#, kde-format
+msgid "&Show Audit Log"
+msgstr "Pröövlogbook &wiesen"
+
+#: ui/progressdialog.cpp:91
+#, kde-format
+msgid "%1: %2"
+msgstr "%1: %2"
+
+#~ msgctxt "New X.509 Directory Server"
+#~ msgid "X.509"
+#~ msgstr "X.509"
+
+#~ msgctxt "New OpenPGP Directory Server"
+#~ msgid "OpenPGP"
+#~ msgstr "OpenPGP"
+
+#~ msgid "Scheme"
+#~ msgstr "Protokoll"
+
+#~ msgid "X.509"
+#~ msgstr "X.509"
+
+#, fuzzy
+#~| msgid ""
+#~| "Select the access protocol (scheme) that the directory service is "
+#~| "available through."
+#~ msgid ""
+#~ "Select the access scheme (scheme) that the directory service is available "
+#~ "through."
+#~ msgstr "Dat Protokoll för't Togriepen op den Vertekendeenst fastleggen"
+
+#~ msgid ""
+#~ "Check this column if this directory service is providing S/MIME (X.509) "
+#~ "certificates."
+#~ msgstr ""
+#~ "Maak dissen Striep an, wenn de Vertekendeenst S/MIME-(X.509-)Zertifikaten "
+#~ "praatstellt"
+
+#~ msgid ""
+#~ "Check this column if this directory service is providing OpenPGP "
+#~ "certificates."
+#~ msgstr ""
+#~ "Maak dissen Striep an, wenn de Vertekendeenst OpenPGP-Zertifikaten "
+#~ "praatstellt"
+
+#~ msgid "0 - None (no debugging at all)"
+#~ msgstr "0 - Keen (gor keen Fehlersöök)"
+
+#~ msgid "1 - Basic (some basic debug messages)"
+#~ msgstr "1 - Eenfach (bloots wichtig Fehlersöök-Mellen)"
+
+#~ msgid "2 - Advanced (more verbose debug messages)"
+#~ msgstr "2 - Verwiedert (snackhaftig Fehlersöök)"
+
+#~ msgid "3 - Expert (even more detailed messages)"
+#~ msgstr "3 - Fachlüüd (vele Enkelheiten)"
+
+#~ msgid "4 - Guru (all of the debug messages you can get)"
+#~ msgstr "4 - Dokter (all Fehlersöök-Mellen)"
+
+#~ msgid "General"
+#~ msgstr "Allgemeen"
+
+#~ msgid "Chiasmus"
+#~ msgstr "Chiasmus"
+
+#~ msgid "Chiasmus command line tool"
+#~ msgstr "Chiasmus-Befehlsreegwarktüüch"
+
+#~ msgid "Unsupported protocol \"%1\""
+#~ msgstr "Nich ünnerstütt Protokoll: \"%1\""
+
+#~ msgid "File \"%1\" does not exist or is not executable."
+#~ msgstr "Dat gifft de Datei \"%1\" nich, oder se is nich utföhrbor."
+
+#~ msgid "Output from chiasmus"
+#~ msgstr "Chiasmus-Utgaav"
+
+#~ msgid "Decryption failed: %1"
+#~ msgstr "Opslöteln fehlslaan: %1"
+
+#~ msgid ""
+#~ "The following was received on stderr:\n"
+#~ "%1"
+#~ msgstr ""
+#~ "Dat Nakamen keem över de Standard-Fehlerutgaav (\"stderr\"):\n"
+#~ "%1"
+
+#~ msgid "Failed to load %1: %2"
+#~ msgstr "Fehler bi't Laden vun %1: %2"
+
+#~ msgid "Library does not contain the symbol \"Chiasmus\"."
+#~ msgstr "Bibliotheek bargt dat Symbool \"Chiasmus\" nich."
+
+#~ msgid "Scanning directory %1..."
+#~ msgstr "Orner %1 warrt dörkeken..."
+
+#~ msgid "GpgME"
+#~ msgstr "GpgME"
+
+#~ msgid "GPGME was compiled without support for %1."
+#~ msgstr "GpgME wöör ahn Ünnerstütten för %1 kompileert."
+
+#~ msgid "Engine %1 is not installed properly."
+#~ msgstr "Moduul %1 is nich richtig installeert."
+
+#~ msgid "Engine %1 version %2 installed, but at least version %3 is required."
+#~ msgstr ""
+#~ "Moduul %1 is in Verschoon %2 installeert, man tominnst Verschoon %3 warrt "
+#~ "bruukt."
+
+#~ msgid "Unknown problem with engine for protocol %1."
+#~ msgstr "Nich begäng Problem mit dat Moduul för't Protokoll %1"
+
+#~ msgid "program terminated unexpectedly"
+#~ msgstr "Programm hett sik unvermodens beendt"
+
+#~ msgid "program not found or cannot be started"
+#~ msgstr "Programm lett sik nich finnen oder nich opropen"
+
+#~ msgid "<qt>Failed to execute gpgconf:<p>%1</p></qt>"
+#~ msgstr "<qt>Utföhren vun \"gpgconf\" fehlslaan:<p>%1</p></qt>"
+
+#~ msgid ""
+#~ "Could not start gpgconf.\n"
+#~ "Check that gpgconf is in the PATH and that it can be started."
+#~ msgstr ""
+#~ "\"gpgconf\" lett sik nich opropen.\n"
+#~ "Prööv bitte, wat sik \"gpgconf\" över Dien PATH-Variabel finnen un sik "
+#~ "starten lett."
+
+#~ msgid "Error from gpgconf while saving configuration: %1"
+#~ msgstr "Fehler binnen \"gpgconf\" bi't Sekern vun de Instellen: %1"
+
+#~ msgid "Generating DSA key..."
+#~ msgstr "DSA-Slötel warrt opstellt..."
+
+#~ msgid "Generating ElGamal key..."
+#~ msgstr "ElGamal-Slötel warrt opstellt..."
+
+#~ msgid "Searching for a large prime number..."
+#~ msgstr "Grote Primtall warrt söcht..."
+
+#~ msgid ""
+#~ "Waiting for new entropy from random number generator (you might want to "
+#~ "exercise the harddisks or move the mouse)..."
+#~ msgstr ""
+#~ "Bi to töven op niege Entropie vun den Tofall-Tallenmaker (Dat geiht "
+#~ "gauer, wenn Du de Muus beweegst oder wat op de Fastplaat maakst)..."
+
+#~ msgid "Please wait..."
+#~ msgstr "Tööv bitte..."
+
+#~ msgid ""
+#~ "Starting gpg-agent (you should consider starting a global instance "
+#~ "instead)..."
+#~ msgstr ""
+#~ "\"gpg-agent\" warrt start (Överlegg Di doch maal, wat Du nich en globale "
+#~ "Utgaav starten wullt)..."
+
+#~ msgid "While scanning for %1 support in backend %2:"
+#~ msgstr "Bi't Kieken na Ünnerstütten för %1 binnen dat Hölp-Programm %2:"
+
+#~ msgctxt "progress info: \"%1 of %2\""
+#~ msgid "%1/%2"
+#~ msgstr "%1/%2"
+
+#~ msgid ""
+#~ "OpenPGP key for %1\n"
+#~ "Created: %2\n"
+#~ "Expiry: %3\n"
+#~ "Fingerprint: %4"
+#~ msgstr ""
+#~ "OpenPGP-Slötel för %1\n"
+#~ "Opstellt: %2\n"
+#~ "Löppt af: %3\n"
+#~ "Fingerafdruck: %4"
+
+#~ msgid ""
+#~ "S/MIME key for %1\n"
+#~ "Created: %2\n"
+#~ "Expiry: %3\n"
+#~ "Fingerprint: %4\n"
+#~ "Issuer: %5"
+#~ msgstr ""
+#~ "S/MIME-Slötel för %1\n"
+#~ "Opstellt: %2\n"
+#~ "Löppt af: %3\n"
+#~ "Fingerafdruck: %4\n"
+#~ "Rutgever: %5"
+
+#~ msgid "Copy Audit Log to Clipboard"
+#~ msgstr "Pröövlogbook na Twischenaflaag koperen"
+
+#~ msgid "Add or Change Directory Service"
+#~ msgstr "Vertekendeenst tofögen oder ännern"
+
+#~ msgid "&Server name:"
+#~ msgstr "&Servernaam:"
+
+#~ msgid "389"
+#~ msgstr "389"
+
+#~ msgid "&User name (optional):"
+#~ msgstr "Br&ukernaam:"
+
+#~ msgid "Pass&word (optional):"
+#~ msgstr "Pass&woort:"
+
+#~ msgid "&OK"
+#~ msgstr "&OK"
+
+#~ msgid "&Cancel"
+#~ msgstr "&Afbreken"
+
+#~ msgid "&Base DN:"
+#~ msgstr "&Wörtel-DN:"
+
+#~ msgid "&Port:"
+#~ msgstr "&Port:"
+
+#~ msgctxt "NAME OF TRANSLATORS"
+#~ msgid "Your names"
+#~ msgstr "Sönke Dibbern"
+
+#~ msgctxt "EMAIL OF TRANSLATORS"
+#~ msgid "Your emails"
+#~ msgstr "s_dibbern@web.de"
+
+#~ msgid "failed"
+#~ msgstr "fehlslaan"
+
+#~ msgctxt ""
+#~ "Items in Kleo::BackendConfigWidget listview (1: protocol; 2: "
+#~ "implementation name)"
+#~ msgid "%1 (%2)"
+#~ msgstr "%1 (%2)"
+
+#~ msgid "Available Backends"
+#~ msgstr "Verföögbor Hölp-Programmen"
+
+#~ msgid "Confi&gure..."
+#~ msgstr "&Instellen..."
+
+#~ msgid "Rescan"
+#~ msgstr "Nieg kieken"
+
+#~ msgid "The following problems where encountered during scanning:"
+#~ msgstr "Dat geev bi't Kieken disse Problemen:"
+
+#~ msgctxt "@title:window Results of the scanning"
+#~ msgid "Scan Results"
+#~ msgstr "Dörkiek-Resultaat"
+
+#~ msgid "(Unknown Protocol)"
+#~ msgstr "(Nich begäng Protokoll)"
+
+#~ msgid "Error while initializing plugin \"%1\""
+#~ msgstr "Fehler bi't Torechtmaken vun dat Plugin \"%1\""
+
+#~ msgid "Can't start decrypt job"
+#~ msgstr "Opslötelopgaav lett sik nich starten"
+
+#~ msgid "Can't start combined decrypt/verify operation"
+#~ msgstr "Tosamensett Opslötel-/Pröövakschoon lett sik nich starten"
+
+#~ msgid "Can't start encrypt job"
+#~ msgstr "Verslötelopgaav lett sik nich starten"
+
+#~ msgid "Error adding signer %1."
+#~ msgstr "Fehler bi't Tofögen vun Ünnerschriever \"%1\""
+
+#~ msgid ""
+#~ "You need a passphrase to unlock the secret key for user:<br/> %1 (retry)"
+#~ msgstr ""
+#~ "Du bruukst en Slötelsatz, wenn Du den Privaatslötel vun den nakamen "
+#~ "Bruker opsluten wullt:<br/> %1 (nochmaal versöken)"
+
+#~ msgid "You need a passphrase to unlock the secret key for user:<br/> %1"
+#~ msgstr ""
+#~ "Du bruukst en Slötelsatz, wenn Du den Privaatslötel vun den nakamen "
+#~ "Bruker opsluten wullt:<br/> %1 "
+
+#~ msgid ""
+#~ "This dialog will reappear every time the passphrase is needed. For a more "
+#~ "secure solution that also allows caching the passphrase, use gpg-agent."
+#~ msgstr ""
+#~ "Disse Dialoog warrt jümmers wedder opduken, wenn de Slötelsatz bruukt "
+#~ "warrt. En sekrere Lösen, mit de Du den Slötelsatz ok twischenspiekern "
+#~ "kannst, is \"gpg-agent\"."
+
+#~ msgid "gpg-agent was found in %1, but does not appear to be running."
+#~ msgstr ""
+#~ "\"gpg-agent\" wöör binnen %1 funnen, man as dat lett löppt dat nich."
+
+#~ msgid "gpg-agent is part of gnupg-%1, which you can download from %2"
+#~ msgstr ""
+#~ "\"gpg-agent\" is en Deel vun \"gnupg-%1\". Dat kannst Du vun %2 daalladen."
+
+#~ msgid "For information on how to set up gpg-agent, see %1"
+#~ msgstr ""
+#~ "Wenn Du weten wullt, wodennig gpg-agent inricht warrt, kiek ünner %1"
+
+#~ msgid "Enter passphrase:"
+#~ msgstr "Slötelsatz ingeven:"
+
+#~ msgid "Passphrase Dialog"
+#~ msgstr "Slötelsatz-Dialoog"
+
+#~ msgid "Can't start combined sign-encrypt job"
+#~ msgstr "Tosamensett Ünnerschriev- un Verslötelopgaav lett sik nich starten"
+
+#~ msgid "Can't start sign job"
+#~ msgstr "Ünnerschrievopgaav lett sik nich starten"
+
+#~ msgid "Can't start detached signature verification"
+#~ msgstr "Pröven vun de aflööst Ünnertschrift lett sik nich starten"
+
+#~ msgid "Can't start opaque signature verification"
+#~ msgstr "Pröven vun överdeckt Ünnerschrift lett sik nich starten"
+
+#~ msgid "Configure"
+#~ msgstr "Instellen"
+
+#~ msgid "Select Directory Services to Use Here"
+#~ msgstr "Vertekendeensten utsöken"
+
+#~ msgid ""
+#~ "<qt>\n"
+#~ "<h1>X.500 Directory Services</h1>\n"
+#~ "You can use X.500 directory services to retrieve certificates and "
+#~ "certificate revocation lists that are not saved locally. Ask your local "
+#~ "administrator if you want to make use of this feature and are unsure "
+#~ "which directory service you can use.\n"
+#~ "<p>\n"
+#~ "If you do not use a directory service, you can still use local "
+#~ "certificates.\n"
+#~ "</qt>"
+#~ msgstr ""
+#~ "<qt>\n"
+#~ "<h1>X.500-Vertekendeensten</h1>\n"
+#~ "Du kannst X.500-Vertekendeensten bruken, wenn Du Zertifikaten un "
+#~ "Zertifikaat-Torüchrooplisten (ZTLen) bruken wullt, de opstunns lokaal "
+#~ "nich verföögbor sünd. Fraag Dien Systeempleger, wenn Du disse Funkschoon "
+#~ "bruken wullt un nich weetst, welk Deensten Du dorför bruken kannst.\n"
+#~ "<p>\n"
+#~ "Du kannst lokale Zertifikaten ok bruken, wenn Du keen Vertekendeenst "
+#~ "bruukst.\n"
+#~ "</qt>"
+
+#~ msgid "Port"
+#~ msgstr "Port"
+
+#~ msgid ""
+#~ "<qt>\n"
+#~ "<h1>Add a Directory Service</h1>\n"
+#~ "By clicking this button, you can select a new directory service to be "
+#~ "used for retrieving certificates and CRLs. You will be asked for the "
+#~ "server name and an optional description.\n"
+#~ "</qt>"
+#~ msgstr ""
+#~ "<qt>\n"
+#~ "<h1>En Vertekendeenst tofögen</h1>\n"
+#~ "Wenn Du op dissen Knoop klickst, kannst Du en niegen Vertekendeenst för't "
+#~ "Halen vun Zertifikaten un ZTLen utsöken. Du warrst na den Servernaam un "
+#~ "en Beschrieven (keen Plicht) fraagt.\n"
+#~ "</qt>"
+
+#~ msgid "&Add Service..."
+#~ msgstr "Deenst &tofögen..."
+
+#~ msgid ""
+#~ "<qt>\n"
+#~ "<h1>Remove Directory Service</h1>\n"
+#~ "By clicking this button, you can remove the currently selected directory "
+#~ "service in the list above. You will have a chance to rethink your "
+#~ "decision before the entry is deleted from the list.\n"
+#~ "</qt>"
+#~ msgstr ""
+#~ "<qt>\n"
+#~ "<h1>Vertekendeenst wegmaken</h1>\n"
+#~ "Wenn Du op dissen Knoop klickst, kannst Du den opstunns utsöchten "
+#~ "Vertekendeenst vun de List baven wegmaken. Du warrst nochmaal fraagt, ehr "
+#~ "de Indrag vun de List wegmaakt warrt.\n"
+#~ "</qt>"
+
+#~ msgid "&Remove Service"
+#~ msgstr "Deenst &wegmaken"
+
+#~ msgid "<placeholder>unnamed</placeholder>"
+#~ msgstr "<placeholder>ahn Naam</placeholder>"
--- /dev/null
+# translation of libkleopatra.po to Dutch
+# translation of libkleopatra.po to
+# Bram Schoenmakers <bramschoenmakers@kde.nl>, 2004, 2005, 2007.
+# Tom Albers <tomalbers@kde.nl>, 2004.
+# Rinse de Vries <rinsedevries@kde.nl>, 2004, 2007, 2008.
+# Freek de Kruijf <freekdekruijf@kde.nl>, 2010, 2012, 2014, 2016, 2017.
+msgid ""
+msgstr ""
+"Project-Id-Version: libkleopatra\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2017-07-12 06:56+0200\n"
+"PO-Revision-Date: 2017-07-12 11:51+0100\n"
+"Last-Translator: Freek de Kruijf <freekdekruijf@kde.nl>\n"
+"Language-Team: Dutch <kde-i18n-nl@kde.org>\n"
+"Language: nl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Lokalize 2.0\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+
+#: kleo/checksumdefinition.cpp:107
+#, kde-format
+msgid "Error in checksum definition %1: %2"
+msgstr "Fout in controlesomdefinitie %1: %2"
+
+#: kleo/checksumdefinition.cpp:157
+#, kde-format
+msgid "Cannot use both %f and | in '%1'"
+msgstr "%f en | in '%1' kunnen niet beiden worden gebruikt"
+
+#: kleo/checksumdefinition.cpp:167
+#, kde-format
+msgid "Quoting error in '%1' entry"
+msgstr "In de invoer '%1' zit een fout in de aanhalingstekens"
+
+#: kleo/checksumdefinition.cpp:170
+#, kde-format
+msgid "'%1' too complex (would need shell)"
+msgstr "'%1' is te complex (zou een shell nodig hebben)"
+
+#: kleo/checksumdefinition.cpp:174
+#, kde-format
+msgid "'%1' entry is empty/missing"
+msgstr "Invoer '%1' is leeg/ontbreekt"
+
+#: kleo/checksumdefinition.cpp:183
+#, kde-format
+msgid "'%1' empty or not found"
+msgstr "'%1' is leeg of niet gevonden"
+
+#: kleo/checksumdefinition.cpp:222
+#, kde-format
+msgid "'id' entry is empty/missing"
+msgstr "'id' item is leeg/ontbreekt"
+
+#: kleo/checksumdefinition.cpp:225
+#, kde-format
+msgid "'output-file' entry is empty/missing"
+msgstr "'output-file' item is leeg/ontbreekt"
+
+#: kleo/checksumdefinition.cpp:228
+#, kde-format
+msgid "'file-patterns' entry is empty/missing"
+msgstr "'file-patterns' item is leeg/ontbreekt"
+
+#: kleo/checksumdefinition.cpp:395
+#, kde-format
+msgid "Caught unknown exception in group %1"
+msgstr "Onbekende uitzondering gevangen in groep %1"
+
+#: kleo/dn.cpp:507
+#, kde-format
+msgid "Common name"
+msgstr "Roepnaam"
+
+#: kleo/dn.cpp:508
+#, kde-format
+msgid "Surname"
+msgstr "Achternaam"
+
+#: kleo/dn.cpp:509
+#, kde-format
+msgid "Given name"
+msgstr "Voornaam"
+
+#: kleo/dn.cpp:510
+#, kde-format
+msgid "Location"
+msgstr "Plaats"
+
+#: kleo/dn.cpp:511
+#, kde-format
+msgid "Title"
+msgstr "Titel"
+
+#: kleo/dn.cpp:512
+#, kde-format
+msgid "Organizational unit"
+msgstr "Afdeling"
+
+#: kleo/dn.cpp:513
+#, kde-format
+msgid "Organization"
+msgstr "Organisatie"
+
+#: kleo/dn.cpp:514
+#, kde-format
+msgid "Postal code"
+msgstr "Postcode"
+
+#: kleo/dn.cpp:515
+#, kde-format
+msgid "Country code"
+msgstr "Landcode"
+
+#: kleo/dn.cpp:516
+#, kde-format
+msgid "State or province"
+msgstr "Staat of provincie"
+
+#: kleo/dn.cpp:517
+#, kde-format
+msgid "Domain component"
+msgstr "Domein-component"
+
+#: kleo/dn.cpp:518
+#, kde-format
+msgid "Business category"
+msgstr "Industriesector"
+
+#: kleo/dn.cpp:519
+#, kde-format
+msgid "Email address"
+msgstr "E-mailadres"
+
+#: kleo/dn.cpp:520
+#, kde-format
+msgid "Mail address"
+msgstr "Postadres"
+
+#: kleo/dn.cpp:521
+#, kde-format
+msgid "Mobile phone number"
+msgstr "Mobiele telefoonnummer"
+
+#: kleo/dn.cpp:522
+#, kde-format
+msgid "Telephone number"
+msgstr "Telefoonnummer"
+
+#: kleo/dn.cpp:523
+#, kde-format
+msgid "Fax number"
+msgstr "Faxnummer"
+
+#: kleo/dn.cpp:524
+#, kde-format
+msgid "Street address"
+msgstr "Straat"
+
+#: kleo/dn.cpp:525
+#, kde-format
+msgid "Unique ID"
+msgstr "Unieke ID"
+
+#: kleo/enum.cpp:57
+#, kde-format
+msgid "Inline OpenPGP (deprecated)"
+msgstr "OpenPGP ingebed (afgeraden)"
+
+#: kleo/enum.cpp:62
+#, kde-format
+msgid "OpenPGP/MIME"
+msgstr "OpenPGP/MIME"
+
+#: kleo/enum.cpp:67 ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "S/MIME"
+msgstr "S/MIME"
+
+#: kleo/enum.cpp:72
+#, kde-format
+msgid "S/MIME Opaque"
+msgstr "S/MIME-opaque"
+
+#: kleo/enum.cpp:104
+#, kde-format
+msgid "Any"
+msgstr "Alles"
+
+#: kleo/enum.cpp:177
+#, kde-format
+msgid "Never Encrypt"
+msgstr "Nooit versleutelen"
+
+#: kleo/enum.cpp:179
+#, kde-format
+msgid "Always Encrypt"
+msgstr "Altijd versleutelen"
+
+#: kleo/enum.cpp:181
+#, kde-format
+msgid "Always Encrypt If Possible"
+msgstr "Altijd versleutelen indien mogelijk"
+
+#: kleo/enum.cpp:183 kleo/enum.cpp:240
+#, kde-format
+msgid "Ask"
+msgstr "Vragen"
+
+#: kleo/enum.cpp:185 kleo/enum.cpp:242
+#, kde-format
+msgid "Ask Whenever Possible"
+msgstr "Vragen indien mogelijk"
+
+#: kleo/enum.cpp:187
+#, kde-kuit-format
+msgctxt "no specific preference"
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>geen</placeholder>"
+
+#: kleo/enum.cpp:234
+#, kde-format
+msgid "Never Sign"
+msgstr "Nooit ondertekenen"
+
+#: kleo/enum.cpp:236
+#, kde-format
+msgid "Always Sign"
+msgstr "Altijd ondertekenen"
+
+#: kleo/enum.cpp:238
+#, kde-format
+msgid "Always Sign If Possible"
+msgstr "Altijd ondertekenen indien mogelijk"
+
+#: kleo/enum.cpp:244
+#, kde-format
+msgctxt "no specific preference"
+msgid "<none>"
+msgstr "<niets>"
+
+#: kleo/keyfiltermanager.cpp:85
+#, kde-format
+msgid "All Certificates"
+msgstr "Alle certificaten"
+
+#: kleo/keyfiltermanager.cpp:100
+#, kde-format
+msgid "My Certificates"
+msgstr "Mijn certificaten"
+
+#: kleo/keyfiltermanager.cpp:118
+#, kde-format
+msgid "Trusted Certificates"
+msgstr "Vertrouwde certificaten"
+
+#: kleo/keyfiltermanager.cpp:135
+#, kde-format
+msgid "Fully Trusted Certificates"
+msgstr "Volledig vertrouwde certificaten"
+
+#: kleo/keyfiltermanager.cpp:152
+#, kde-format
+msgid "Other Certificates"
+msgstr "Overige certificaten"
+
+#: kleo/keyfiltermanager.cpp:166
+#, kde-format
+msgid "VS-compliant Certificates"
+msgstr "VS-compliant certificaten"
+
+#: kleo/keyfiltermanager.cpp:184
+#, kde-format
+msgid "Not validated Certificates"
+msgstr "Geen gevalideerde certificaten"
+
+#: ui/auditlogviewer.cpp:49
+#, kde-format
+msgid "View GnuPG Audit Log"
+msgstr "GnuPG Audit-log tonen"
+
+#: ui/auditlogviewer.cpp:53
+#, kde-format
+msgid "&Copy to Clipboard"
+msgstr "Naar klembord &kopieren"
+
+#: ui/auditlogviewer.cpp:59
+#, kde-format
+msgid "&Save to Disk..."
+msgstr "Naar schijf op&slaan..."
+
+#: ui/auditlogviewer.cpp:95
+#, kde-format
+msgid "Choose File to Save GnuPG Audit Log to"
+msgstr "Kies het bestand om de GnuPG Audit-log in op te slaan"
+
+#: ui/auditlogviewer.cpp:118
+#, kde-format
+msgid "Could not save to file \"%1\": %2"
+msgstr "Kon niet opslaan naar bestand \"%1\": %2"
+
+#: ui/auditlogviewer.cpp:120
+#, kde-format
+msgid "File Save Error"
+msgstr "Fout bij opslaan van het bestand"
+
+#: ui/cryptoconfigdialog.cpp:44
+#, kde-format
+msgid "Configure GnuPG Backend"
+msgstr "GnuPG-backend instellen"
+
+#: ui/cryptoconfigdialog.cpp:55
+#, kde-format
+msgid "&Reset"
+msgstr "&Resetten"
+
+#: ui/cryptoconfigmodule.cpp:160
+#, kde-format
+msgid "GpgConf Error"
+msgstr "GpgConf-fout"
+
+#: ui/cryptoconfigmodule.cpp:216
+#, kde-format
+msgid ""
+"The gpgconf tool used to provide the information for this dialog does not "
+"seem to be installed properly. It did not return any components. Try running "
+"\"%1\" on the command line for more information."
+msgstr ""
+"Het gpgconf-hulpmiddel gebruikt om de informatie voor deze dialoog te "
+"leveren lijkt niet goed te zijn geïnstalleerd. Het gaf geen componenten "
+"terug. Probeer \"%1\" te draaien op de commandoregel voor meer informatie."
+
+#: ui/cryptoconfigmodule.cpp:496
+#, kde-format
+msgctxt ""
+"Translate this to 'yes' or 'no' (use the English words!) depending on "
+"whether your language uses Sentence style capitalisation in GUI labels (yes) "
+"or not (no). Context: We get some backend strings in that have the wrong "
+"capitalizaion (in English, at least) so we need to force the first character "
+"to upper-case. It is this behaviour you can control for your language with "
+"this translation."
+msgid "yes"
+msgstr "yes"
+
+#: ui/cryptoconfigmodule.cpp:546
+#, kde-format
+msgid "0 - None"
+msgstr "0- Geen"
+
+#: ui/cryptoconfigmodule.cpp:547
+#, kde-format
+msgid "1 - Basic"
+msgstr "1 - Basis"
+
+#: ui/cryptoconfigmodule.cpp:548
+#, kde-format
+msgid "2 - Verbose"
+msgstr "2 - Uitvoerig"
+
+#: ui/cryptoconfigmodule.cpp:549
+#, kde-format
+msgid "3 - More Verbose"
+msgstr "3 - Uitvoeriger"
+
+#: ui/cryptoconfigmodule.cpp:550
+#, kde-format
+msgid "4 - All"
+msgstr "4 - Alles"
+
+#: ui/cryptoconfigmodule.cpp:559
+#, kde-format
+msgid "Set the debugging level to"
+msgstr "Debugging-niveau instellen op"
+
+#: ui/cryptoconfigmodule.cpp:787
+#, kde-format
+msgid "Show..."
+msgstr "Tonen..."
+
+#: ui/cryptoconfigmodule.cpp:787 ui/cryptoconfigmodule.cpp:876
+#, kde-format
+msgid "Edit..."
+msgstr "Bewerken..."
+
+#: ui/cryptoconfigmodule.cpp:841
+#, kde-format
+msgid "Configure LDAP Servers"
+msgstr "LDAP-servers instellen"
+
+#: ui/cryptoconfigmodule.cpp:862
+#, kde-format
+msgid "None configured"
+msgstr "Niet geconfigureerd"
+
+#: ui/cryptoconfigmodule.cpp:864
+#, kde-format
+msgid "1 server configured"
+msgid_plural "%1 servers configured"
+msgstr[0] "1 server ingesteld"
+msgstr[1] "%1 servers ingesteld"
+
+#: ui/cryptoconfigmodule.cpp:879
+#, kde-format
+msgid "Use keyserver at"
+msgstr "Keyserver gebruiken bij"
+
+#: ui/cryptoconfigmodule.cpp:968
+#, kde-format
+msgid "Configure Keyservers"
+msgstr "Keyservers instellen"
+
+#: ui/directoryserviceswidget.cpp:67
+#, kde-format
+msgctxt "default server name, keep it a valid domain name, ie. no spaces"
+msgid "server"
+msgstr "server"
+
+#: ui/directoryserviceswidget.cpp:95
+#, kde-format
+msgid "hkp"
+msgstr "hkp"
+
+#: ui/directoryserviceswidget.cpp:96
+#, kde-format
+msgid "http"
+msgstr "http"
+
+#: ui/directoryserviceswidget.cpp:97
+#, kde-format
+msgid "https"
+msgstr "https"
+
+#: ui/directoryserviceswidget.cpp:98
+#, kde-format
+msgid "ftp"
+msgstr "ftp"
+
+#: ui/directoryserviceswidget.cpp:99
+#, kde-format
+msgid "ftps"
+msgstr "ftps"
+
+#: ui/directoryserviceswidget.cpp:100
+#, kde-format
+msgid "ldap"
+msgstr "ldap"
+
+#: ui/directoryserviceswidget.cpp:101
+#, kde-format
+msgid "ldaps"
+msgstr "ldaps"
+
+#: ui/directoryserviceswidget.cpp:588
+#, kde-format
+msgid "Server Name"
+msgstr "Servernaam"
+
+#: ui/directoryserviceswidget.cpp:589
+#, kde-format
+msgid "Server Port"
+msgstr "Serverpoort"
+
+#: ui/directoryserviceswidget.cpp:590
+#, kde-format
+msgid "Base DN"
+msgstr "Base DN"
+
+#: ui/directoryserviceswidget.cpp:591
+#, kde-format
+msgid "User Name"
+msgstr "Gebruikersnaam"
+
+#: ui/directoryserviceswidget.cpp:592
+#, kde-format
+msgid "Password"
+msgstr "Wachtwoord"
+
+#: ui/directoryserviceswidget.cpp:614
+#, kde-format
+msgid "(read-only)"
+msgstr "(alleen-lezen)"
+
+#: ui/directoryserviceswidget.cpp:616
+#, kde-format
+msgctxt "amended tooltip; %1: original tooltip"
+msgid "%1 (read-only)"
+msgstr "%1 (alleen-lezen)"
+
+#: ui/directoryserviceswidget.cpp:739
+#, kde-format
+msgid ""
+"Enter the name or IP address of the server hosting the directory service."
+msgstr ""
+"Voer de naam of het IP-adres in van de server waarop de directory service "
+"wordt aangeboden."
+
+#: ui/directoryserviceswidget.cpp:741
+#, kde-format
+msgid ""
+"<b>(Optional, the default is fine in most cases)</b> Pick the port number "
+"the directory service is listening on."
+msgstr ""
+"<b>(Optioneel, de standaard is in de meeste gevallen prima)</b> Kies het "
+"poortnummer waarop de directory service luistert."
+
+#: ui/directoryserviceswidget.cpp:744
+#, kde-format
+msgid ""
+"<b>(Only for LDAP)</b> Enter the base DN for this LDAP server to limit "
+"searches to only that subtree of the directory."
+msgstr ""
+"<b>(Alleen voor LDAP)</b>Voer de basis-DN in voor deze LDAP-server om het "
+"zoeken te beperken tot alleen de subtak van de directory."
+
+#: ui/directoryserviceswidget.cpp:747
+#, kde-format
+msgid "<b>(Optional)</b> Enter your user name here, if needed."
+msgstr "<b>(Optioneel)</b> Voer, indien nodig, uw gebruikernaam in."
+
+#: ui/directoryserviceswidget.cpp:749
+#, kde-format
+msgid ""
+"<b>(Optional, not recommended)</b> Enter your password here, if needed. Note "
+"that the password will be saved in the clear in a config file in your home "
+"directory."
+msgstr ""
+"<b>(Optioneel, niet aanbevolen)</b> Voer,indien nodig, uw wachtwoord hier "
+"in. Merk op dat het wachtwoord in een configuratiebestand in uw persoonlijke "
+"map opgeslagen wordt."
+
+#. i18n: ectx: property (windowTitle), widget (QWidget, DirectoryServicesWidget)
+#: ui/directoryserviceswidget.ui:14
+#, kde-format
+msgid "Directory Services Configuration"
+msgstr "Configuratie van Directory Services"
+
+#. i18n: ectx: property (text), widget (QLabel, pgpKSLabel)
+#: ui/directoryserviceswidget.ui:22
+#, kde-format
+msgid "OpenPGP Keyserver:"
+msgstr "OpenPGP sleutelserver:"
+
+#. i18n: ectx: property (title), widget (QGroupBox, x500LA)
+#: ui/directoryserviceswidget.ui:35
+#, kde-format
+msgid "X509 Directory services:"
+msgstr "X509 directory services:"
+
+#. i18n: ectx: property (whatsThis), widget (QTreeView, treeView)
+#: ui/directoryserviceswidget.ui:43
+#, kde-format
+msgid ""
+"This is a list of all directory services that are configured for use with "
+"X.509."
+msgstr ""
+"Dit is een lijst van alle directory services die zijn ingesteld voor gebruik "
+"met X.509."
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:70
+#, kde-format
+msgid "Click to add a service"
+msgstr "Klik om een service toe te voegen"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:73
+#, kde-format
+msgid ""
+"Click this button to create a new directory service entry as a clone of the "
+"currently selected one (or with default values, if no other is selected). "
+"You can then configure details in the table on the left hand."
+msgstr ""
+"Klik op deze knop om een nieuwe directory-service-item aan te maken als een "
+"kloon van de geselecteerde (of met de standaardwaarden, als er geen is "
+"geselecteerd). U kunt daarna in de tabel links de details instellen."
+
+#. i18n: ectx: property (text), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:76
+#, kde-format
+msgid "New"
+msgstr "Nieuw"
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:92
+#, kde-format
+msgid "Click to remove the currently selected service"
+msgstr "Klik om de huidige geselecteerde service te verwijderen"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:95
+#, kde-format
+msgid ""
+"Click this button to remove the currently selected directory service. The "
+"change will only take effect once you acknowledge the main configuration "
+"dialog."
+msgstr ""
+"Klik op deze knop om de geselecteerde directory service te verwijderen. De "
+"wijziging heeft pas effect als u uw wijzigingen bevestigt in het "
+"hoofdconfiguratiedialoog."
+
+#. i18n: ectx: property (text), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:98
+#, kde-format
+msgid "Delete"
+msgstr "Verwijderen"
+
+#. i18n: ectx: property (whatsThis), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:128
+#, kde-format
+msgid ""
+"Use this option to switch display of username and password information on or "
+"off in the above table."
+msgstr ""
+"Gebruik deze optie om de weergave van gebruikersnaam en wachtwoord in "
+"bovenstaande tabel aan of uit te zetten."
+
+#. i18n: ectx: property (text), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:131
+#, kde-format
+msgid "Show user and password information"
+msgstr "Gebruikersnaam en wachtwoord weergeven"
+
+#: ui/dnattributeorderconfigwidget.cpp:73
+#, kde-format
+msgid "Description"
+msgstr "Beschrijving"
+
+#: ui/dnattributeorderconfigwidget.cpp:91
+#, kde-format
+msgid "Available attributes:"
+msgstr "Beschikbare attributen:"
+
+#: ui/dnattributeorderconfigwidget.cpp:92
+#, kde-format
+msgid "Current attribute order:"
+msgstr "Huidige attribuutvolgorde:"
+
+#: ui/dnattributeorderconfigwidget.cpp:112
+#, kde-format
+msgid "All others"
+msgstr "Alle anderen"
+
+#: ui/dnattributeorderconfigwidget.cpp:129
+#, kde-format
+msgid "Move to top"
+msgstr "Naar de top verplaatsen"
+
+#: ui/dnattributeorderconfigwidget.cpp:130
+#, kde-format
+msgid "Move one up"
+msgstr "Één naar boven verplaatsen"
+
+#: ui/dnattributeorderconfigwidget.cpp:131
+#, kde-format
+msgid "Remove from current attribute order"
+msgstr "Uit huidige attribuutvolgorde verwijderen"
+
+#: ui/dnattributeorderconfigwidget.cpp:132
+#, kde-format
+msgid "Add to current attribute order"
+msgstr "Aan huidige attribuutvolgorde toevoegen"
+
+#: ui/dnattributeorderconfigwidget.cpp:133
+#, kde-format
+msgid "Move one down"
+msgstr "Één naar beneden verplaatsen"
+
+#: ui/dnattributeorderconfigwidget.cpp:134
+#, kde-format
+msgid "Move to bottom"
+msgstr "Naar onderaan verplaatsen"
+
+#: ui/keyapprovaldialog.cpp:87
+#, kde-kuit-format
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>geen</placeholder>"
+
+#: ui/keyapprovaldialog.cpp:88
+#, kde-format
+msgid "Never Encrypt with This Key"
+msgstr "Nooit met deze sleutel versleutelen"
+
+#: ui/keyapprovaldialog.cpp:89
+#, kde-format
+msgid "Always Encrypt with This Key"
+msgstr "Altijd met deze sleutel versleutelen"
+
+#: ui/keyapprovaldialog.cpp:90
+#, kde-format
+msgid "Encrypt Whenever Encryption is Possible"
+msgstr "Altijd versleutelen indien mogelijk"
+
+#: ui/keyapprovaldialog.cpp:91
+#, kde-format
+msgid "Always Ask"
+msgstr "Altijd vragen"
+
+#: ui/keyapprovaldialog.cpp:92
+#, kde-format
+msgid "Ask Whenever Encryption is Possible"
+msgstr "Vragen wanneer versleuteling mogelijk is"
+
+#: ui/keyapprovaldialog.cpp:113
+#, kde-format
+msgid "Encryption Key Approval"
+msgstr "Goedkeuring sleutel"
+
+#: ui/keyapprovaldialog.cpp:129
+#, kde-format
+msgid "The following keys will be used for encryption:"
+msgstr "De volgende sleutels zullen gebruikt worden voor versleuteling:"
+
+#: ui/keyapprovaldialog.cpp:145
+#, kde-format
+msgid "Your keys:"
+msgstr "Uw sleutels:"
+
+#: ui/keyapprovaldialog.cpp:157
+#, kde-format
+msgid "Recipient:"
+msgstr "Ontvanger:"
+
+#: ui/keyapprovaldialog.cpp:162
+#, kde-format
+msgid "Encryption keys:"
+msgstr "Sleutels voor versleuteling:"
+
+#: ui/keyapprovaldialog.cpp:169
+#, kde-format
+msgid "Encryption preference:"
+msgstr "Voorkeursversleuteling:"
+
+#: ui/keyrequester.cpp:118
+#, kde-format
+msgid "Clear"
+msgstr "Wissen"
+
+#: ui/keyrequester.cpp:121
+#, kde-format
+msgid "Change..."
+msgstr "Veranderen..."
+
+#: ui/keyrequester.cpp:232 ui/keyselectiondialog.cpp:256
+#, kde-kuit-format
+msgid "<placeholder>unknown</placeholder>"
+msgstr "<placeholder>onbekend</placeholder>"
+
+#: ui/keyrequester.cpp:246 ui/keyselectiondialog.cpp:657
+#, kde-format
+msgid ""
+"<qt><p>An error occurred while fetching the keys from the backend:</p><p><b>"
+"%1</b></p></qt>"
+msgstr ""
+"<qt><p>Er deed zich een fout voor tijdens het ophalen van de sleutels van "
+"het backend:</p><p><b>%1</b></p></qt>"
+
+#: ui/keyrequester.cpp:251 ui/keyrequester.cpp:283 ui/keyrequester.cpp:306
+#: ui/keyselectiondialog.cpp:630 ui/keyselectiondialog.cpp:662
+#, kde-format
+msgid "Key Listing Failed"
+msgstr "Sleuteluitdraai mislukt"
+
+#: ui/keyrequester.cpp:281
+#, kde-format
+msgid ""
+"The OpenPGP backend does not support listing keys. Check your installation."
+msgstr ""
+"Een uitdraai maken van de sleutels wordt niet door de OpenPGP-backend "
+"ondersteund. Controleer uw installatie."
+
+#: ui/keyrequester.cpp:304
+#, kde-format
+msgid ""
+"The S/MIME backend does not support listing keys. Check your installation."
+msgstr ""
+"Een uitdraai maken van de sleutels wordt niet door de S/MIME-backend "
+"ondersteund. Controleer uw installatie."
+
+#: ui/keyrequester.cpp:426
+#, kde-format
+msgid "OpenPGP Key Selection"
+msgstr "OpenPGP sleutelselectie"
+
+#: ui/keyrequester.cpp:427
+#, kde-format
+msgid "Please select an OpenPGP key to use."
+msgstr "Selecteer een OpenPGP-sleutel om te gebruiken."
+
+#: ui/keyrequester.cpp:429
+#, kde-format
+msgid "S/MIME Key Selection"
+msgstr "S/MIME sleutelselectie"
+
+#: ui/keyrequester.cpp:430
+#, kde-format
+msgid "Please select an S/MIME key to use."
+msgstr "Selecteer een S/MIME-sleutel om te gebruiken."
+
+#: ui/keyrequester.cpp:432
+#, kde-format
+msgid "Key Selection"
+msgstr "Sleutelselectie"
+
+#: ui/keyrequester.cpp:433
+#, kde-format
+msgid "Please select an (OpenPGP or S/MIME) key to use."
+msgstr "Kies a.u.b. een (OpenPGP of S/MIME) sleutel."
+
+#: ui/keyselectioncombo.cpp:195
+#, kde-format
+msgctxt "Name <email> (validity, type, created: date)"
+msgid "%1 (%2, %3, created: %4)"
+msgstr "%1 (%2, %3, aangemaakt: %4)"
+
+#: ui/keyselectioncombo.cpp:196
+#, kde-format
+msgctxt "Name <email>"
+msgid "%1 <%2>"
+msgstr "%1 <%2>"
+
+#: ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "OpenPGP"
+msgstr "OpenPGP"
+
+#: ui/keyselectioncombo.cpp:347
+#, kde-format
+msgid "Loading keys ..."
+msgstr "Sleutels aan het laden..."
+
+#: ui/keyselectiondialog.cpp:98
+#, kde-format
+msgid "The key is not valid."
+msgstr "De sleutel is niet geldig."
+
+#: ui/keyselectiondialog.cpp:106
+#, kde-format
+msgid "The key is expired."
+msgstr "De sleutel is verlopen."
+
+#: ui/keyselectiondialog.cpp:110
+#, kde-format
+msgid "The key is revoked."
+msgstr "De sleutel is ingetrokken."
+
+#: ui/keyselectiondialog.cpp:114
+#, kde-format
+msgid "The key is disabled."
+msgstr "De sleutel is uitgeschakeld."
+
+#: ui/keyselectiondialog.cpp:122
+#, kde-format
+msgid "The key is not designated for encryption."
+msgstr "De sleutel is niet bestemd voor versleuteling."
+
+#: ui/keyselectiondialog.cpp:128
+#, kde-format
+msgid "The key is not designated for signing."
+msgstr "De sleutel is niet bestemd voor ondertekening."
+
+#: ui/keyselectiondialog.cpp:134
+#, kde-format
+msgid "The key is not designated for certifying."
+msgstr "De sleutel is niet bestemd voor certificeren."
+
+#: ui/keyselectiondialog.cpp:140
+#, kde-format
+msgid "The key is not designated for authentication."
+msgstr "De sleutel is niet bestemd voor authenticatie."
+
+#: ui/keyselectiondialog.cpp:148
+#, kde-format
+msgid "The key is not secret."
+msgstr "De key is niet geheim."
+
+#: ui/keyselectiondialog.cpp:163
+#, kde-format
+msgid "The key is not trusted enough."
+msgstr "De sleutel is niet voldoende vertrouwd."
+
+#: ui/keyselectiondialog.cpp:169
+#, kde-format
+msgid "The key can be used."
+msgstr "De sleutel kan gebruikt worden."
+
+#: ui/keyselectiondialog.cpp:230
+#, kde-format
+msgid "Key ID"
+msgstr "Sleutel-id"
+
+#: ui/keyselectiondialog.cpp:231
+#, kde-format
+msgid "User ID"
+msgstr "Gebruikers-id"
+
+#: ui/keyselectiondialog.cpp:279
+#, kde-format
+msgid "never"
+msgstr "nooit"
+
+#: ui/keyselectiondialog.cpp:289 ui/keyselectiondialog.cpp:291
+#: ui/keyselectiondialog.cpp:300 ui/keyselectiondialog.cpp:302
+#, kde-format
+msgid "unknown"
+msgstr "onbekend"
+
+#: ui/keyselectiondialog.cpp:289
+#, kde-format
+msgid "OpenPGP key for <b>%1</b>"
+msgstr "OpenPGP sleutel voor <b>%1</b>"
+
+#: ui/keyselectiondialog.cpp:291
+#, kde-format
+msgid "S/MIME key for <b>%1</b>"
+msgstr "S/MIME sleutel voor <b>%1</b>"
+
+#: ui/keyselectiondialog.cpp:298
+#, kde-format
+msgctxt "Key creation date"
+msgid "Created"
+msgstr "Aangemaakt"
+
+#: ui/keyselectiondialog.cpp:299
+#, kde-format
+msgctxt "Key Expiration date"
+msgid "Expiry"
+msgstr "Laten verlopen"
+
+#: ui/keyselectiondialog.cpp:300
+#, kde-format
+msgctxt "Key fingerprint"
+msgid "Fingerprint"
+msgstr "Vingerafdruk"
+
+#: ui/keyselectiondialog.cpp:302
+#, kde-format
+msgctxt "Key issuer"
+msgid "Issuer"
+msgstr "Uitgever"
+
+#: ui/keyselectiondialog.cpp:304
+#, kde-format
+msgctxt "Key status"
+msgid "Status"
+msgstr "Status"
+
+#: ui/keyselectiondialog.cpp:456
+#, kde-format
+msgid "Search for &External Certificates"
+msgstr "Naar externe certificaten zoeken"
+
+#: ui/keyselectiondialog.cpp:470
+#, kde-format
+msgid "&Search for:"
+msgstr "&Zoeken naar:"
+
+#: ui/keyselectiondialog.cpp:494
+#, kde-format
+msgid "&Remember choice"
+msgstr "&Keuze onthouden"
+
+#: ui/keyselectiondialog.cpp:497
+#, kde-format
+msgid ""
+"<qt><p>If you check this box your choice will be stored and you will not be "
+"asked again.</p></qt>"
+msgstr ""
+"<qt><p>Wanneer u dit selecteert zal uw keuze opgeslagen worden en zal het u "
+"niet meer gevraagd worden.</p></qt>"
+
+#: ui/keyselectiondialog.cpp:509
+#, kde-format
+msgid "&Reread Keys"
+msgstr "&Sleutels herlezen"
+
+#: ui/keyselectiondialog.cpp:510
+#, kde-format
+msgid "&Start Certificate Manager"
+msgstr "Certificaatbeheer &starten"
+
+#: ui/keyselectiondialog.cpp:628
+#, kde-format
+msgid "No backends found for listing keys. Check your installation."
+msgstr ""
+"Geen backends gevonden om een sleuteluitdraai te kunnen maken. Controleer uw "
+"installatie."
+
+#: ui/keyselectiondialog.cpp:644
+#, kde-format
+msgid "Could not start certificate manager; please check your installation."
+msgstr "Kon het certificaatbeheer niet starten, controleer uw installatie."
+
+#: ui/keyselectiondialog.cpp:646
+#, kde-format
+msgid "Certificate Manager Error"
+msgstr "Fout certificaatbeheer"
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Checking selected keys..."
+msgstr "Geselecteerde sleutels aan het controleren..."
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Fetching keys..."
+msgstr "Sleutels aan het ophalen..."
+
+#: ui/keyselectiondialog.cpp:731
+#, kde-format
+msgid ""
+"<qt>One backend returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgid_plural ""
+"<qt>%1 backends returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgstr[0] ""
+"<qt>1 backend gaf een onvolledige uitvoer.<p>Niet alle beschikbare sleutels "
+"worden getoond.</p></qt>"
+msgstr[1] ""
+"<qt>%1 backends gaven een onvolledige uitvoer.<p>Niet alle beschikbare "
+"sleutels worden getoond.</p></qt>"
+
+#: ui/keyselectiondialog.cpp:736
+#, kde-format
+msgid "Key List Result"
+msgstr "Resultaat sleuteluitdraai"
+
+#: ui/keyselectiondialog.cpp:856
+#, kde-format
+msgid "Recheck Key"
+msgstr "Sleutel opnieuw controleren"
+
+#: ui/messagebox.cpp:71
+#, kde-format
+msgid "Your system does not have support for GnuPG Audit Logs"
+msgstr "Uw bestandssysteem biedt geen ondersteuning voor GnuPG Audit-logs"
+
+#: ui/messagebox.cpp:72
+#, kde-format
+msgid "System Error"
+msgstr "Systeemfout"
+
+#: ui/messagebox.cpp:79
+#, kde-format
+msgid ""
+"An error occurred while trying to retrieve the GnuPG Audit Log:\n"
+"%1"
+msgstr ""
+"Ertrad een fout op bij de poging om de GnuPG-auditLog op te halen:\n"
+"%1"
+
+#: ui/messagebox.cpp:81
+#, kde-format
+msgid "GnuPG Audit Log Error"
+msgstr "Fout in GnuPG-auditlog"
+
+#: ui/messagebox.cpp:88
+#, kde-format
+msgid "No GnuPG Audit Log available for this operation."
+msgstr "Geen GnuPG Audit-log beschikbaar voor deze operatie."
+
+#: ui/messagebox.cpp:89
+#, kde-format
+msgid "No GnuPG Audit Log"
+msgstr "Geen GnuPG Audit-log"
+
+#: ui/messagebox.cpp:109 ui/messagebox.cpp:115
+#, kde-format
+msgid "GnuPG Audit Log Viewer"
+msgstr "GnuPG Audit-logviewer"
+
+#: ui/messagebox.cpp:121
+#, kde-format
+msgid "Signing failed: %1"
+msgstr "Ondertekening mislukt: %1"
+
+#: ui/messagebox.cpp:122
+#, kde-format
+msgid "Signing successful"
+msgstr "Ondertekenen geslaagd"
+
+#: ui/messagebox.cpp:133
+#, kde-format
+msgid "Encryption failed: %1"
+msgstr "Versleuteling mislukt: %1"
+
+#: ui/messagebox.cpp:134
+#, kde-format
+msgid "Encryption successful"
+msgstr "Versleutelen geslaagd"
+
+#: ui/messagebox.cpp:155
+#, kde-format
+msgid "Signing Result"
+msgstr "Resultaat ondertekening"
+
+#: ui/messagebox.cpp:167
+#, kde-format
+msgid "Signing Error"
+msgstr "Fout bij ondertekenen"
+
+#: ui/messagebox.cpp:179 ui/messagebox.cpp:203
+#, kde-format
+msgid "Encryption Result"
+msgstr "Resultaat versleuteling"
+
+#: ui/messagebox.cpp:191 ui/messagebox.cpp:215
+#, kde-format
+msgid "Encryption Error"
+msgstr "Fout bij versleutelen"
+
+#: ui/messagebox.cpp:263
+#, kde-format
+msgid "&Show Audit Log"
+msgstr "Audit-log &tonen"
+
+#: ui/progressdialog.cpp:91
+#, kde-format
+msgid "%1: %2"
+msgstr "%1: %2"
+
+#~ msgctxt "New X.509 Directory Server"
+#~ msgid "X.509"
+#~ msgstr "X.509"
+
+#~ msgctxt "New OpenPGP Directory Server"
+#~ msgid "OpenPGP"
+#~ msgstr "OpenPGP"
+
+#~ msgid "Scheme"
+#~ msgstr "Schema"
+
+#~ msgid "X.509"
+#~ msgstr "X.509"
+
+#~ msgid ""
+#~ "Select the access scheme (scheme) that the directory service is available "
+#~ "through."
+#~ msgstr ""
+#~ "Selecteer het toegangsschema (schema) waarlangs de directory service "
+#~ "beschikbaar is."
+
+#~ msgid ""
+#~ "Check this column if this directory service is providing S/MIME (X.509) "
+#~ "certificates."
+#~ msgstr ""
+#~ "Markeer deze kolom indien deze directory service S/MIME (X.509)-"
+#~ "certificaten verleent."
+
+#~ msgid ""
+#~ "Check this column if this directory service is providing OpenPGP "
+#~ "certificates."
+#~ msgstr ""
+#~ "Markeer deze kolom indien deze directory service OpenPGP-certificaten "
+#~ "verleent."
+
+#~ msgid "0 - None (no debugging at all)"
+#~ msgstr "0 - Geen (helemaal geen debugging)"
+
+#~ msgid "1 - Basic (some basic debug messages)"
+#~ msgstr "1 - Basis (enkele basis debugmeldingen)"
+
+#~ msgid "2 - Advanced (more verbose debug messages)"
+#~ msgstr "2 - Geavanceerd (meer uitvoerige debugmeldingen)"
+
+#~ msgid "3 - Expert (even more detailed messages)"
+#~ msgstr "3 - Expert (nog meer gedetailleerde meldingen)"
+
+#~ msgid "4 - Guru (all of the debug messages you can get)"
+#~ msgstr "4 - Goeroe (alle debugmeldingen die voorhanden zijn)"
+
+#~ msgid "General"
+#~ msgstr "Algemeen"
+
+#~ msgid "Chiasmus"
+#~ msgstr "Chiasmus"
+
+#~ msgid "Chiasmus command line tool"
+#~ msgstr "Hulpmiddel voor Chiasmus-commandoregel"
+
+#~ msgid "Unsupported protocol \"%1\""
+#~ msgstr "Niet-ondersteund protocol \"%1\""
+
+#~ msgid "File \"%1\" does not exist or is not executable."
+#~ msgstr "Het bestand \"%1\" bestaat niet of is niet uitvoerbaar."
+
+#~ msgid "Output from chiasmus"
+#~ msgstr "Uitvoer van chiasmus"
+
+#~ msgid "Decryption failed: %1"
+#~ msgstr "Ontcijfering mislukt: %1"
+
+#~ msgid ""
+#~ "The following was received on stderr:\n"
+#~ "%1"
+#~ msgstr ""
+#~ "De volgende uitvoer werd op stderr gevonden:\n"
+#~ "%1"
+
+#~ msgid "Failed to load %1: %2"
+#~ msgstr "Kon %1 niet laden: %2"
+
+#~ msgid "Library does not contain the symbol \"Chiasmus\"."
+#~ msgstr "De bibltiotheek bevat geen symbool genaamd \"Chiasmus\"."
+
+#~ msgid "Scanning directory %1..."
+#~ msgstr "De map %1 wordt gescand..."
+
+#~ msgid "GpgME"
+#~ msgstr "GpgME"
+
+#~ msgid "GPGME was compiled without support for %1."
+#~ msgstr "GPGME was gecompileerd zonder ondersteuning voor %1."
+
+#~ msgid "Engine %1 is not installed properly."
+#~ msgstr "Engine %1 is niet juist geïnstalleerd."
+
+#~ msgid "Engine %1 version %2 installed, but at least version %3 is required."
+#~ msgstr ""
+#~ "Engine %1 versie %2 is geïnstalleerd, maar versie %3 of hoger is vereist."
+
+#~ msgid "Unknown problem with engine for protocol %1."
+#~ msgstr "Onbekend probleem met engine voor het protocol %1."
+
+#~ msgid "program terminated unexpectedly"
+#~ msgstr "programma stopte onverwachts"
+
+#~ msgid "program not found or cannot be started"
+#~ msgstr "programma kon niet gevonden of gestart worden"
+
+#~ msgid "<qt>Failed to execute gpgconf:<p>%1</p></qt>"
+#~ msgstr "<qt>Kon gpgconf niet uitvoeren:<p>%1</p></qt>"
+
+#~ msgid ""
+#~ "Could not start gpgconf.\n"
+#~ "Check that gpgconf is in the PATH and that it can be started."
+#~ msgstr ""
+#~ "Kon gpgconf niet starten.\n"
+#~ "Ga na of gpgconf zich in uw zoekpad bevindt (PATH) en u het kunt starten."
+
+#~ msgid "Error from gpgconf while saving configuration: %1"
+#~ msgstr "Fout van gpgconf bij het opslaan van de instellingen: %1"
+
+#~ msgid "Generating DSA key..."
+#~ msgstr "DSA-sleutel wordt aangemaakt..."
+
+#~ msgid "Generating ElGamal key..."
+#~ msgstr "ElGamal-sleutel wordt aangemaakt..."
+
+#~ msgid "Searching for a large prime number..."
+#~ msgstr "Er wordt gezocht op een groot priemgetal..."
+
+#~ msgid ""
+#~ "Waiting for new entropy from random number generator (you might want to "
+#~ "exercise the harddisks or move the mouse)..."
+#~ msgstr ""
+#~ "Wacht op nieuwe entropie van de willekeurige getallengenerator (laat als "
+#~ "u wilt enige activiteit plaats vinden op uw harde schijf of beweeg met uw "
+#~ "muis)..."
+
+#~ msgid "Please wait..."
+#~ msgstr "Even geduld a.u.b..."
+
+#~ msgid ""
+#~ "Starting gpg-agent (you should consider starting a global instance "
+#~ "instead)..."
+#~ msgstr ""
+#~ "gpg-agent wordt gestart (u kunt misschien beter een globale instantie "
+#~ "starten)..."
+
+#~ msgid "While scanning for %1 support in backend %2:"
+#~ msgstr "Tijdens het scannen voor %1-ondersteuning in backend %2:"
+
+#~ msgctxt "progress info: \"%1 of %2\""
+#~ msgid "%1/%2"
+#~ msgstr "%1/%2"
+
+#~ msgid ""
+#~ "OpenPGP key for %1\n"
+#~ "Created: %2\n"
+#~ "Expiry: %3\n"
+#~ "Fingerprint: %4"
+#~ msgstr ""
+#~ "OpenPGP-sleutel voor %1\n"
+#~ "Aangemaakt: %2\n"
+#~ "Verloopt: %3\n"
+#~ "Vingerafdruk: %4"
+
+#~ msgid ""
+#~ "S/MIME key for %1\n"
+#~ "Created: %2\n"
+#~ "Expiry: %3\n"
+#~ "Fingerprint: %4\n"
+#~ "Issuer: %5"
+#~ msgstr ""
+#~ "S/MIME-sleutel voor %1\n"
+#~ "Aangemaakt: %2\n"
+#~ "Verloopt: %3\n"
+#~ "Vingerafdruk: %4\n"
+#~ "Uitgever: %5"
+
+#~ msgid "Copy Audit Log to Clipboard"
+#~ msgstr "Audit-log naar klembord kopiëren"
+
+#~ msgid "Add or Change Directory Service"
+#~ msgstr "Directory service toevoegen of verbergen"
+
+#~ msgid "&Server name:"
+#~ msgstr "&Servernaam:"
+
+#~ msgid "389"
+#~ msgstr "389"
+
+#~ msgid "&User name (optional):"
+#~ msgstr "Gebr&uikersnaam (optioneel):"
+
+#~ msgid "Pass&word (optional):"
+#~ msgstr "Wacht&woord (optioneel):"
+
+#~ msgid "&OK"
+#~ msgstr "&OK"
+
+#~ msgid "&Cancel"
+#~ msgstr "&Annuleren"
+
+#~ msgid "&Base DN:"
+#~ msgstr "&Base DN:"
+
+#~ msgid "&Port:"
+#~ msgstr "&Poort:"
+
+#~ msgctxt "NAME OF TRANSLATORS"
+#~ msgid "Your names"
+#~ msgstr ""
+#~ "Bram Schoenmakers - 2004 t/m 2007,Tom Albers - 2004,Rinse de Vries - "
+#~ "2004; 2007,Antoom Tolboom"
+
+#~ msgctxt "EMAIL OF TRANSLATORS"
+#~ msgid "Your emails"
+#~ msgstr "bramschoenmakers@kde.nl,tomalbers@kde.nl,rinsedevries@kde.nl,"
+
+#~ msgid "(Unknown Protocol)"
+#~ msgstr "(Onbekend protocol)"
+
+#~ msgid "Error while initializing plugin \"%1\""
+#~ msgstr "Fout tijdens initialiseren plugin \"%1\""
+
+#~ msgid "failed"
+#~ msgstr "mislukt"
+
+#~ msgctxt ""
+#~ "Items in Kleo::BackendConfigWidget listview (1: protocol; 2: "
+#~ "implementation name)"
+#~ msgid "%1 (%2)"
+#~ msgstr "%1 (%2)"
+
+#~ msgid "Available Backends"
+#~ msgstr "Beschikbare backends"
+
+#~ msgid "Confi&gure..."
+#~ msgstr "&Instellen..."
+
+#~ msgid "Rescan"
+#~ msgstr "Opnieuw scannen"
+
+#~ msgid "The following problems where encountered during scanning:"
+#~ msgstr "Tijdens het scannen kwamen de volgende problemen naar boven:"
+
+#~ msgctxt "@title:window Results of the scanning"
+#~ msgid "Scan Results"
+#~ msgstr "Scanresultaten"
--- /dev/null
+# Translation of libkleopatra to Norwegian Nynorsk
+#
+# Tor Hveem <tor@hveem.no>, 2004.
+# Gaute Hvoslef Kvalnes <gaute@verdsveven.com>, 2004, 2005.
+# Karl Ove Hufthammer <karl@huftis.org>, 2008, 2013.
+# Eirik U. Birkeland <eirbir@gmail.com>, 2009.
+msgid ""
+msgstr ""
+"Project-Id-Version: libkleopatra\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2017-07-12 06:56+0200\n"
+"PO-Revision-Date: 2013-05-12 14:26+0200\n"
+"Last-Translator: Karl Ove Hufthammer <karl@huftis.org>\n"
+"Language-Team: Norwegian Nynorsk <i18n-nn@lister.ping.uio.no>\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.5\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Environment: kde\n"
+"X-Accelerator-Marker: &\n"
+"X-Text-Markup: kde4\n"
+
+#: kleo/checksumdefinition.cpp:107
+#, kde-format
+msgid "Error in checksum definition %1: %2"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:157
+#, kde-format
+msgid "Cannot use both %f and | in '%1'"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:167
+#, kde-format
+msgid "Quoting error in '%1' entry"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:170
+#, kde-format
+msgid "'%1' too complex (would need shell)"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:174
+#, kde-format
+msgid "'%1' entry is empty/missing"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:183
+#, kde-format
+msgid "'%1' empty or not found"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:222
+#, kde-format
+msgid "'id' entry is empty/missing"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:225
+#, kde-format
+msgid "'output-file' entry is empty/missing"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:228
+#, kde-format
+msgid "'file-patterns' entry is empty/missing"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:395
+#, kde-format
+msgid "Caught unknown exception in group %1"
+msgstr ""
+
+#: kleo/dn.cpp:507
+#, kde-format
+msgid "Common name"
+msgstr "Vanleg namn"
+
+#: kleo/dn.cpp:508
+#, kde-format
+msgid "Surname"
+msgstr "Etternamn"
+
+#: kleo/dn.cpp:509
+#, kde-format
+msgid "Given name"
+msgstr "Fornamn"
+
+#: kleo/dn.cpp:510
+#, kde-format
+msgid "Location"
+msgstr "Stad"
+
+#: kleo/dn.cpp:511
+#, kde-format
+msgid "Title"
+msgstr "Tittel"
+
+#: kleo/dn.cpp:512
+#, kde-format
+msgid "Organizational unit"
+msgstr "Organisasjonseining"
+
+#: kleo/dn.cpp:513
+#, kde-format
+msgid "Organization"
+msgstr "Organisasjon"
+
+#: kleo/dn.cpp:514
+#, kde-format
+msgid "Postal code"
+msgstr "Postnummer"
+
+#: kleo/dn.cpp:515
+#, kde-format
+msgid "Country code"
+msgstr "Landkode"
+
+#: kleo/dn.cpp:516
+#, kde-format
+msgid "State or province"
+msgstr "Stat eller provins"
+
+#: kleo/dn.cpp:517
+#, kde-format
+msgid "Domain component"
+msgstr "Domenekomponent"
+
+#: kleo/dn.cpp:518
+#, kde-format
+msgid "Business category"
+msgstr "Forretningskategori"
+
+#: kleo/dn.cpp:519
+#, kde-format
+msgid "Email address"
+msgstr "E-postadresse"
+
+#: kleo/dn.cpp:520
+#, kde-format
+msgid "Mail address"
+msgstr "Postadresse"
+
+#: kleo/dn.cpp:521
+#, kde-format
+msgid "Mobile phone number"
+msgstr "Mobiltelefonnummer"
+
+#: kleo/dn.cpp:522
+#, kde-format
+msgid "Telephone number"
+msgstr "Telefonnummer"
+
+#: kleo/dn.cpp:523
+#, kde-format
+msgid "Fax number"
+msgstr "Faksnummer"
+
+#: kleo/dn.cpp:524
+#, kde-format
+msgid "Street address"
+msgstr "Gateadresse"
+
+#: kleo/dn.cpp:525
+#, kde-format
+msgid "Unique ID"
+msgstr "Eintydig ID"
+
+#: kleo/enum.cpp:57
+#, kde-format
+msgid "Inline OpenPGP (deprecated)"
+msgstr "Innebygd OpenPGP (ikkje tilrådd)"
+
+#: kleo/enum.cpp:62
+#, kde-format
+msgid "OpenPGP/MIME"
+msgstr "OpenPGP/MIME"
+
+#: kleo/enum.cpp:67 ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "S/MIME"
+msgstr "S/MIME"
+
+#: kleo/enum.cpp:72
+#, kde-format
+msgid "S/MIME Opaque"
+msgstr "S/MIME Opaque"
+
+#: kleo/enum.cpp:104
+#, kde-format
+msgid "Any"
+msgstr "Alle"
+
+#: kleo/enum.cpp:177
+#, kde-format
+msgid "Never Encrypt"
+msgstr "Krypter aldri"
+
+#: kleo/enum.cpp:179
+#, kde-format
+msgid "Always Encrypt"
+msgstr "Krypter alltid"
+
+#: kleo/enum.cpp:181
+#, kde-format
+msgid "Always Encrypt If Possible"
+msgstr "Krypter alltid viss mogleg"
+
+#: kleo/enum.cpp:183 kleo/enum.cpp:240
+#, kde-format
+msgid "Ask"
+msgstr "Spør"
+
+#: kleo/enum.cpp:185 kleo/enum.cpp:242
+#, kde-format
+msgid "Ask Whenever Possible"
+msgstr "Spør viss mogleg"
+
+#: kleo/enum.cpp:187
+#, kde-kuit-format
+msgctxt "no specific preference"
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>ingen</placeholder>"
+
+#: kleo/enum.cpp:234
+#, kde-format
+msgid "Never Sign"
+msgstr "Signer aldri"
+
+#: kleo/enum.cpp:236
+#, kde-format
+msgid "Always Sign"
+msgstr "Signer alltid"
+
+#: kleo/enum.cpp:238
+#, kde-format
+msgid "Always Sign If Possible"
+msgstr "Signer alltid viss mogleg"
+
+#: kleo/enum.cpp:244
+#, kde-format
+msgctxt "no specific preference"
+msgid "<none>"
+msgstr "<ingen>"
+
+#: kleo/keyfiltermanager.cpp:85
+#, kde-format
+msgid "All Certificates"
+msgstr "Alle sertifikat"
+
+#: kleo/keyfiltermanager.cpp:100
+#, kde-format
+msgid "My Certificates"
+msgstr "Sertifikata mine"
+
+#: kleo/keyfiltermanager.cpp:118
+#, kde-format
+msgid "Trusted Certificates"
+msgstr "Tiltrudde sertifikat"
+
+#: kleo/keyfiltermanager.cpp:135
+#, kde-format
+msgid "Fully Trusted Certificates"
+msgstr ""
+
+#: kleo/keyfiltermanager.cpp:152
+#, kde-format
+msgid "Other Certificates"
+msgstr "Andre sertifikat"
+
+#: kleo/keyfiltermanager.cpp:166
+#, kde-format
+msgid "VS-compliant Certificates"
+msgstr ""
+
+#: kleo/keyfiltermanager.cpp:184
+#, kde-format
+msgid "Not validated Certificates"
+msgstr ""
+
+#: ui/auditlogviewer.cpp:49
+#, kde-format
+msgid "View GnuPG Audit Log"
+msgstr "Vis GnuPG-revisjonslogg"
+
+#: ui/auditlogviewer.cpp:53
+#, kde-format
+msgid "&Copy to Clipboard"
+msgstr "&Kopier til utklippstavla"
+
+#: ui/auditlogviewer.cpp:59
+#, kde-format
+msgid "&Save to Disk..."
+msgstr "&Lagra til disk …"
+
+#: ui/auditlogviewer.cpp:95
+#, kde-format
+msgid "Choose File to Save GnuPG Audit Log to"
+msgstr "Vel fila du vil lagra GnuPG-revisjonsloggen til"
+
+#: ui/auditlogviewer.cpp:118
+#, kde-format
+msgid "Could not save to file \"%1\": %2"
+msgstr "Klarte ikkje lagra til fila «%1»: %2"
+
+#: ui/auditlogviewer.cpp:120
+#, kde-format
+msgid "File Save Error"
+msgstr "Feil ved fillagring"
+
+#: ui/cryptoconfigdialog.cpp:44
+#, kde-format
+msgid "Configure GnuPG Backend"
+msgstr "Set opp GnuPG-motor"
+
+#: ui/cryptoconfigdialog.cpp:55
+#, kde-format
+msgid "&Reset"
+msgstr "&Tilbakestill"
+
+#: ui/cryptoconfigmodule.cpp:160
+#, kde-format
+msgid "GpgConf Error"
+msgstr "GpgConf-feil"
+
+#: ui/cryptoconfigmodule.cpp:216
+#, kde-format
+msgid ""
+"The gpgconf tool used to provide the information for this dialog does not "
+"seem to be installed properly. It did not return any components. Try running "
+"\"%1\" on the command line for more information."
+msgstr ""
+"gpgconf-verktøyet som skal brukast til å gje informasjon til dette "
+"dialogvindauget ser ikkje ut til å vera installert rett. Det gav ikkje opp "
+"nokon komponentar. Prøv å køyra «%1» på kommandolinja for meir informasjon."
+
+#: ui/cryptoconfigmodule.cpp:496
+#, kde-format
+msgctxt ""
+"Translate this to 'yes' or 'no' (use the English words!) depending on "
+"whether your language uses Sentence style capitalisation in GUI labels (yes) "
+"or not (no). Context: We get some backend strings in that have the wrong "
+"capitalizaion (in English, at least) so we need to force the first character "
+"to upper-case. It is this behaviour you can control for your language with "
+"this translation."
+msgid "yes"
+msgstr "yes"
+
+#: ui/cryptoconfigmodule.cpp:546
+#, kde-format
+msgid "0 - None"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:547
+#, kde-format
+msgid "1 - Basic"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:548
+#, kde-format
+msgid "2 - Verbose"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:549
+#, kde-format
+msgid "3 - More Verbose"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:550
+#, kde-format
+msgid "4 - All"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:559
+#, kde-format
+msgid "Set the debugging level to"
+msgstr "Set feilsøkingsnivået til"
+
+#: ui/cryptoconfigmodule.cpp:787
+#, kde-format
+msgid "Show..."
+msgstr "Vis …"
+
+#: ui/cryptoconfigmodule.cpp:787 ui/cryptoconfigmodule.cpp:876
+#, kde-format
+msgid "Edit..."
+msgstr "Rediger …"
+
+#: ui/cryptoconfigmodule.cpp:841
+#, kde-format
+msgid "Configure LDAP Servers"
+msgstr "Set opp LDAP-tenarar"
+
+#: ui/cryptoconfigmodule.cpp:862
+#, kde-format
+msgid "None configured"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:864
+#, kde-format
+msgid "1 server configured"
+msgid_plural "%1 servers configured"
+msgstr[0] "1 tenar sett opp"
+msgstr[1] "%1 tenarar sette opp"
+
+#: ui/cryptoconfigmodule.cpp:879
+#, kde-format
+msgid "Use keyserver at"
+msgstr "Bruk nøkkeltenar på"
+
+#: ui/cryptoconfigmodule.cpp:968
+#, kde-format
+msgid "Configure Keyservers"
+msgstr "Set opp nøkkeltenarar"
+
+#: ui/directoryserviceswidget.cpp:67
+#, kde-format
+msgctxt "default server name, keep it a valid domain name, ie. no spaces"
+msgid "server"
+msgstr "tenar"
+
+#: ui/directoryserviceswidget.cpp:95
+#, kde-format
+msgid "hkp"
+msgstr "hkp"
+
+#: ui/directoryserviceswidget.cpp:96
+#, kde-format
+msgid "http"
+msgstr "http"
+
+#: ui/directoryserviceswidget.cpp:97
+#, kde-format
+msgid "https"
+msgstr "https"
+
+#: ui/directoryserviceswidget.cpp:98
+#, kde-format
+msgid "ftp"
+msgstr "ftp"
+
+#: ui/directoryserviceswidget.cpp:99
+#, kde-format
+msgid "ftps"
+msgstr "ftps"
+
+#: ui/directoryserviceswidget.cpp:100
+#, kde-format
+msgid "ldap"
+msgstr "ldap"
+
+#: ui/directoryserviceswidget.cpp:101
+#, kde-format
+msgid "ldaps"
+msgstr "ldaps"
+
+#: ui/directoryserviceswidget.cpp:588
+#, kde-format
+msgid "Server Name"
+msgstr "Tenarnamn"
+
+#: ui/directoryserviceswidget.cpp:589
+#, kde-format
+msgid "Server Port"
+msgstr "Tenarport"
+
+#: ui/directoryserviceswidget.cpp:590
+#, kde-format
+msgid "Base DN"
+msgstr "Grunn-DN"
+
+#: ui/directoryserviceswidget.cpp:591
+#, kde-format
+msgid "User Name"
+msgstr "Brukarnamn"
+
+#: ui/directoryserviceswidget.cpp:592
+#, kde-format
+msgid "Password"
+msgstr "Passord"
+
+#: ui/directoryserviceswidget.cpp:614
+#, kde-format
+msgid "(read-only)"
+msgstr "(skriveverna)"
+
+#: ui/directoryserviceswidget.cpp:616
+#, kde-format
+msgctxt "amended tooltip; %1: original tooltip"
+msgid "%1 (read-only)"
+msgstr "%1 (skriveverna)"
+
+#: ui/directoryserviceswidget.cpp:739
+#, kde-format
+msgid ""
+"Enter the name or IP address of the server hosting the directory service."
+msgstr "Skriv inn namnet eller IP-adressa til tenaren som held katalogtenesta."
+
+#: ui/directoryserviceswidget.cpp:741
+#, kde-format
+msgid ""
+"<b>(Optional, the default is fine in most cases)</b> Pick the port number "
+"the directory service is listening on."
+msgstr ""
+"<b>(Dette er valfritt. Standardverdien er vanlegvis OK.)</b> Vel "
+"portnummeret som katalogtenesta lyttar på."
+
+#: ui/directoryserviceswidget.cpp:744
+#, kde-format
+msgid ""
+"<b>(Only for LDAP)</b> Enter the base DN for this LDAP server to limit "
+"searches to only that subtree of the directory."
+msgstr ""
+"<b>(Berre for LDAP)</b> Skriv inn grunn-DN-en til denne LDAP-tenaren, for å "
+"avgrensa søk til berre dette deltreet i katalogen."
+
+#: ui/directoryserviceswidget.cpp:747
+#, kde-format
+msgid "<b>(Optional)</b> Enter your user name here, if needed."
+msgstr "<b>(Valfritt)</b> Skriv om nødvendig inn brukarnamnet ditt her."
+
+#: ui/directoryserviceswidget.cpp:749
+#, kde-format
+msgid ""
+"<b>(Optional, not recommended)</b> Enter your password here, if needed. Note "
+"that the password will be saved in the clear in a config file in your home "
+"directory."
+msgstr ""
+"<b>(Valfritt, og ikkje tilrådd)</b> Skriv om nødvendig inn passordet ditt "
+"her. Merk at passordet vert lagra som reintekst i oppsettfila i heimemappa "
+"di."
+
+#. i18n: ectx: property (windowTitle), widget (QWidget, DirectoryServicesWidget)
+#: ui/directoryserviceswidget.ui:14
+#, kde-format
+msgid "Directory Services Configuration"
+msgstr "Oppsett av katalogtenester"
+
+#. i18n: ectx: property (text), widget (QLabel, pgpKSLabel)
+#: ui/directoryserviceswidget.ui:22
+#, kde-format
+msgid "OpenPGP Keyserver:"
+msgstr ""
+
+#. i18n: ectx: property (title), widget (QGroupBox, x500LA)
+#: ui/directoryserviceswidget.ui:35
+#, kde-format
+msgid "X509 Directory services:"
+msgstr ""
+
+#. i18n: ectx: property (whatsThis), widget (QTreeView, treeView)
+#: ui/directoryserviceswidget.ui:43
+#, kde-format
+msgid ""
+"This is a list of all directory services that are configured for use with "
+"X.509."
+msgstr ""
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:70
+#, kde-format
+msgid "Click to add a service"
+msgstr "Trykk for å leggja til ei teneste"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:73
+#, kde-format
+msgid ""
+"Click this button to create a new directory service entry as a clone of the "
+"currently selected one (or with default values, if no other is selected). "
+"You can then configure details in the table on the left hand."
+msgstr ""
+"Trykk på denne knappen for å leggja til ei ny katalogtenesteoppføring som "
+"ein klon av den valde oppføringa, eller med standardverdiar om du ikkje har "
+"valt noko oppføring. Du kan endra detaljane til oppføringa i tabellen til "
+"venstre."
+
+#. i18n: ectx: property (text), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:76
+#, kde-format
+msgid "New"
+msgstr "Ny"
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:92
+#, kde-format
+msgid "Click to remove the currently selected service"
+msgstr "Trykk for å fjerna den valde tenesta"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:95
+#, kde-format
+msgid ""
+"Click this button to remove the currently selected directory service. The "
+"change will only take effect once you acknowledge the main configuration "
+"dialog."
+msgstr ""
+"Trykk på denne knappen for å fjerna den valde katalogtenesta. Endringar trer "
+"først i kraft når du har stadfesta endringae i hovudoppsettvindauget."
+
+#. i18n: ectx: property (text), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:98
+#, kde-format
+msgid "Delete"
+msgstr "Slett"
+
+#. i18n: ectx: property (whatsThis), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:128
+#, kde-format
+msgid ""
+"Use this option to switch display of username and password information on or "
+"off in the above table."
+msgstr ""
+"Bruk dette valet for å visa/gøyma brukarnamn og passord i tabellen over."
+
+#. i18n: ectx: property (text), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:131
+#, kde-format
+msgid "Show user and password information"
+msgstr "Vis brukarnamn og passord"
+
+#: ui/dnattributeorderconfigwidget.cpp:73
+#, kde-format
+msgid "Description"
+msgstr "Skildring"
+
+#: ui/dnattributeorderconfigwidget.cpp:91
+#, kde-format
+msgid "Available attributes:"
+msgstr "Tilgjengelege attributt:"
+
+#: ui/dnattributeorderconfigwidget.cpp:92
+#, kde-format
+msgid "Current attribute order:"
+msgstr "Gjeldande attributtrekkjefølgje:"
+
+#: ui/dnattributeorderconfigwidget.cpp:112
+#, kde-format
+msgid "All others"
+msgstr "Alle andre"
+
+#: ui/dnattributeorderconfigwidget.cpp:129
+#, kde-format
+msgid "Move to top"
+msgstr "Flytt øvst"
+
+#: ui/dnattributeorderconfigwidget.cpp:130
+#, kde-format
+msgid "Move one up"
+msgstr "Flytt éin opp"
+
+#: ui/dnattributeorderconfigwidget.cpp:131
+#, kde-format
+msgid "Remove from current attribute order"
+msgstr "Fjern frå gjeldande attributtrekkjefølgje"
+
+#: ui/dnattributeorderconfigwidget.cpp:132
+#, kde-format
+msgid "Add to current attribute order"
+msgstr "Legg til gjeldande attributtrekkjefølgje"
+
+#: ui/dnattributeorderconfigwidget.cpp:133
+#, kde-format
+msgid "Move one down"
+msgstr "Flytt éin ned"
+
+#: ui/dnattributeorderconfigwidget.cpp:134
+#, kde-format
+msgid "Move to bottom"
+msgstr "Flytt nedst"
+
+#: ui/keyapprovaldialog.cpp:87
+#, kde-kuit-format
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>ingen</placeholder>"
+
+#: ui/keyapprovaldialog.cpp:88
+#, kde-format
+msgid "Never Encrypt with This Key"
+msgstr "Krypter aldri med denne nøkkelen"
+
+#: ui/keyapprovaldialog.cpp:89
+#, kde-format
+msgid "Always Encrypt with This Key"
+msgstr "Krypter alltid med denne nøkkelen"
+
+#: ui/keyapprovaldialog.cpp:90
+#, kde-format
+msgid "Encrypt Whenever Encryption is Possible"
+msgstr "Krypter alltid når det er mogleg"
+
+#: ui/keyapprovaldialog.cpp:91
+#, kde-format
+msgid "Always Ask"
+msgstr "Spør alltid"
+
+#: ui/keyapprovaldialog.cpp:92
+#, kde-format
+msgid "Ask Whenever Encryption is Possible"
+msgstr "Spør alltid viss kryptering er mogleg"
+
+#: ui/keyapprovaldialog.cpp:113
+#, kde-format
+msgid "Encryption Key Approval"
+msgstr "Godkjenning av krypteringsnøkkel"
+
+#: ui/keyapprovaldialog.cpp:129
+#, kde-format
+msgid "The following keys will be used for encryption:"
+msgstr "Desse nøklane vert brukte til kryptering:"
+
+#: ui/keyapprovaldialog.cpp:145
+#, kde-format
+msgid "Your keys:"
+msgstr "Nøklane dine:"
+
+#: ui/keyapprovaldialog.cpp:157
+#, kde-format
+msgid "Recipient:"
+msgstr "Mottakar:"
+
+#: ui/keyapprovaldialog.cpp:162
+#, kde-format
+msgid "Encryption keys:"
+msgstr "Krypteringsnøklar:"
+
+#: ui/keyapprovaldialog.cpp:169
+#, kde-format
+msgid "Encryption preference:"
+msgstr "Krypteringsval:"
+
+#: ui/keyrequester.cpp:118
+#, kde-format
+msgid "Clear"
+msgstr "Tøm"
+
+#: ui/keyrequester.cpp:121
+#, kde-format
+msgid "Change..."
+msgstr "Endra …"
+
+#: ui/keyrequester.cpp:232 ui/keyselectiondialog.cpp:256
+#, kde-kuit-format
+msgid "<placeholder>unknown</placeholder>"
+msgstr "<placeholder>ukjend</placeholder>"
+
+#: ui/keyrequester.cpp:246 ui/keyselectiondialog.cpp:657
+#, kde-format
+msgid ""
+"<qt><p>An error occurred while fetching the keys from the backend:</p><p><b>"
+"%1</b></p></qt>"
+msgstr ""
+"<qt><p>Det oppstod ein feil då nøklane vart henta frå motoren:</p><p><b>%1</"
+"b></p></qt>"
+
+#: ui/keyrequester.cpp:251 ui/keyrequester.cpp:283 ui/keyrequester.cpp:306
+#: ui/keyselectiondialog.cpp:630 ui/keyselectiondialog.cpp:662
+#, kde-format
+msgid "Key Listing Failed"
+msgstr "Feil ved nøkkelopplisting"
+
+#: ui/keyrequester.cpp:281
+#, kde-format
+msgid ""
+"The OpenPGP backend does not support listing keys. Check your installation."
+msgstr ""
+"OpenPGP-motoren støttar ikkje nøkkelopplisting. Kontroller at alt er rett "
+"installert."
+
+#: ui/keyrequester.cpp:304
+#, kde-format
+msgid ""
+"The S/MIME backend does not support listing keys. Check your installation."
+msgstr ""
+"S/MIME-motoren støttar ikkje nøkkelopplisting. Kontroller at alt er rett "
+"installert."
+
+#: ui/keyrequester.cpp:426
+#, kde-format
+msgid "OpenPGP Key Selection"
+msgstr "Val av OpenPGP-nøkkel"
+
+#: ui/keyrequester.cpp:427
+#, kde-format
+msgid "Please select an OpenPGP key to use."
+msgstr "Vel kva OpenPGP-nøkkel du vil bruka."
+
+#: ui/keyrequester.cpp:429
+#, kde-format
+msgid "S/MIME Key Selection"
+msgstr "Val av S/MIME-nøkkel"
+
+#: ui/keyrequester.cpp:430
+#, kde-format
+msgid "Please select an S/MIME key to use."
+msgstr "Vel kva S/MIME-nøkkel du vil bruka."
+
+#: ui/keyrequester.cpp:432
+#, kde-format
+msgid "Key Selection"
+msgstr "Nøkkelval"
+
+#: ui/keyrequester.cpp:433
+#, kde-format
+msgid "Please select an (OpenPGP or S/MIME) key to use."
+msgstr "Vel kva nøkkel (OpenPGP eller S/MIME) du vil bruka."
+
+#: ui/keyselectioncombo.cpp:195
+#, kde-format
+msgctxt "Name <email> (validity, type, created: date)"
+msgid "%1 (%2, %3, created: %4)"
+msgstr ""
+
+#: ui/keyselectioncombo.cpp:196
+#, kde-format
+msgctxt "Name <email>"
+msgid "%1 <%2>"
+msgstr ""
+
+#: ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "OpenPGP"
+msgstr "OpenPGP"
+
+#: ui/keyselectioncombo.cpp:347
+#, kde-format
+msgid "Loading keys ..."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:98
+#, kde-format
+msgid "The key is not valid."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:106
+#, kde-format
+msgid "The key is expired."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:110
+#, kde-format
+msgid "The key is revoked."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:114
+#, kde-format
+msgid "The key is disabled."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:122
+#, kde-format
+msgid "The key is not designated for encryption."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:128
+#, kde-format
+msgid "The key is not designated for signing."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:134
+#, kde-format
+msgid "The key is not designated for certifying."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:140
+#, kde-format
+msgid "The key is not designated for authentication."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:148
+#, kde-format
+msgid "The key is not secret."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:163
+#, kde-format
+msgid "The key is not trusted enough."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:169
+#, kde-format
+msgid "The key can be used."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:230
+#, kde-format
+msgid "Key ID"
+msgstr "Nøkkel-ID"
+
+#: ui/keyselectiondialog.cpp:231
+#, kde-format
+msgid "User ID"
+msgstr "Brukar-ID"
+
+#: ui/keyselectiondialog.cpp:279
+#, kde-format
+msgid "never"
+msgstr "aldri"
+
+#: ui/keyselectiondialog.cpp:289 ui/keyselectiondialog.cpp:291
+#: ui/keyselectiondialog.cpp:300 ui/keyselectiondialog.cpp:302
+#, kde-format
+msgid "unknown"
+msgstr "ukjend"
+
+#: ui/keyselectiondialog.cpp:289
+#, kde-format
+msgid "OpenPGP key for <b>%1</b>"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:291
+#, kde-format
+msgid "S/MIME key for <b>%1</b>"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:298
+#, kde-format
+msgctxt "Key creation date"
+msgid "Created"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:299
+#, kde-format
+msgctxt "Key Expiration date"
+msgid "Expiry"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:300
+#, kde-format
+msgctxt "Key fingerprint"
+msgid "Fingerprint"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:302
+#, kde-format
+msgctxt "Key issuer"
+msgid "Issuer"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:304
+#, kde-format
+msgctxt "Key status"
+msgid "Status"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:456
+#, kde-format
+msgid "Search for &External Certificates"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:470
+#, kde-format
+msgid "&Search for:"
+msgstr "&Søk etter:"
+
+#: ui/keyselectiondialog.cpp:494
+#, kde-format
+msgid "&Remember choice"
+msgstr "&Hugs valet"
+
+#: ui/keyselectiondialog.cpp:497
+#, kde-format
+msgid ""
+"<qt><p>If you check this box your choice will be stored and you will not be "
+"asked again.</p></qt>"
+msgstr ""
+"<qt><p>Viss det er kryssa av her, vert valet ditt lagra, slik at du ikkje "
+"vert spurd igjen.</p></qt>"
+
+#: ui/keyselectiondialog.cpp:509
+#, kde-format
+msgid "&Reread Keys"
+msgstr "&Les nøklar på nytt"
+
+#: ui/keyselectiondialog.cpp:510
+#, kde-format
+msgid "&Start Certificate Manager"
+msgstr "&Start sertifikathandsamar"
+
+#: ui/keyselectiondialog.cpp:628
+#, kde-format
+msgid "No backends found for listing keys. Check your installation."
+msgstr ""
+"Fann ikkje nokon motor for nøkkelopplisting. Kontroller at alt er rett "
+"installert."
+
+#: ui/keyselectiondialog.cpp:644
+#, kde-format
+msgid "Could not start certificate manager; please check your installation."
+msgstr ""
+"Klarte ikkje starta sertifikathandsamaren. Kontroller at alt er rett "
+"installert."
+
+#: ui/keyselectiondialog.cpp:646
+#, kde-format
+msgid "Certificate Manager Error"
+msgstr "Feil i sertifikathandtering"
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Checking selected keys..."
+msgstr "Granskar valde nøklar …"
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Fetching keys..."
+msgstr "Hentar nøklar …"
+
+#: ui/keyselectiondialog.cpp:731
+#, kde-format
+msgid ""
+"<qt>One backend returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgid_plural ""
+"<qt>%1 backends returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgstr[0] ""
+"<qt>Ein krypteringsmotor svarde med avkorta data.<p>Ikkje alle tilgjengelege "
+"nøklar vert viste.</p></qt>"
+msgstr[1] ""
+"<qt>%1 krypteringsmotorar svarde med avkorta data.<p>Ikkje alle "
+"tilgjengelege nøklar vert viste.</p></qt>"
+
+#: ui/keyselectiondialog.cpp:736
+#, kde-format
+msgid "Key List Result"
+msgstr "Nøkkelliste-resultat"
+
+#: ui/keyselectiondialog.cpp:856
+#, kde-format
+msgid "Recheck Key"
+msgstr "Sjekk nøkkel på nytt"
+
+#: ui/messagebox.cpp:71
+#, kde-format
+msgid "Your system does not have support for GnuPG Audit Logs"
+msgstr "Systemet ditt støttar ikkje GnuPG-revisjonsloggar"
+
+#: ui/messagebox.cpp:72
+#, kde-format
+msgid "System Error"
+msgstr "Systemfeil"
+
+#: ui/messagebox.cpp:79
+#, kde-format
+msgid ""
+"An error occurred while trying to retrieve the GnuPG Audit Log:\n"
+"%1"
+msgstr ""
+"Det oppstod ein feil då GnuPG-revisjonsloggen skulle hentast:\n"
+"%1"
+
+#: ui/messagebox.cpp:81
+#, kde-format
+msgid "GnuPG Audit Log Error"
+msgstr "Loggfeil for GnuPG-revisjonsloggar"
+
+#: ui/messagebox.cpp:88
+#, kde-format
+msgid "No GnuPG Audit Log available for this operation."
+msgstr ""
+"Det er ikkje nokon GnuPG-revisjonslogg tilgjengeleg for denne operasjonen."
+
+#: ui/messagebox.cpp:89
+#, kde-format
+msgid "No GnuPG Audit Log"
+msgstr "Ingen GnuPG-revisjonslogg"
+
+#: ui/messagebox.cpp:109 ui/messagebox.cpp:115
+#, kde-format
+msgid "GnuPG Audit Log Viewer"
+msgstr "Loggvisar for GnuPG-revisjonsloggar"
+
+#: ui/messagebox.cpp:121
+#, kde-format
+msgid "Signing failed: %1"
+msgstr "Feil ved signering: %1"
+
+#: ui/messagebox.cpp:122
+#, kde-format
+msgid "Signing successful"
+msgstr "Signering fullført"
+
+#: ui/messagebox.cpp:133
+#, kde-format
+msgid "Encryption failed: %1"
+msgstr "Feil ved kryptering: %1"
+
+#: ui/messagebox.cpp:134
+#, kde-format
+msgid "Encryption successful"
+msgstr "Kryptering fullført"
+
+#: ui/messagebox.cpp:155
+#, kde-format
+msgid "Signing Result"
+msgstr "Signeringsresultat"
+
+#: ui/messagebox.cpp:167
+#, kde-format
+msgid "Signing Error"
+msgstr "Signeringsfeil"
+
+#: ui/messagebox.cpp:179 ui/messagebox.cpp:203
+#, kde-format
+msgid "Encryption Result"
+msgstr "Krypteringsresultat"
+
+#: ui/messagebox.cpp:191 ui/messagebox.cpp:215
+#, kde-format
+msgid "Encryption Error"
+msgstr "Krypteringsfeil"
+
+#: ui/messagebox.cpp:263
+#, kde-format
+msgid "&Show Audit Log"
+msgstr "&Vis revisjonslogg"
+
+#: ui/progressdialog.cpp:91
+#, kde-format
+msgid "%1: %2"
+msgstr "%1: %2"
--- /dev/null
+# translation of libkleopatra.po to Punjabi
+#
+# Amanpreet Singh Alam <aalam@redhat.com>, 2004, 2005.
+# A S Alam <aalam@users.sf.net>, 2007, 2010.
+# ASB <aalam@users.sf.net>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: libkleopatra\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2017-07-12 06:56+0200\n"
+"PO-Revision-Date: 2010-10-11 06:52+0530\n"
+"Last-Translator: A S Alam <aalam@users.sf.net>\n"
+"Language-Team: Punjabi/Panjabi <punjabi-users@lists.sf.net>\n"
+"Language: pa\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Lokalize 1.1\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+
+#: kleo/checksumdefinition.cpp:107
+#, kde-format
+msgid "Error in checksum definition %1: %2"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:157
+#, kde-format
+msgid "Cannot use both %f and | in '%1'"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:167
+#, kde-format
+msgid "Quoting error in '%1' entry"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:170
+#, kde-format
+msgid "'%1' too complex (would need shell)"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:174
+#, kde-format
+msgid "'%1' entry is empty/missing"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:183
+#, kde-format
+msgid "'%1' empty or not found"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:222
+#, kde-format
+msgid "'id' entry is empty/missing"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:225
+#, kde-format
+msgid "'output-file' entry is empty/missing"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:228
+#, kde-format
+msgid "'file-patterns' entry is empty/missing"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:395
+#, kde-format
+msgid "Caught unknown exception in group %1"
+msgstr ""
+
+#: kleo/dn.cpp:507
+#, kde-format
+msgid "Common name"
+msgstr "ਆਮ ਨਾਂ"
+
+#: kleo/dn.cpp:508
+#, kde-format
+msgid "Surname"
+msgstr "ਉਪਨਾਂ"
+
+#: kleo/dn.cpp:509
+#, kde-format
+msgid "Given name"
+msgstr "ਦਿੱਤਾ ਨਾਂ"
+
+#: kleo/dn.cpp:510
+#, kde-format
+msgid "Location"
+msgstr "ਟਿਕਾਣਾ"
+
+#: kleo/dn.cpp:511
+#, kde-format
+msgid "Title"
+msgstr "ਟਾਈਟਲ"
+
+#: kleo/dn.cpp:512
+#, kde-format
+msgid "Organizational unit"
+msgstr "ਸੰਸਥਾ ਇਕਾਈ"
+
+#: kleo/dn.cpp:513
+#, kde-format
+msgid "Organization"
+msgstr "ਸੰਗਠਨ"
+
+#: kleo/dn.cpp:514
+#, kde-format
+msgid "Postal code"
+msgstr "ਡਾਕਖਾਨਾ ਕੋਡ"
+
+#: kleo/dn.cpp:515
+#, kde-format
+msgid "Country code"
+msgstr "ਦੇਸ਼ ਕੋਡ"
+
+#: kleo/dn.cpp:516
+#, kde-format
+msgid "State or province"
+msgstr "ਸੂਬਾ ਜਾਂ ਖਿੱਤਾ"
+
+#: kleo/dn.cpp:517
+#, kde-format
+msgid "Domain component"
+msgstr ""
+
+#: kleo/dn.cpp:518
+#, kde-format
+msgid "Business category"
+msgstr ""
+
+#: kleo/dn.cpp:519
+#, kde-format
+msgid "Email address"
+msgstr "ਈਮੇਲ ਐਡਰੈੱਸ"
+
+#: kleo/dn.cpp:520
+#, kde-format
+msgid "Mail address"
+msgstr "ਪੱਤਰ ਐਡਰੈੱਸ"
+
+#: kleo/dn.cpp:521
+#, kde-format
+msgid "Mobile phone number"
+msgstr "ਮੋਬਾਇਲ ਫੋਨ ਨੰਬਰ"
+
+#: kleo/dn.cpp:522
+#, kde-format
+msgid "Telephone number"
+msgstr "ਟੈਲੀਫੋਨ ਨੰਬਰ"
+
+#: kleo/dn.cpp:523
+#, kde-format
+msgid "Fax number"
+msgstr "ਫੈਕਸ ਨੰਬਰ"
+
+#: kleo/dn.cpp:524
+#, kde-format
+msgid "Street address"
+msgstr "ਗਲੀ ਐਡਰੈੱਸ"
+
+#: kleo/dn.cpp:525
+#, kde-format
+msgid "Unique ID"
+msgstr "ਵਿਲੱਖਣ ID"
+
+#: kleo/enum.cpp:57
+#, kde-format
+msgid "Inline OpenPGP (deprecated)"
+msgstr ""
+
+#: kleo/enum.cpp:62
+#, kde-format
+msgid "OpenPGP/MIME"
+msgstr "OpenPGP/MIME"
+
+#: kleo/enum.cpp:67 ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "S/MIME"
+msgstr "S/MIME"
+
+#: kleo/enum.cpp:72
+#, kde-format
+msgid "S/MIME Opaque"
+msgstr ""
+
+#: kleo/enum.cpp:104
+#, kde-format
+msgid "Any"
+msgstr "ਕੋਈ"
+
+#: kleo/enum.cpp:177
+#, kde-format
+msgid "Never Encrypt"
+msgstr "ਕਦੇ ਵੀ ਇੰਕ੍ਰਿਪਟ ਨਹੀਂ"
+
+#: kleo/enum.cpp:179
+#, kde-format
+msgid "Always Encrypt"
+msgstr "ਹਮੇਸ਼ਾ ਇੰਕ੍ਰਿਪਟ"
+
+#: kleo/enum.cpp:181
+#, kde-format
+msgid "Always Encrypt If Possible"
+msgstr "ਜਦੋਂ ਸੰਭਵ ਹੋਵੇ ਹਮੇਸ਼ਾ ਇੰਕ੍ਰਿਪਟ"
+
+#: kleo/enum.cpp:183 kleo/enum.cpp:240
+#, kde-format
+msgid "Ask"
+msgstr "ਪੁੱਛੋ"
+
+#: kleo/enum.cpp:185 kleo/enum.cpp:242
+#, kde-format
+msgid "Ask Whenever Possible"
+msgstr "ਜਦੋਂ ਸੰਭਵ ਹੋਵੇ ਪੁੱਛੋ"
+
+#: kleo/enum.cpp:187
+#, kde-kuit-format
+msgctxt "no specific preference"
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>ਕੋਈ ਨਹੀਂ</placeholder>"
+
+#: kleo/enum.cpp:234
+#, kde-format
+msgid "Never Sign"
+msgstr "ਕਦੇ ਦਸਤਖਤ ਨਹੀਂ"
+
+#: kleo/enum.cpp:236
+#, kde-format
+msgid "Always Sign"
+msgstr "ਹਮੇਸ਼ਾ ਸਾਈਨ ਕਰੋ"
+
+#: kleo/enum.cpp:238
+#, kde-format
+msgid "Always Sign If Possible"
+msgstr "ਜਦੋਂ ਸੰਭਵ ਹੋਵੇ ਤਾਂ ਸਾਈਨ ਕਰੋ"
+
+#: kleo/enum.cpp:244
+#, kde-format
+msgctxt "no specific preference"
+msgid "<none>"
+msgstr "<none>"
+
+#: kleo/keyfiltermanager.cpp:85
+#, kde-format
+msgid "All Certificates"
+msgstr "ਸਭ ਸਰਟੀਫਿਕੇਟ"
+
+#: kleo/keyfiltermanager.cpp:100
+#, kde-format
+msgid "My Certificates"
+msgstr "ਮੇਰੇ ਸਰਟੀਫਿਕੇਟ"
+
+#: kleo/keyfiltermanager.cpp:118
+#, kde-format
+msgid "Trusted Certificates"
+msgstr "ਟਰੱਸਟ ਕੀਤੇ ਸਰਟੀਫਿਕੇਟ"
+
+#: kleo/keyfiltermanager.cpp:135
+#, fuzzy, kde-format
+#| msgid "Trusted Certificates"
+msgid "Fully Trusted Certificates"
+msgstr "ਟਰੱਸਟ ਕੀਤੇ ਸਰਟੀਫਿਕੇਟ"
+
+#: kleo/keyfiltermanager.cpp:152
+#, kde-format
+msgid "Other Certificates"
+msgstr "ਹੋਰ ਸਰਟੀਫਿਕੇਟ"
+
+#: kleo/keyfiltermanager.cpp:166
+#, fuzzy, kde-format
+#| msgid "All Certificates"
+msgid "VS-compliant Certificates"
+msgstr "ਸਭ ਸਰਟੀਫਿਕੇਟ"
+
+#: kleo/keyfiltermanager.cpp:184
+#, fuzzy, kde-format
+#| msgid "Trusted Certificates"
+msgid "Not validated Certificates"
+msgstr "ਟਰੱਸਟ ਕੀਤੇ ਸਰਟੀਫਿਕੇਟ"
+
+#: ui/auditlogviewer.cpp:49
+#, kde-format
+msgid "View GnuPG Audit Log"
+msgstr ""
+
+#: ui/auditlogviewer.cpp:53
+#, kde-format
+msgid "&Copy to Clipboard"
+msgstr "ਕਲਿੱਪਬੋਰਡ ਵਿੱਚ ਕਾਪੀ ਕਰੋ(&C)"
+
+#: ui/auditlogviewer.cpp:59
+#, kde-format
+msgid "&Save to Disk..."
+msgstr "ਡਿਸਕ ਉੱਤੇ ਸੰਭਾਲੋ(&S)..."
+
+#: ui/auditlogviewer.cpp:95
+#, kde-format
+msgid "Choose File to Save GnuPG Audit Log to"
+msgstr ""
+
+#: ui/auditlogviewer.cpp:118
+#, kde-format
+msgid "Could not save to file \"%1\": %2"
+msgstr ""
+
+#: ui/auditlogviewer.cpp:120
+#, kde-format
+msgid "File Save Error"
+msgstr "ਫਾਇਲ ਸੰਭਾਲ ਗਲਤੀ"
+
+#: ui/cryptoconfigdialog.cpp:44
+#, kde-format
+msgid "Configure GnuPG Backend"
+msgstr ""
+
+#: ui/cryptoconfigdialog.cpp:55
+#, kde-format
+msgid "&Reset"
+msgstr "ਮੁੜ ਪਹਿਲਾਂ(&R)"
+
+#: ui/cryptoconfigmodule.cpp:160
+#, kde-format
+msgid "GpgConf Error"
+msgstr "GpgConf ਗਲਤੀ"
+
+#: ui/cryptoconfigmodule.cpp:216
+#, kde-format
+msgid ""
+"The gpgconf tool used to provide the information for this dialog does not "
+"seem to be installed properly. It did not return any components. Try running "
+"\"%1\" on the command line for more information."
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:496
+#, kde-format
+msgctxt ""
+"Translate this to 'yes' or 'no' (use the English words!) depending on "
+"whether your language uses Sentence style capitalisation in GUI labels (yes) "
+"or not (no). Context: We get some backend strings in that have the wrong "
+"capitalizaion (in English, at least) so we need to force the first character "
+"to upper-case. It is this behaviour you can control for your language with "
+"this translation."
+msgid "yes"
+msgstr "no"
+
+#: ui/cryptoconfigmodule.cpp:546
+#, kde-format
+msgid "0 - None"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:547
+#, kde-format
+msgid "1 - Basic"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:548
+#, kde-format
+msgid "2 - Verbose"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:549
+#, kde-format
+msgid "3 - More Verbose"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:550
+#, kde-format
+msgid "4 - All"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:559
+#, kde-format
+msgid "Set the debugging level to"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:787
+#, kde-format
+msgid "Show..."
+msgstr "ਵੇਖੋ..."
+
+#: ui/cryptoconfigmodule.cpp:787 ui/cryptoconfigmodule.cpp:876
+#, kde-format
+msgid "Edit..."
+msgstr "ਸੋਧ..."
+
+#: ui/cryptoconfigmodule.cpp:841
+#, kde-format
+msgid "Configure LDAP Servers"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:862
+#, kde-format
+msgid "None configured"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:864
+#, kde-format
+msgid "1 server configured"
+msgid_plural "%1 servers configured"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ui/cryptoconfigmodule.cpp:879
+#, kde-format
+msgid "Use keyserver at"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:968
+#, kde-format
+msgid "Configure Keyservers"
+msgstr "ਕੁੰਜੀ-ਸਰਵਰ ਸੰਰਚਨਾ"
+
+#: ui/directoryserviceswidget.cpp:67
+#, kde-format
+msgctxt "default server name, keep it a valid domain name, ie. no spaces"
+msgid "server"
+msgstr "ਸਰਵਰ"
+
+#: ui/directoryserviceswidget.cpp:95
+#, kde-format
+msgid "hkp"
+msgstr "hkp"
+
+#: ui/directoryserviceswidget.cpp:96
+#, kde-format
+msgid "http"
+msgstr "http"
+
+#: ui/directoryserviceswidget.cpp:97
+#, kde-format
+msgid "https"
+msgstr "https"
+
+#: ui/directoryserviceswidget.cpp:98
+#, kde-format
+msgid "ftp"
+msgstr "ftp"
+
+#: ui/directoryserviceswidget.cpp:99
+#, kde-format
+msgid "ftps"
+msgstr "ftps"
+
+#: ui/directoryserviceswidget.cpp:100
+#, kde-format
+msgid "ldap"
+msgstr "ldap"
+
+#: ui/directoryserviceswidget.cpp:101
+#, kde-format
+msgid "ldaps"
+msgstr "ldaps"
+
+#: ui/directoryserviceswidget.cpp:588
+#, kde-format
+msgid "Server Name"
+msgstr "ਸਰਵਰ ਨਾਂ"
+
+#: ui/directoryserviceswidget.cpp:589
+#, kde-format
+msgid "Server Port"
+msgstr "ਸਰਵਰ ਪੋਰਟ"
+
+#: ui/directoryserviceswidget.cpp:590
+#, kde-format
+msgid "Base DN"
+msgstr "ਬੇਸ DN"
+
+#: ui/directoryserviceswidget.cpp:591
+#, kde-format
+msgid "User Name"
+msgstr "ਯੂਜ਼ਰ ਨਾਂ"
+
+#: ui/directoryserviceswidget.cpp:592
+#, kde-format
+msgid "Password"
+msgstr "ਪਾਸਵਰਡ"
+
+#: ui/directoryserviceswidget.cpp:614
+#, kde-format
+msgid "(read-only)"
+msgstr "(ਕੇਵਲ ਪੜ੍ਹਨ)"
+
+#: ui/directoryserviceswidget.cpp:616
+#, kde-format
+msgctxt "amended tooltip; %1: original tooltip"
+msgid "%1 (read-only)"
+msgstr "%1 (ਕੇਵਲ ਪੜ੍ਹਨ)"
+
+#: ui/directoryserviceswidget.cpp:739
+#, kde-format
+msgid ""
+"Enter the name or IP address of the server hosting the directory service."
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:741
+#, kde-format
+msgid ""
+"<b>(Optional, the default is fine in most cases)</b> Pick the port number "
+"the directory service is listening on."
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:744
+#, kde-format
+msgid ""
+"<b>(Only for LDAP)</b> Enter the base DN for this LDAP server to limit "
+"searches to only that subtree of the directory."
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:747
+#, kde-format
+msgid "<b>(Optional)</b> Enter your user name here, if needed."
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:749
+#, kde-format
+msgid ""
+"<b>(Optional, not recommended)</b> Enter your password here, if needed. Note "
+"that the password will be saved in the clear in a config file in your home "
+"directory."
+msgstr ""
+
+#. i18n: ectx: property (windowTitle), widget (QWidget, DirectoryServicesWidget)
+#: ui/directoryserviceswidget.ui:14
+#, kde-format
+msgid "Directory Services Configuration"
+msgstr "ਡਾਇਰੈਕਟਰੀ ਸਰਵਿਸ ਸੰਰਚਨਾ"
+
+#. i18n: ectx: property (text), widget (QLabel, pgpKSLabel)
+#: ui/directoryserviceswidget.ui:22
+#, fuzzy, kde-format
+#| msgid "OpenPGP Key Selection"
+msgid "OpenPGP Keyserver:"
+msgstr "OpenPGP ਕੁੰਜੀ ਚੋਣ"
+
+#. i18n: ectx: property (title), widget (QGroupBox, x500LA)
+#: ui/directoryserviceswidget.ui:35
+#, fuzzy, kde-format
+#| msgid "Directory services:"
+msgid "X509 Directory services:"
+msgstr "ਡਾਇਰੈਕਟਰੀ ਸਰਵਿਸਾਂ:"
+
+#. i18n: ectx: property (whatsThis), widget (QTreeView, treeView)
+#: ui/directoryserviceswidget.ui:43
+#, kde-format
+msgid ""
+"This is a list of all directory services that are configured for use with "
+"X.509."
+msgstr ""
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:70
+#, kde-format
+msgid "Click to add a service"
+msgstr "ਸਰਵਿਸ ਸ਼ਾਮਲ ਕਰਨ ਲਈ ਕਲਿੱਕ ਕਰੋ"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:73
+#, kde-format
+msgid ""
+"Click this button to create a new directory service entry as a clone of the "
+"currently selected one (or with default values, if no other is selected). "
+"You can then configure details in the table on the left hand."
+msgstr ""
+
+#. i18n: ectx: property (text), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:76
+#, kde-format
+msgid "New"
+msgstr "ਨਵਾਂ"
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:92
+#, kde-format
+msgid "Click to remove the currently selected service"
+msgstr ""
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:95
+#, kde-format
+msgid ""
+"Click this button to remove the currently selected directory service. The "
+"change will only take effect once you acknowledge the main configuration "
+"dialog."
+msgstr ""
+
+#. i18n: ectx: property (text), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:98
+#, kde-format
+msgid "Delete"
+msgstr "ਹਟਾਓ"
+
+#. i18n: ectx: property (whatsThis), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:128
+#, kde-format
+msgid ""
+"Use this option to switch display of username and password information on or "
+"off in the above table."
+msgstr ""
+
+#. i18n: ectx: property (text), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:131
+#, kde-format
+msgid "Show user and password information"
+msgstr "ਯੂਜ਼ਰ ਅਤੇ ਪਾਸਵਰਡ ਜਾਣਕਾਰੀ ਵੇਖੋ"
+
+#: ui/dnattributeorderconfigwidget.cpp:73
+#, kde-format
+msgid "Description"
+msgstr "ਵੇਰਵਾ"
+
+#: ui/dnattributeorderconfigwidget.cpp:91
+#, kde-format
+msgid "Available attributes:"
+msgstr "ਉਪਲੱਬਧ ਗੁਣ:"
+
+#: ui/dnattributeorderconfigwidget.cpp:92
+#, kde-format
+msgid "Current attribute order:"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:112
+#, kde-format
+msgid "All others"
+msgstr "ਹੋਰ ਸਭ"
+
+#: ui/dnattributeorderconfigwidget.cpp:129
+#, kde-format
+msgid "Move to top"
+msgstr "ਉੱਤੇ ਭੇਜੋ"
+
+#: ui/dnattributeorderconfigwidget.cpp:130
+#, kde-format
+msgid "Move one up"
+msgstr "ਇੱਕ ਉੱਤੇ ਭੇਜੋ"
+
+#: ui/dnattributeorderconfigwidget.cpp:131
+#, kde-format
+msgid "Remove from current attribute order"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:132
+#, kde-format
+msgid "Add to current attribute order"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:133
+#, kde-format
+msgid "Move one down"
+msgstr "ਇੱਕ ਹੇਠਾਂ ਕਰੋ"
+
+#: ui/dnattributeorderconfigwidget.cpp:134
+#, kde-format
+msgid "Move to bottom"
+msgstr "ਹੇਠਾਂ ਭੇਜੋ"
+
+#: ui/keyapprovaldialog.cpp:87
+#, kde-kuit-format
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>ਕੋਈ ਨਹੀਂ</placeholder>"
+
+#: ui/keyapprovaldialog.cpp:88
+#, kde-format
+msgid "Never Encrypt with This Key"
+msgstr "ਇਸ ਕੁੰਜੀ ਨਾਲ ਕਦੇ ਵੀ ਇੰਕ੍ਰਿਪਟ ਨਹੀਂ"
+
+#: ui/keyapprovaldialog.cpp:89
+#, kde-format
+msgid "Always Encrypt with This Key"
+msgstr "ਇਸ ਕੁੰਜੀ ਨਾਲ ਹਮੇਸ਼ਾ ਇੰਕ੍ਰਿਪਟ"
+
+#: ui/keyapprovaldialog.cpp:90
+#, kde-format
+msgid "Encrypt Whenever Encryption is Possible"
+msgstr ""
+
+#: ui/keyapprovaldialog.cpp:91
+#, kde-format
+msgid "Always Ask"
+msgstr "ਹਮੇਸ਼ਾ ਪੁੱਛੋ"
+
+#: ui/keyapprovaldialog.cpp:92
+#, kde-format
+msgid "Ask Whenever Encryption is Possible"
+msgstr ""
+
+#: ui/keyapprovaldialog.cpp:113
+#, kde-format
+msgid "Encryption Key Approval"
+msgstr "ਇੰਕ੍ਰਿਪਸ਼ਨ ਕੁੰਜ ਮੰਨਜ਼ੂਰੀ"
+
+#: ui/keyapprovaldialog.cpp:129
+#, kde-format
+msgid "The following keys will be used for encryption:"
+msgstr ""
+
+#: ui/keyapprovaldialog.cpp:145
+#, kde-format
+msgid "Your keys:"
+msgstr "ਤੁਹਾਡੀਆਂ ਕੁੰਜੀਆਂ:"
+
+#: ui/keyapprovaldialog.cpp:157
+#, kde-format
+msgid "Recipient:"
+msgstr "ਪ੍ਰਾਪਤ ਕਰਤਾ:"
+
+#: ui/keyapprovaldialog.cpp:162
+#, kde-format
+msgid "Encryption keys:"
+msgstr "ਇੰਕ੍ਰਿਪਸ਼ਨ ਕੁੰਜੀਆਂ:"
+
+#: ui/keyapprovaldialog.cpp:169
+#, kde-format
+msgid "Encryption preference:"
+msgstr "ਇੰਕ੍ਰਿਪਸ਼ਨ ਪਸੰਦ:"
+
+#: ui/keyrequester.cpp:118
+#, kde-format
+msgid "Clear"
+msgstr "ਸਾਫ਼ ਕਰੋ"
+
+#: ui/keyrequester.cpp:121
+#, kde-format
+msgid "Change..."
+msgstr "ਬਦਲੋ..."
+
+#: ui/keyrequester.cpp:232 ui/keyselectiondialog.cpp:256
+#, kde-kuit-format
+msgid "<placeholder>unknown</placeholder>"
+msgstr "<placeholder>ਅਣਜਾਣ</placeholder>"
+
+#: ui/keyrequester.cpp:246 ui/keyselectiondialog.cpp:657
+#, kde-format
+msgid ""
+"<qt><p>An error occurred while fetching the keys from the backend:</p><p><b>"
+"%1</b></p></qt>"
+msgstr ""
+
+#: ui/keyrequester.cpp:251 ui/keyrequester.cpp:283 ui/keyrequester.cpp:306
+#: ui/keyselectiondialog.cpp:630 ui/keyselectiondialog.cpp:662
+#, kde-format
+msgid "Key Listing Failed"
+msgstr ""
+
+#: ui/keyrequester.cpp:281
+#, kde-format
+msgid ""
+"The OpenPGP backend does not support listing keys. Check your installation."
+msgstr ""
+
+#: ui/keyrequester.cpp:304
+#, kde-format
+msgid ""
+"The S/MIME backend does not support listing keys. Check your installation."
+msgstr ""
+
+#: ui/keyrequester.cpp:426
+#, kde-format
+msgid "OpenPGP Key Selection"
+msgstr "OpenPGP ਕੁੰਜੀ ਚੋਣ"
+
+#: ui/keyrequester.cpp:427
+#, kde-format
+msgid "Please select an OpenPGP key to use."
+msgstr ""
+
+#: ui/keyrequester.cpp:429
+#, kde-format
+msgid "S/MIME Key Selection"
+msgstr ""
+
+#: ui/keyrequester.cpp:430
+#, kde-format
+msgid "Please select an S/MIME key to use."
+msgstr ""
+
+#: ui/keyrequester.cpp:432
+#, kde-format
+msgid "Key Selection"
+msgstr "ਕੁੰਜੀ ਚੋਣ"
+
+#: ui/keyrequester.cpp:433
+#, kde-format
+msgid "Please select an (OpenPGP or S/MIME) key to use."
+msgstr ""
+
+#: ui/keyselectioncombo.cpp:195
+#, kde-format
+msgctxt "Name <email> (validity, type, created: date)"
+msgid "%1 (%2, %3, created: %4)"
+msgstr ""
+
+#: ui/keyselectioncombo.cpp:196
+#, kde-format
+msgctxt "Name <email>"
+msgid "%1 <%2>"
+msgstr ""
+
+#: ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "OpenPGP"
+msgstr "OpenPGP"
+
+#: ui/keyselectioncombo.cpp:347
+#, fuzzy, kde-format
+#| msgid "Fetching keys..."
+msgid "Loading keys ..."
+msgstr "ਕੁੰਜੀ ਪ੍ਰਾਪਤ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ..."
+
+#: ui/keyselectiondialog.cpp:98
+#, kde-format
+msgid "The key is not valid."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:106
+#, kde-format
+msgid "The key is expired."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:110
+#, kde-format
+msgid "The key is revoked."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:114
+#, kde-format
+msgid "The key is disabled."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:122
+#, kde-format
+msgid "The key is not designated for encryption."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:128
+#, kde-format
+msgid "The key is not designated for signing."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:134
+#, kde-format
+msgid "The key is not designated for certifying."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:140
+#, kde-format
+msgid "The key is not designated for authentication."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:148
+#, kde-format
+msgid "The key is not secret."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:163
+#, kde-format
+msgid "The key is not trusted enough."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:169
+#, kde-format
+msgid "The key can be used."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:230
+#, kde-format
+msgid "Key ID"
+msgstr "ਕੁੰਜੀ ID"
+
+#: ui/keyselectiondialog.cpp:231
+#, kde-format
+msgid "User ID"
+msgstr "ਯੂਜ਼ਰ ID"
+
+#: ui/keyselectiondialog.cpp:279
+#, kde-format
+msgid "never"
+msgstr "ਕਦੇ ਨਹੀਂ"
+
+#: ui/keyselectiondialog.cpp:289 ui/keyselectiondialog.cpp:291
+#: ui/keyselectiondialog.cpp:300 ui/keyselectiondialog.cpp:302
+#, kde-format
+msgid "unknown"
+msgstr "ਅਣਜਾਣ"
+
+#: ui/keyselectiondialog.cpp:289
+#, kde-format
+msgid "OpenPGP key for <b>%1</b>"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:291
+#, kde-format
+msgid "S/MIME key for <b>%1</b>"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:298
+#, kde-format
+msgctxt "Key creation date"
+msgid "Created"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:299
+#, kde-format
+msgctxt "Key Expiration date"
+msgid "Expiry"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:300
+#, kde-format
+msgctxt "Key fingerprint"
+msgid "Fingerprint"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:302
+#, kde-format
+msgctxt "Key issuer"
+msgid "Issuer"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:304
+#, kde-format
+msgctxt "Key status"
+msgid "Status"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:456
+#, fuzzy, kde-format
+#| msgid "Other Certificates"
+msgid "Search for &External Certificates"
+msgstr "ਹੋਰ ਸਰਟੀਫਿਕੇਟ"
+
+#: ui/keyselectiondialog.cpp:470
+#, kde-format
+msgid "&Search for:"
+msgstr "ਖੋਜ ਲਈ:"
+
+#: ui/keyselectiondialog.cpp:494
+#, kde-format
+msgid "&Remember choice"
+msgstr "ਚੋਣ ਚੇਤੇ ਰੱਖੋ(&R)"
+
+#: ui/keyselectiondialog.cpp:497
+#, kde-format
+msgid ""
+"<qt><p>If you check this box your choice will be stored and you will not be "
+"asked again.</p></qt>"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:509
+#, kde-format
+msgid "&Reread Keys"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:510
+#, kde-format
+msgid "&Start Certificate Manager"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:628
+#, kde-format
+msgid "No backends found for listing keys. Check your installation."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:644
+#, kde-format
+msgid "Could not start certificate manager; please check your installation."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:646
+#, kde-format
+msgid "Certificate Manager Error"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Checking selected keys..."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Fetching keys..."
+msgstr "ਕੁੰਜੀ ਪ੍ਰਾਪਤ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ..."
+
+#: ui/keyselectiondialog.cpp:731
+#, kde-format
+msgid ""
+"<qt>One backend returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgid_plural ""
+"<qt>%1 backends returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ui/keyselectiondialog.cpp:736
+#, kde-format
+msgid "Key List Result"
+msgstr "ਕੁੰਜੀ ਸੂਚੀ ਨਤੀਜਾ"
+
+#: ui/keyselectiondialog.cpp:856
+#, kde-format
+msgid "Recheck Key"
+msgstr "ਕੁੰਜੀ ਦੀ ਮੁੜ ਜਾਂਚ"
+
+#: ui/messagebox.cpp:71
+#, kde-format
+msgid "Your system does not have support for GnuPG Audit Logs"
+msgstr ""
+
+#: ui/messagebox.cpp:72
+#, kde-format
+msgid "System Error"
+msgstr "ਸਿਸਟਮ ਗਲਤੀ"
+
+#: ui/messagebox.cpp:79
+#, kde-format
+msgid ""
+"An error occurred while trying to retrieve the GnuPG Audit Log:\n"
+"%1"
+msgstr ""
+
+#: ui/messagebox.cpp:81
+#, kde-format
+msgid "GnuPG Audit Log Error"
+msgstr ""
+
+#: ui/messagebox.cpp:88
+#, kde-format
+msgid "No GnuPG Audit Log available for this operation."
+msgstr ""
+
+#: ui/messagebox.cpp:89
+#, kde-format
+msgid "No GnuPG Audit Log"
+msgstr ""
+
+#: ui/messagebox.cpp:109 ui/messagebox.cpp:115
+#, kde-format
+msgid "GnuPG Audit Log Viewer"
+msgstr ""
+
+#: ui/messagebox.cpp:121
+#, kde-format
+msgid "Signing failed: %1"
+msgstr ""
+
+#: ui/messagebox.cpp:122
+#, kde-format
+msgid "Signing successful"
+msgstr ""
+
+#: ui/messagebox.cpp:133
+#, kde-format
+msgid "Encryption failed: %1"
+msgstr ""
+
+#: ui/messagebox.cpp:134
+#, kde-format
+msgid "Encryption successful"
+msgstr "ਇੰਕ੍ਰਿਪਸ਼ਨ ਸਫ਼ਲ"
+
+#: ui/messagebox.cpp:155
+#, kde-format
+msgid "Signing Result"
+msgstr ""
+
+#: ui/messagebox.cpp:167
+#, kde-format
+msgid "Signing Error"
+msgstr ""
+
+#: ui/messagebox.cpp:179 ui/messagebox.cpp:203
+#, kde-format
+msgid "Encryption Result"
+msgstr "ਇੰਕ੍ਰਿਪਸ਼ਨ ਨਤੀਜੇ"
+
+#: ui/messagebox.cpp:191 ui/messagebox.cpp:215
+#, kde-format
+msgid "Encryption Error"
+msgstr "ਇੰਕ੍ਰਿਪਸ਼ਨ ਗਲਤੀ"
+
+#: ui/messagebox.cpp:263
+#, kde-format
+msgid "&Show Audit Log"
+msgstr ""
+
+#: ui/progressdialog.cpp:91
+#, kde-format
+msgid "%1: %2"
+msgstr "%1: %2"
+
+#~ msgctxt "New X.509 Directory Server"
+#~ msgid "X.509"
+#~ msgstr "X.509"
+
+#~ msgctxt "New OpenPGP Directory Server"
+#~ msgid "OpenPGP"
+#~ msgstr "OpenPGP"
+
+#~ msgid "Scheme"
+#~ msgstr "Scheme"
+
+#~ msgid "X.509"
+#~ msgstr "X.509"
+
+#, fuzzy
+#~| msgid "None (no debugging at all)"
+#~ msgid "0 - None (no debugging at all)"
+#~ msgstr "ਨਹੀਂ (ਕੋਈ ਵੀ ਡੀਬੱਗ ਜਾਣਕਾਰੀ ਨਹੀਂ)"
+
+#, fuzzy
+#~| msgid "Basic (some basic debug messages)"
+#~ msgid "1 - Basic (some basic debug messages)"
+#~ msgstr "ਮੁੱਢਲਾ (ਕੁਝ ਮੁੱਢਲੇ ਡੀਬੱਗ ਸੁਨੇਹੇ)"
+
+#, fuzzy
+#~| msgid "Advanced (more verbose debug messages)"
+#~ msgid "2 - Advanced (more verbose debug messages)"
+#~ msgstr "ਤਕਨੀਕੀ (ਵੱਧ ਡੀਬੱਗ ਸੁਨੇਹੇ)"
+
+#, fuzzy
+#~| msgid "Expert (even more detailed messages)"
+#~ msgid "3 - Expert (even more detailed messages)"
+#~ msgstr "ਮਾਹਰ (ਹੋਰ ਵੀ ਵੇਰਵੇ ਸਮੇਤ ਸੁਨੇਹੇ)"
+
+#, fuzzy
+#~| msgid "Guru (all of the debug messages you can get)"
+#~ msgid "4 - Guru (all of the debug messages you can get)"
+#~ msgstr "ਗੁਰੂ (ਸਭ ਡੀਬੱਗ ਸੁਨੇਹੇ, ਜੋ ਵੀ ਤੁਸੀਂ ਲੈ ਸਕਦੇ ਹੋ)"
+
+#~ msgid "General"
+#~ msgstr "ਆਮ"
+
+#~ msgid "Chiasmus"
+#~ msgstr "Chiasmus"
+
+#~ msgid "Decryption failed: %1"
+#~ msgstr "ਡਿਸਕ੍ਰਿਪਸ਼ਨ ਅਸਫਲ: %1"
+
+#~ msgid ""
+#~ "The following was received on stderr:\n"
+#~ "%1"
+#~ msgstr ""
+#~ "stderr ਉੱਤੇ ਹੇਠ ਦਿੱਤਾ ਪਰਾਪਤ ਹੋਇਆ:\n"
+#~ "%1"
+
+#~ msgid "Failed to load %1: %2"
+#~ msgstr "%1 ਨੂੰ ਲੋਡ ਕਰਨ ਲਈ ਫੇਲ: %2"
+
+#~ msgid "Scanning directory %1..."
+#~ msgstr "ਡਾਇਰੈਕਟਰੀ %1 'ਚ ਖੋਜ ਜਾਰੀ..."
+
+#~ msgid "GpgME"
+#~ msgstr "GpgME"
+
+#~ msgid "GPGME was compiled without support for %1."
+#~ msgstr "GPGME ਨੂੰ %1 ਤੋਂ ਬਿਨਾਂ ਕੰਪਾਇਲ ਕੀਤਾ ਗਿਆ ਸੀ।"
+
+#~ msgid "Engine %1 is not installed properly."
+#~ msgstr "ਇੰਜਣ %1 ਠੀਕ ਤਰਾਂ ਇੰਸਟਾਲ ਨਹੀਂ ਹੈ।"
+
+#, fuzzy
+#~| msgid "program cannot be executed"
+#~ msgid "program terminated unexpectedly"
+#~ msgstr "ਪਰੋਗਰਾਮ ਚਲਾਇਆ ਨਹੀਂ ਜਾ ਸਕਦਾ ਹੈ"
+
+#, fuzzy
+#~| msgid "program cannot be executed"
+#~ msgid "program not found or cannot be started"
+#~ msgstr "ਪਰੋਗਰਾਮ ਚਲਾਇਆ ਨਹੀਂ ਜਾ ਸਕਦਾ ਹੈ"
+
+#~ msgid "Please wait..."
+#~ msgstr "ਕਿਰਪਾ ਕਰਕੇ ਇੰਤਜ਼ਾਰ ਕਰੋ..."
+
+#~ msgctxt "progress info: \"%1 of %2\""
+#~ msgid "%1/%2"
+#~ msgstr "%1/%2"
+
+#~ msgid "Add or Change Directory Service"
+#~ msgstr "ਡਾਇਰੈਕਟਰੀ ਸਰਵਿਸ ਸ਼ਾਮਲ ਜਾਂ ਬਦਲੋ"
+
+#~ msgid "&Server name:"
+#~ msgstr "ਸਰਵਰ ਨਾਂ(&S):"
+
+#~ msgid "389"
+#~ msgstr "389"
+
+#~ msgid "&User name (optional):"
+#~ msgstr "ਯੂਜ਼ਰ ਨਾਂ (ਚੋਣਵਾਂ) (&U):"
+
+#~ msgid "Pass&word (optional):"
+#~ msgstr "ਪਾਸਵਰਡ (ਚੋਣਵਾਂ) (&w):"
+
+#~ msgid "&OK"
+#~ msgstr "ਠੀਕ ਹੈ(&O)"
+
+#~ msgid "&Cancel"
+#~ msgstr "ਰੱਦ ਕਰੋ(&C)"
+
+#~ msgid "&Base DN:"
+#~ msgstr "ਬੇਸ DN(&B):"
+
+#~ msgid "&Port:"
+#~ msgstr "ਪੋਰਟ(&P):"
+
+#~ msgctxt "NAME OF TRANSLATORS"
+#~ msgid "Your names"
+#~ msgstr "ਅਮਨਪਰੀਤ ਸਿੰਘ ਆਲਮ"
+
+#~ msgctxt "EMAIL OF TRANSLATORS"
+#~ msgid "Your emails"
+#~ msgstr "aalam@users.sf.net"
+
+#~ msgid "failed"
+#~ msgstr "ਅਸਫਲ"
+
+#~ msgctxt ""
+#~ "Items in Kleo::BackendConfigWidget listview (1: protocol; 2: "
+#~ "implementation name)"
+#~ msgid "%1 (%2)"
+#~ msgstr "%1 (%2)"
+
+#~ msgid "Available Backends"
+#~ msgstr "ਉਪਲੱਬਧ ਬੈਕਐਂਡ"
+
+#~ msgid "Confi&gure..."
+#~ msgstr "ਸੰਰਚਨਾ(&g)..."
+
+#~ msgid "Rescan"
+#~ msgstr "ਮੁੜ-ਖੋਜ"
+
+#~ msgctxt "@title:window Results of the scanning"
+#~ msgid "Scan Results"
+#~ msgstr "ਸਕੈਨ ਨਤੀਜੇ"
+
+#~ msgid "(Unknown Protocol)"
+#~ msgstr "(ਅਣਜਾਣਾ ਪ੍ਰੋਟੋਕੋਲ)"
+
+#~ msgid "Enter passphrase:"
+#~ msgstr "ਪ੍ਰਸੰਗ ਦਿਓ:"
+
+#~ msgid "Passphrase Dialog"
+#~ msgstr "ਪ੍ਰਸੰਗ ਵਾਰਤਾਲਾਪ"
+
+#~ msgid "Port"
+#~ msgstr "ਪੋਰਟ"
+
+#~ msgid "&Add Service..."
+#~ msgstr "ਸੇਵਾ ਸ਼ਾਮਿਲ(&A)..."
+
+#~ msgid "&Remove Service"
+#~ msgstr "ਸੇਵਾ ਹਟਾਓ(&R)"
--- /dev/null
+# translation of libkleopatra.po to
+# Version: $Revision: 1501379 $
+# Copyright (C) 2002,2003, 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
+#
+# Krzysztof Lichota <lichota@mimuw.edu.pl>, 2002, 2004, 2005.
+# Mikolaj Machowski <mikmach@wp.pl>, 2004.
+# Michal Rudolf <mrudolf@kdewebdev.org>, 2004.
+# Marta Rybczyńska <kde-i18n@rybczynska.net>, 2007, 2008.
+# Łukasz Wojniłowicz <lukasz.wojnilowicz@gmail.com>, 2011, 2014, 2015, 2016, 2017.
+msgid ""
+msgstr ""
+"Project-Id-Version: libkleopatra\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2017-07-12 06:56+0200\n"
+"PO-Revision-Date: 2017-10-22 05:53+0100\n"
+"Last-Translator: Łukasz Wojniłowicz <lukasz.wojnilowicz@gmail.com>\n"
+"Language-Team: Polish <kde-i18n-doc@kde.org>\n"
+"Language: pl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Lokalize 2.0\n"
+"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
+"|| n%100>=20) ? 1 : 2);\n"
+
+#: kleo/checksumdefinition.cpp:107
+#, kde-format
+msgid "Error in checksum definition %1: %2"
+msgstr "Błąd w definicji sumy kontrolnej %1: %2"
+
+#: kleo/checksumdefinition.cpp:157
+#, kde-format
+msgid "Cannot use both %f and | in '%1'"
+msgstr "Nie można użyć obydwu %f oraz | w '%1'"
+
+#: kleo/checksumdefinition.cpp:167
+#, kde-format
+msgid "Quoting error in '%1' entry"
+msgstr "Błąd cytowania we wpisie '%1'"
+
+#: kleo/checksumdefinition.cpp:170
+#, kde-format
+msgid "'%1' too complex (would need shell)"
+msgstr "'%1' zbyt złożone (potrzebna byłaby powłoka)"
+
+#: kleo/checksumdefinition.cpp:174
+#, kde-format
+msgid "'%1' entry is empty/missing"
+msgstr "Wpis '%1' jest pusty/brakujący"
+
+#: kleo/checksumdefinition.cpp:183
+#, kde-format
+msgid "'%1' empty or not found"
+msgstr "'%1' pusty lub nieznaleziony"
+
+#: kleo/checksumdefinition.cpp:222
+#, kde-format
+msgid "'id' entry is empty/missing"
+msgstr "Wpis 'id' jest pusty/brakujący"
+
+#: kleo/checksumdefinition.cpp:225
+#, kde-format
+msgid "'output-file' entry is empty/missing"
+msgstr "Wpis 'output-file' jest pusty/brakujący"
+
+#: kleo/checksumdefinition.cpp:228
+#, kde-format
+msgid "'file-patterns' entry is empty/missing"
+msgstr "Wpis 'file-patterns' jest pusty/brakujący"
+
+#: kleo/checksumdefinition.cpp:395
+#, kde-format
+msgid "Caught unknown exception in group %1"
+msgstr "Przechwycono nieznany wyjątek w grupie %1"
+
+#: kleo/dn.cpp:507
+#, kde-format
+msgid "Common name"
+msgstr "Nazwa publiczna"
+
+#: kleo/dn.cpp:508
+#, kde-format
+msgid "Surname"
+msgstr "Nazwisko"
+
+#: kleo/dn.cpp:509
+#, kde-format
+msgid "Given name"
+msgstr "Imię"
+
+#: kleo/dn.cpp:510
+#, kde-format
+msgid "Location"
+msgstr "Miejscowość"
+
+#: kleo/dn.cpp:511
+#, kde-format
+msgid "Title"
+msgstr "Tytuł"
+
+#: kleo/dn.cpp:512
+#, kde-format
+msgid "Organizational unit"
+msgstr "Jednostka organizacyjna"
+
+#: kleo/dn.cpp:513
+#, kde-format
+msgid "Organization"
+msgstr "Organizacja"
+
+#: kleo/dn.cpp:514
+#, kde-format
+msgid "Postal code"
+msgstr "Kod pocztowy"
+
+#: kleo/dn.cpp:515
+#, kde-format
+msgid "Country code"
+msgstr "Kod kraju"
+
+#: kleo/dn.cpp:516
+#, kde-format
+msgid "State or province"
+msgstr "Stan lub województwo"
+
+#: kleo/dn.cpp:517
+#, kde-format
+msgid "Domain component"
+msgstr "Składnik domeny"
+
+#: kleo/dn.cpp:518
+#, kde-format
+msgid "Business category"
+msgstr "Kategoria biznesowa"
+
+#: kleo/dn.cpp:519
+#, kde-format
+msgid "Email address"
+msgstr "Adres e-mail"
+
+#: kleo/dn.cpp:520
+#, kde-format
+msgid "Mail address"
+msgstr "Adres pocztowy"
+
+#: kleo/dn.cpp:521
+#, kde-format
+msgid "Mobile phone number"
+msgstr "Numer telefonu komórkowego"
+
+#: kleo/dn.cpp:522
+#, kde-format
+msgid "Telephone number"
+msgstr "Numer telefonu"
+
+#: kleo/dn.cpp:523
+#, kde-format
+msgid "Fax number"
+msgstr "Numer faksu"
+
+#: kleo/dn.cpp:524
+#, kde-format
+msgid "Street address"
+msgstr "Ulica"
+
+#: kleo/dn.cpp:525
+#, kde-format
+msgid "Unique ID"
+msgstr "Niepowtarzalny identyfikator"
+
+#: kleo/enum.cpp:57
+#, kde-format
+msgid "Inline OpenPGP (deprecated)"
+msgstr "OpenPGP w treści (wycofany)"
+
+#: kleo/enum.cpp:62
+#, kde-format
+msgid "OpenPGP/MIME"
+msgstr "OpenPGP/MIME"
+
+#: kleo/enum.cpp:67 ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "S/MIME"
+msgstr "S/MIME"
+
+#: kleo/enum.cpp:72
+#, kde-format
+msgid "S/MIME Opaque"
+msgstr "S/MIME nieprzezroczysty"
+
+#: kleo/enum.cpp:104
+#, kde-format
+msgid "Any"
+msgstr "Jakikolwiek"
+
+#: kleo/enum.cpp:177
+#, kde-format
+msgid "Never Encrypt"
+msgstr "Nigdy nie szyfruj"
+
+#: kleo/enum.cpp:179
+#, kde-format
+msgid "Always Encrypt"
+msgstr "Zawsze szyfruj"
+
+#: kleo/enum.cpp:181
+#, kde-format
+msgid "Always Encrypt If Possible"
+msgstr "Zawsze szyfruj, jeśli to możliwe"
+
+#: kleo/enum.cpp:183 kleo/enum.cpp:240
+#, kde-format
+msgid "Ask"
+msgstr "Pytaj"
+
+#: kleo/enum.cpp:185 kleo/enum.cpp:242
+#, kde-format
+msgid "Ask Whenever Possible"
+msgstr "Pytaj, jeśli to możliwe"
+
+#: kleo/enum.cpp:187
+#, kde-kuit-format
+msgctxt "no specific preference"
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>brak</placeholder>"
+
+#: kleo/enum.cpp:234
+#, kde-format
+msgid "Never Sign"
+msgstr "Nigdy nie podpisuj"
+
+#: kleo/enum.cpp:236
+#, kde-format
+msgid "Always Sign"
+msgstr "Zawsze podpisuj"
+
+#: kleo/enum.cpp:238
+#, kde-format
+msgid "Always Sign If Possible"
+msgstr "Zawsze podpisuj, jeśli to możliwe"
+
+#: kleo/enum.cpp:244
+#, kde-format
+msgctxt "no specific preference"
+msgid "<none>"
+msgstr "<brak>"
+
+#: kleo/keyfiltermanager.cpp:85
+#, kde-format
+msgid "All Certificates"
+msgstr "Wszystkie certyfikaty"
+
+#: kleo/keyfiltermanager.cpp:100
+#, kde-format
+msgid "My Certificates"
+msgstr "Moje certyfikaty"
+
+#: kleo/keyfiltermanager.cpp:118
+#, kde-format
+msgid "Trusted Certificates"
+msgstr "Zaufane certyfikaty"
+
+#: kleo/keyfiltermanager.cpp:135
+#, kde-format
+msgid "Fully Trusted Certificates"
+msgstr "W pełni zaufane certyfikaty"
+
+#: kleo/keyfiltermanager.cpp:152
+#, kde-format
+msgid "Other Certificates"
+msgstr "Inne certyfikaty"
+
+#: kleo/keyfiltermanager.cpp:166
+#, kde-format
+msgid "VS-compliant Certificates"
+msgstr "Certyfikaty zgodne z VS"
+
+#: kleo/keyfiltermanager.cpp:184
+#, kde-format
+msgid "Not validated Certificates"
+msgstr "Niepotwierdzone certyfikaty"
+
+#: ui/auditlogviewer.cpp:49
+#, kde-format
+msgid "View GnuPG Audit Log"
+msgstr "Pokaż dziennik GnuPG"
+
+#: ui/auditlogviewer.cpp:53
+#, kde-format
+msgid "&Copy to Clipboard"
+msgstr "Kopiuj do s&chowka"
+
+#: ui/auditlogviewer.cpp:59
+#, kde-format
+msgid "&Save to Disk..."
+msgstr "Zapi&sz na dysku..."
+
+#: ui/auditlogviewer.cpp:95
+#, kde-format
+msgid "Choose File to Save GnuPG Audit Log to"
+msgstr "Wybierz plik, do którego ma być zapisany dziennik GnuPG"
+
+#: ui/auditlogviewer.cpp:118
+#, kde-format
+msgid "Could not save to file \"%1\": %2"
+msgstr "Nie można zapisać do pliku \"%1\": %2"
+
+#: ui/auditlogviewer.cpp:120
+#, kde-format
+msgid "File Save Error"
+msgstr "Błąd zapisu pliku"
+
+#: ui/cryptoconfigdialog.cpp:44
+#, kde-format
+msgid "Configure GnuPG Backend"
+msgstr "Ustawienia obsługi GnuPG"
+
+#: ui/cryptoconfigdialog.cpp:55
+#, kde-format
+msgid "&Reset"
+msgstr "P&rzywróć"
+
+#: ui/cryptoconfigmodule.cpp:160
+#, kde-format
+msgid "GpgConf Error"
+msgstr "Błąd GpgConf"
+
+#: ui/cryptoconfigmodule.cpp:216
+#, kde-format
+msgid ""
+"The gpgconf tool used to provide the information for this dialog does not "
+"seem to be installed properly. It did not return any components. Try running "
+"\"%1\" on the command line for more information."
+msgstr ""
+"Wygląda na to, że narzędzie gpgconf, wykorzystywane do dostarczania "
+"informacji o tym oknie dialogowym, nie zostało zainstalowane poprawnie. "
+"Narzędzie nie zwróciło żadnych składników. Spróbuj uruchomić \"%1\" w "
+"wierszu poleceń po więcej informacji."
+
+#: ui/cryptoconfigmodule.cpp:496
+#, kde-format
+msgctxt ""
+"Translate this to 'yes' or 'no' (use the English words!) depending on "
+"whether your language uses Sentence style capitalisation in GUI labels (yes) "
+"or not (no). Context: We get some backend strings in that have the wrong "
+"capitalizaion (in English, at least) so we need to force the first character "
+"to upper-case. It is this behaviour you can control for your language with "
+"this translation."
+msgid "yes"
+msgstr "yes"
+
+#: ui/cryptoconfigmodule.cpp:546
+#, kde-format
+msgid "0 - None"
+msgstr "0 - Nic"
+
+#: ui/cryptoconfigmodule.cpp:547
+#, kde-format
+msgid "1 - Basic"
+msgstr "1 - Podstawy"
+
+#: ui/cryptoconfigmodule.cpp:548
+#, kde-format
+msgid "2 - Verbose"
+msgstr "2 - Szczegóły"
+
+#: ui/cryptoconfigmodule.cpp:549
+#, kde-format
+msgid "3 - More Verbose"
+msgstr "3 - Większe szczegóły"
+
+#: ui/cryptoconfigmodule.cpp:550
+#, kde-format
+msgid "4 - All"
+msgstr "4 - Wszystko"
+
+#: ui/cryptoconfigmodule.cpp:559
+#, kde-format
+msgid "Set the debugging level to"
+msgstr "Ustaw poziom diagnostyki na"
+
+#: ui/cryptoconfigmodule.cpp:787
+#, kde-format
+msgid "Show..."
+msgstr "Pokaż..."
+
+#: ui/cryptoconfigmodule.cpp:787 ui/cryptoconfigmodule.cpp:876
+#, kde-format
+msgid "Edit..."
+msgstr "Zmień..."
+
+#: ui/cryptoconfigmodule.cpp:841
+#, kde-format
+msgid "Configure LDAP Servers"
+msgstr "Ustawienia serwerów LDAP"
+
+#: ui/cryptoconfigmodule.cpp:862
+#, kde-format
+msgid "None configured"
+msgstr "Nic nie ustawiono"
+
+#: ui/cryptoconfigmodule.cpp:864
+#, kde-format
+msgid "1 server configured"
+msgid_plural "%1 servers configured"
+msgstr[0] "Ustawiono %1 serwer"
+msgstr[1] "Ustawiono %1 serwery"
+msgstr[2] "Ustawiono %1 serwerów"
+
+#: ui/cryptoconfigmodule.cpp:879
+#, kde-format
+msgid "Use keyserver at"
+msgstr "Użyj serwera kluczy"
+
+#: ui/cryptoconfigmodule.cpp:968
+#, kde-format
+msgid "Configure Keyservers"
+msgstr "Ustawienia serwerów kluczy"
+
+#: ui/directoryserviceswidget.cpp:67
+#, kde-format
+msgctxt "default server name, keep it a valid domain name, ie. no spaces"
+msgid "server"
+msgstr "serwer"
+
+#: ui/directoryserviceswidget.cpp:95
+#, kde-format
+msgid "hkp"
+msgstr "hkp"
+
+#: ui/directoryserviceswidget.cpp:96
+#, kde-format
+msgid "http"
+msgstr "http"
+
+#: ui/directoryserviceswidget.cpp:97
+#, kde-format
+msgid "https"
+msgstr "https"
+
+#: ui/directoryserviceswidget.cpp:98
+#, kde-format
+msgid "ftp"
+msgstr "ftp"
+
+#: ui/directoryserviceswidget.cpp:99
+#, kde-format
+msgid "ftps"
+msgstr "ftps"
+
+#: ui/directoryserviceswidget.cpp:100
+#, kde-format
+msgid "ldap"
+msgstr "ldap"
+
+#: ui/directoryserviceswidget.cpp:101
+#, kde-format
+msgid "ldaps"
+msgstr "ldaps"
+
+#: ui/directoryserviceswidget.cpp:588
+#, kde-format
+msgid "Server Name"
+msgstr "Nazwa serwera"
+
+#: ui/directoryserviceswidget.cpp:589
+#, kde-format
+msgid "Server Port"
+msgstr "Port serwera"
+
+#: ui/directoryserviceswidget.cpp:590
+#, kde-format
+msgid "Base DN"
+msgstr "Podstawowa DN"
+
+#: ui/directoryserviceswidget.cpp:591
+#, kde-format
+msgid "User Name"
+msgstr "Nazwa użytkownika"
+
+#: ui/directoryserviceswidget.cpp:592
+#, kde-format
+msgid "Password"
+msgstr "Hasło"
+
+#: ui/directoryserviceswidget.cpp:614
+#, kde-format
+msgid "(read-only)"
+msgstr "(tylko do odczytu)"
+
+#: ui/directoryserviceswidget.cpp:616
+#, kde-format
+msgctxt "amended tooltip; %1: original tooltip"
+msgid "%1 (read-only)"
+msgstr "%1 (tylko do odczytu)"
+
+#: ui/directoryserviceswidget.cpp:739
+#, kde-format
+msgid ""
+"Enter the name or IP address of the server hosting the directory service."
+msgstr "Podaj nazwę lub adres IP serwera, na którym działa usługa katalogowa."
+
+#: ui/directoryserviceswidget.cpp:741
+#, kde-format
+msgid ""
+"<b>(Optional, the default is fine in most cases)</b> Pick the port number "
+"the directory service is listening on."
+msgstr ""
+"<b>(Opcjonalnie, wartość domyślna jest właściwa w większości przypadków)</b> "
+"Wybierz numer portu, na którym nasłuchuje usługa katalogowa."
+
+#: ui/directoryserviceswidget.cpp:744
+#, kde-format
+msgid ""
+"<b>(Only for LDAP)</b> Enter the base DN for this LDAP server to limit "
+"searches to only that subtree of the directory."
+msgstr ""
+"<b>(Tylko dla LDAP)</b> Proszę podać podstawową nazwę (DN) tego serwera LDAP "
+"aby ograniczyć wyszukiwanie do tego poddrzewa katalogu."
+
+#: ui/directoryserviceswidget.cpp:747
+#, kde-format
+msgid "<b>(Optional)</b> Enter your user name here, if needed."
+msgstr ""
+"<b>(Opcjonalne)</b> Proszę wpisać tutaj swoją nazwę użytkownika, jeśli jest "
+"potrzebna."
+
+#: ui/directoryserviceswidget.cpp:749
+#, kde-format
+msgid ""
+"<b>(Optional, not recommended)</b> Enter your password here, if needed. Note "
+"that the password will be saved in the clear in a config file in your home "
+"directory."
+msgstr ""
+"<b>(Opcjonalne, nie zalecane)</b> Proszę wpisać tu swoje hasło, jeśli jest "
+"potrzebne. Uwaga: hasło zostanie zapisane jawnym tekstem w pliku ustawień w "
+"twoim katalogu domowym."
+
+#. i18n: ectx: property (windowTitle), widget (QWidget, DirectoryServicesWidget)
+#: ui/directoryserviceswidget.ui:14
+#, kde-format
+msgid "Directory Services Configuration"
+msgstr "Ustawienia usług katalogowych"
+
+#. i18n: ectx: property (text), widget (QLabel, pgpKSLabel)
+#: ui/directoryserviceswidget.ui:22
+#, kde-format
+msgid "OpenPGP Keyserver:"
+msgstr "Serwer kluczy OpenPGP:"
+
+#. i18n: ectx: property (title), widget (QGroupBox, x500LA)
+#: ui/directoryserviceswidget.ui:35
+#, kde-format
+msgid "X509 Directory services:"
+msgstr "Usługi katalogowe X509:"
+
+#. i18n: ectx: property (whatsThis), widget (QTreeView, treeView)
+#: ui/directoryserviceswidget.ui:43
+#, kde-format
+msgid ""
+"This is a list of all directory services that are configured for use with "
+"X.509."
+msgstr ""
+"To jest lista wszystkich usług katalogowych ustawionych do użycia z X.509."
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:70
+#, kde-format
+msgid "Click to add a service"
+msgstr "Kliknij, aby dodać usługę"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:73
+#, kde-format
+msgid ""
+"Click this button to create a new directory service entry as a clone of the "
+"currently selected one (or with default values, if no other is selected). "
+"You can then configure details in the table on the left hand."
+msgstr ""
+"Naciśnięcie tego przycisku spowoduje utworzenie kopii obecnie wybranego "
+"wpisu dotyczącego usługi katalogowej (lub z domyślnymi wartościami, jeśli "
+"nic nie wybrano). Szczegóły można potem ustawić w tabeli po lewej stronie."
+
+#. i18n: ectx: property (text), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:76
+#, kde-format
+msgid "New"
+msgstr "Nowy"
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:92
+#, kde-format
+msgid "Click to remove the currently selected service"
+msgstr "Kliknij, aby usunąć aktualnie zaznaczoną usługę"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:95
+#, kde-format
+msgid ""
+"Click this button to remove the currently selected directory service. The "
+"change will only take effect once you acknowledge the main configuration "
+"dialog."
+msgstr ""
+"Naciśnięcie tego przycisku spowoduje usunięcie obecnie wybranej usługi "
+"katalogowej. Zmiana odbędzie się po potwierdzeniu w oknie ustawień."
+
+#. i18n: ectx: property (text), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:98
+#, kde-format
+msgid "Delete"
+msgstr "Usuń"
+
+#. i18n: ectx: property (whatsThis), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:128
+#, kde-format
+msgid ""
+"Use this option to switch display of username and password information on or "
+"off in the above table."
+msgstr ""
+"Ta opcja służy do włączania i wyłączania informacji o nazwie użytkownika i "
+"haśle w powyższej tabeli."
+
+#. i18n: ectx: property (text), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:131
+#, kde-format
+msgid "Show user and password information"
+msgstr "Pokaż informacje o użytkowniku i haśle"
+
+#: ui/dnattributeorderconfigwidget.cpp:73
+#, kde-format
+msgid "Description"
+msgstr "Opis"
+
+#: ui/dnattributeorderconfigwidget.cpp:91
+#, kde-format
+msgid "Available attributes:"
+msgstr "Dostępne atrybuty:"
+
+#: ui/dnattributeorderconfigwidget.cpp:92
+#, kde-format
+msgid "Current attribute order:"
+msgstr "Obecny porządek atrybutów:"
+
+#: ui/dnattributeorderconfigwidget.cpp:112
+#, kde-format
+msgid "All others"
+msgstr "Wszystkie inne"
+
+#: ui/dnattributeorderconfigwidget.cpp:129
+#, kde-format
+msgid "Move to top"
+msgstr "Przenieś na szczyt"
+
+#: ui/dnattributeorderconfigwidget.cpp:130
+#, kde-format
+msgid "Move one up"
+msgstr "Przenieś wyżej"
+
+#: ui/dnattributeorderconfigwidget.cpp:131
+#, kde-format
+msgid "Remove from current attribute order"
+msgstr "Usuń z obecnego porządku atrybutów"
+
+#: ui/dnattributeorderconfigwidget.cpp:132
+#, kde-format
+msgid "Add to current attribute order"
+msgstr "Dodaj do obecnego porządku atrybutów"
+
+#: ui/dnattributeorderconfigwidget.cpp:133
+#, kde-format
+msgid "Move one down"
+msgstr "Przenieś niżej"
+
+#: ui/dnattributeorderconfigwidget.cpp:134
+#, kde-format
+msgid "Move to bottom"
+msgstr "Przenieś na dół"
+
+#: ui/keyapprovaldialog.cpp:87
+#, kde-kuit-format
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>brak</placeholder>"
+
+#: ui/keyapprovaldialog.cpp:88
+#, kde-format
+msgid "Never Encrypt with This Key"
+msgstr "Nigdy nie szyfruj tym kluczem"
+
+#: ui/keyapprovaldialog.cpp:89
+#, kde-format
+msgid "Always Encrypt with This Key"
+msgstr "Zawsze szyfruj tym kluczem"
+
+#: ui/keyapprovaldialog.cpp:90
+#, kde-format
+msgid "Encrypt Whenever Encryption is Possible"
+msgstr "Szyfruj, jeśli to możliwe"
+
+#: ui/keyapprovaldialog.cpp:91
+#, kde-format
+msgid "Always Ask"
+msgstr "Zawsze pytaj"
+
+#: ui/keyapprovaldialog.cpp:92
+#, kde-format
+msgid "Ask Whenever Encryption is Possible"
+msgstr "Pytaj, jeśli szyfrowanie jest możliwe"
+
+#: ui/keyapprovaldialog.cpp:113
+#, kde-format
+msgid "Encryption Key Approval"
+msgstr "Potwierdzenie klucza szyfrującego"
+
+#: ui/keyapprovaldialog.cpp:129
+#, kde-format
+msgid "The following keys will be used for encryption:"
+msgstr "Do szyfrowania użyte będą następujące klucze:"
+
+#: ui/keyapprovaldialog.cpp:145
+#, kde-format
+msgid "Your keys:"
+msgstr "Twoje klucze:"
+
+#: ui/keyapprovaldialog.cpp:157
+#, kde-format
+msgid "Recipient:"
+msgstr "Odbiorca:"
+
+#: ui/keyapprovaldialog.cpp:162
+#, kde-format
+msgid "Encryption keys:"
+msgstr "Klucze szyfrujące:"
+
+#: ui/keyapprovaldialog.cpp:169
+#, kde-format
+msgid "Encryption preference:"
+msgstr "Preferencje szyfrowania:"
+
+#: ui/keyrequester.cpp:118
+#, kde-format
+msgid "Clear"
+msgstr "Wyczyść"
+
+#: ui/keyrequester.cpp:121
+#, kde-format
+msgid "Change..."
+msgstr "Zmień..."
+
+#: ui/keyrequester.cpp:232 ui/keyselectiondialog.cpp:256
+#, kde-kuit-format
+msgid "<placeholder>unknown</placeholder>"
+msgstr "<placeholder>nieznany</placeholder>"
+
+#: ui/keyrequester.cpp:246 ui/keyselectiondialog.cpp:657
+#, kde-format
+msgid ""
+"<qt><p>An error occurred while fetching the keys from the backend:</p><p><b>"
+"%1</b></p></qt>"
+msgstr ""
+"<qt><p>Wystąpił błąd podczas pobierania kluczy z narzędzia:</p><p><b>%1</b></"
+"p></qt>"
+
+#: ui/keyrequester.cpp:251 ui/keyrequester.cpp:283 ui/keyrequester.cpp:306
+#: ui/keyselectiondialog.cpp:630 ui/keyselectiondialog.cpp:662
+#, kde-format
+msgid "Key Listing Failed"
+msgstr "Wyświetlanie kluczy zakończyło się niepowodzeniem"
+
+#: ui/keyrequester.cpp:281
+#, kde-format
+msgid ""
+"The OpenPGP backend does not support listing keys. Check your installation."
+msgstr ""
+"Narzędzie do OpenPGP nie obsługuje wyświetlania kluczy. Proszę sprawdzić "
+"Twoją instalację."
+
+#: ui/keyrequester.cpp:304
+#, kde-format
+msgid ""
+"The S/MIME backend does not support listing keys. Check your installation."
+msgstr ""
+"Narzędzie do S/MIME nie obsługuje wyświetlania kluczy. Proszę sprawdzić "
+"Twoją instalację."
+
+#: ui/keyrequester.cpp:426
+#, kde-format
+msgid "OpenPGP Key Selection"
+msgstr "Wybór klucza OpenPGP"
+
+#: ui/keyrequester.cpp:427
+#, kde-format
+msgid "Please select an OpenPGP key to use."
+msgstr "Wybierz klucz OpenPGP, do użycia."
+
+#: ui/keyrequester.cpp:429
+#, kde-format
+msgid "S/MIME Key Selection"
+msgstr "Wybór klucza S/MIME"
+
+#: ui/keyrequester.cpp:430
+#, kde-format
+msgid "Please select an S/MIME key to use."
+msgstr "Wybierz klucz S/MIME, do użycia."
+
+#: ui/keyrequester.cpp:432
+#, kde-format
+msgid "Key Selection"
+msgstr "Wybór klucza"
+
+#: ui/keyrequester.cpp:433
+#, kde-format
+msgid "Please select an (OpenPGP or S/MIME) key to use."
+msgstr "Wybierz klucz (OpenPGP lub S/MIME), do użycia."
+
+#: ui/keyselectioncombo.cpp:195
+#, kde-format
+msgctxt "Name <email> (validity, type, created: date)"
+msgid "%1 (%2, %3, created: %4)"
+msgstr "%1 (%2, %3, utworzony: %4)"
+
+#: ui/keyselectioncombo.cpp:196
+#, kde-format
+msgctxt "Name <email>"
+msgid "%1 <%2>"
+msgstr "%1 <%2>"
+
+#: ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "OpenPGP"
+msgstr "OpenPGP"
+
+#: ui/keyselectioncombo.cpp:347
+#, kde-format
+msgid "Loading keys ..."
+msgstr "Wczytywanie kluczy ..."
+
+#: ui/keyselectiondialog.cpp:98
+#, kde-format
+msgid "The key is not valid."
+msgstr "Ten klucz jest nieprawidłowy."
+
+#: ui/keyselectiondialog.cpp:106
+#, kde-format
+msgid "The key is expired."
+msgstr "Ten klucz wygasł."
+
+#: ui/keyselectiondialog.cpp:110
+#, kde-format
+msgid "The key is revoked."
+msgstr "Ten klucz został odwołany."
+
+#: ui/keyselectiondialog.cpp:114
+#, kde-format
+msgid "The key is disabled."
+msgstr "Ten klucz jest wyłączony."
+
+#: ui/keyselectiondialog.cpp:122
+#, kde-format
+msgid "The key is not designated for encryption."
+msgstr "Ten klucz nie jest przeznaczony do szyfrowania."
+
+#: ui/keyselectiondialog.cpp:128
+#, kde-format
+msgid "The key is not designated for signing."
+msgstr "Ten klucz nie jest przeznaczony do podpisywania."
+
+#: ui/keyselectiondialog.cpp:134
+#, kde-format
+msgid "The key is not designated for certifying."
+msgstr "Ten klucz nie jest przeznaczony do certyfikowania."
+
+#: ui/keyselectiondialog.cpp:140
+#, kde-format
+msgid "The key is not designated for authentication."
+msgstr "Ten klucz nie jest przeznaczony do uwierzytelnienia."
+
+#: ui/keyselectiondialog.cpp:148
+#, kde-format
+msgid "The key is not secret."
+msgstr "Ten klucz nie jest tajny."
+
+#: ui/keyselectiondialog.cpp:163
+#, kde-format
+msgid "The key is not trusted enough."
+msgstr "Ten klucz nie jest dostatecznie zaufany."
+
+#: ui/keyselectiondialog.cpp:169
+#, kde-format
+msgid "The key can be used."
+msgstr "Można użyć tego klucza."
+
+#: ui/keyselectiondialog.cpp:230
+#, kde-format
+msgid "Key ID"
+msgstr "Identyfikator klucza"
+
+#: ui/keyselectiondialog.cpp:231
+#, kde-format
+msgid "User ID"
+msgstr "Identyfikator użytkownika"
+
+#: ui/keyselectiondialog.cpp:279
+#, kde-format
+msgid "never"
+msgstr "nigdy"
+
+#: ui/keyselectiondialog.cpp:289 ui/keyselectiondialog.cpp:291
+#: ui/keyselectiondialog.cpp:300 ui/keyselectiondialog.cpp:302
+#, kde-format
+msgid "unknown"
+msgstr "nieznany"
+
+#: ui/keyselectiondialog.cpp:289
+#, kde-format
+msgid "OpenPGP key for <b>%1</b>"
+msgstr "Klucz OpenPGP dla <b>%1</b>"
+
+#: ui/keyselectiondialog.cpp:291
+#, kde-format
+msgid "S/MIME key for <b>%1</b>"
+msgstr "Klucz S/MIME dla <b>%1</b>"
+
+#: ui/keyselectiondialog.cpp:298
+#, kde-format
+msgctxt "Key creation date"
+msgid "Created"
+msgstr "Utworzony"
+
+#: ui/keyselectiondialog.cpp:299
+#, kde-format
+msgctxt "Key Expiration date"
+msgid "Expiry"
+msgstr "Okres ważności"
+
+#: ui/keyselectiondialog.cpp:300
+#, kde-format
+msgctxt "Key fingerprint"
+msgid "Fingerprint"
+msgstr "Odcisk palca"
+
+#: ui/keyselectiondialog.cpp:302
+#, kde-format
+msgctxt "Key issuer"
+msgid "Issuer"
+msgstr "Wystawca"
+
+#: ui/keyselectiondialog.cpp:304
+#, kde-format
+msgctxt "Key status"
+msgid "Status"
+msgstr "Stan"
+
+#: ui/keyselectiondialog.cpp:456
+#, kde-format
+msgid "Search for &External Certificates"
+msgstr "Wyszukaj z&ewnętrznych certyfikatów"
+
+#: ui/keyselectiondialog.cpp:470
+#, kde-format
+msgid "&Search for:"
+msgstr "&Szukaj:"
+
+#: ui/keyselectiondialog.cpp:494
+#, kde-format
+msgid "&Remember choice"
+msgstr "Zapamiętaj wybó&r"
+
+#: ui/keyselectiondialog.cpp:497
+#, kde-format
+msgid ""
+"<qt><p>If you check this box your choice will be stored and you will not be "
+"asked again.</p></qt>"
+msgstr ""
+"<qt><p>Jeśli wybierzesz tę opcję, Twój wybór zostanie zapamiętany i to "
+"pytanie więcej się nie pojawi.</p></qt>"
+
+#: ui/keyselectiondialog.cpp:509
+#, kde-format
+msgid "&Reread Keys"
+msgstr "&Odczytaj klucze ponownie"
+
+#: ui/keyselectiondialog.cpp:510
+#, kde-format
+msgid "&Start Certificate Manager"
+msgstr "&Przejdź do zarządzania certyfikatami"
+
+#: ui/keyselectiondialog.cpp:628
+#, kde-format
+msgid "No backends found for listing keys. Check your installation."
+msgstr ""
+"Nie znaleziono narzędzia do wyświetlania kluczy. Proszę sprawdzić swoją "
+"instalację."
+
+#: ui/keyselectiondialog.cpp:644
+#, kde-format
+msgid "Could not start certificate manager; please check your installation."
+msgstr ""
+"Nie można przejść do zarządzania certyfikatami, proszę sprawdzić poprawność "
+"instalacji"
+
+#: ui/keyselectiondialog.cpp:646
+#, kde-format
+msgid "Certificate Manager Error"
+msgstr "Błąd zarządzania certyfikatami"
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Checking selected keys..."
+msgstr "Sprawdzanie wybranych kluczy..."
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Fetching keys..."
+msgstr "Pobieranie kluczy..."
+
+#: ui/keyselectiondialog.cpp:731
+#, kde-format
+msgid ""
+"<qt>One backend returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgid_plural ""
+"<qt>%1 backends returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgstr[0] ""
+"<qt>Narzędzie zwróciło obcięty wynik.<p>Nie wszystkie dostępne klucze są "
+"pokazane.</p></qt>"
+msgstr[1] ""
+"<qt>%1 narzędzia zwróciły obcięty wynik.<p>Nie wszystkie dostępne klucze są "
+"pokazane.</p></qt>"
+msgstr[2] ""
+"<qt>%1 narzędzi zwróciło obcięty wynik.<p>Nie wszystkie dostępne klucze są "
+"pokazane.</p></qt>"
+
+#: ui/keyselectiondialog.cpp:736
+#, kde-format
+msgid "Key List Result"
+msgstr "Wynik wyświetlania kluczy"
+
+#: ui/keyselectiondialog.cpp:856
+#, kde-format
+msgid "Recheck Key"
+msgstr "Sprawdź klucz ponownie"
+
+#: ui/messagebox.cpp:71
+#, kde-format
+msgid "Your system does not have support for GnuPG Audit Logs"
+msgstr "W Twoim systemie brakuje obsługi dzienników GnuPG"
+
+#: ui/messagebox.cpp:72
+#, kde-format
+msgid "System Error"
+msgstr "Błąd systemowy"
+
+#: ui/messagebox.cpp:79
+#, kde-format
+msgid ""
+"An error occurred while trying to retrieve the GnuPG Audit Log:\n"
+"%1"
+msgstr ""
+"Wystąpił błąd, podczas uzyskiwania dziennika audytu GnuPG:\n"
+"%1"
+
+#: ui/messagebox.cpp:81
+#, kde-format
+msgid "GnuPG Audit Log Error"
+msgstr "Błąd dziennika audytu GnuPG"
+
+#: ui/messagebox.cpp:88
+#, kde-format
+msgid "No GnuPG Audit Log available for this operation."
+msgstr "Nie ma dostępnego dziennika GnuPG dla tej operacji."
+
+#: ui/messagebox.cpp:89
+#, kde-format
+msgid "No GnuPG Audit Log"
+msgstr "Brak dziennika GnuPG"
+
+#: ui/messagebox.cpp:109 ui/messagebox.cpp:115
+#, kde-format
+msgid "GnuPG Audit Log Viewer"
+msgstr "Przeglądarka dziennika GnuPG"
+
+#: ui/messagebox.cpp:121
+#, kde-format
+msgid "Signing failed: %1"
+msgstr "Podpisywanie zakończyło się niepowodzeniem: %1"
+
+#: ui/messagebox.cpp:122
+#, kde-format
+msgid "Signing successful"
+msgstr "Podpisywanie udane"
+
+#: ui/messagebox.cpp:133
+#, kde-format
+msgid "Encryption failed: %1"
+msgstr "Szyfrowanie zakończyło się niepowodzeniem: %1"
+
+#: ui/messagebox.cpp:134
+#, kde-format
+msgid "Encryption successful"
+msgstr "Szyfrowanie udane"
+
+#: ui/messagebox.cpp:155
+#, kde-format
+msgid "Signing Result"
+msgstr "Wyniki podpisywania"
+
+#: ui/messagebox.cpp:167
+#, kde-format
+msgid "Signing Error"
+msgstr "Błąd podczas podpisywania"
+
+#: ui/messagebox.cpp:179 ui/messagebox.cpp:203
+#, kde-format
+msgid "Encryption Result"
+msgstr "Wynik szyfrowania"
+
+#: ui/messagebox.cpp:191 ui/messagebox.cpp:215
+#, kde-format
+msgid "Encryption Error"
+msgstr "Błąd podczas szyfrowania"
+
+#: ui/messagebox.cpp:263
+#, kde-format
+msgid "&Show Audit Log"
+msgstr "&Pokaż dziennik"
+
+#: ui/progressdialog.cpp:91
+#, kde-format
+msgid "%1: %2"
+msgstr "%1: %2"
+
+#~ msgctxt "New X.509 Directory Server"
+#~ msgid "X.509"
+#~ msgstr "X.509"
+
+#~ msgctxt "New OpenPGP Directory Server"
+#~ msgid "OpenPGP"
+#~ msgstr "OpenPGP"
+
+#~ msgid "Scheme"
+#~ msgstr "Protokół"
+
+#~ msgid "X.509"
+#~ msgstr "X.509"
+
+#~ msgid ""
+#~ "Select the access scheme (scheme) that the directory service is available "
+#~ "through."
+#~ msgstr "Wybierz schemat dostępu, którego używa usługa katalogowa."
+
+#~ msgid ""
+#~ "Check this column if this directory service is providing S/MIME (X.509) "
+#~ "certificates."
+#~ msgstr ""
+#~ "Zaznacz tą kolumnę jeśli usługa katalogowa udostępnia certyfikaty S/MIME "
+#~ "(X.509)."
+
+#~ msgid ""
+#~ "Check this column if this directory service is providing OpenPGP "
+#~ "certificates."
+#~ msgstr ""
+#~ "Zaznacz tą kolumnę jeśli usługa katalogowa udostępnia certyfikaty OpenPGP."
+
+#~ msgid "0 - None (no debugging at all)"
+#~ msgstr "0 - Brak (brak jakiegokolwiek debugowania)"
+
+#~ msgid "1 - Basic (some basic debug messages)"
+#~ msgstr "1 - Podstawowa (podstawowe wiadomości diagnostyczne)"
+
+#~ msgid "2 - Advanced (more verbose debug messages)"
+#~ msgstr "2 - Zaawansowana (bardziej szczegółowe wiadomości diagnostyczne)"
+
+#~ msgid "3 - Expert (even more detailed messages)"
+#~ msgstr "3 - Ekspert (jeszcze bardziej szczegółowe wiadomości diagnostyczne)"
+
+#~ msgid "4 - Guru (all of the debug messages you can get)"
+#~ msgstr "4 - Guru (wszystkie możliwe do uzyskania wiadomości diagnostyczne)"
+
+#~ msgid "General"
+#~ msgstr "Ogólne"
+
+#~ msgid "Chiasmus"
+#~ msgstr "Chiasmus"
+
+#~ msgid "Chiasmus command line tool"
+#~ msgstr "Narzędzie linii poleceń Chiasmus"
+
+#~ msgid "Unsupported protocol \"%1\""
+#~ msgstr "Nieobsługiwany protokół \"%1\""
+
+#~ msgid "File \"%1\" does not exist or is not executable."
+#~ msgstr "Plik \"%1\" nie istnieje lub nie jest plikiem wykonywalnym."
+
+#~ msgid "Output from chiasmus"
+#~ msgstr "Wyjście Chiasmus"
+
+#~ msgid "Decryption failed: %1"
+#~ msgstr "Odszyfrowywanie zakończyło się niepowodzeniem: %1"
+
+#~ msgid ""
+#~ "The following was received on stderr:\n"
+#~ "%1"
+#~ msgstr ""
+#~ "Tekst na wyjściu diagnostycznym:\n"
+#~ "%1"
+
+#~ msgid "Failed to load %1: %2"
+#~ msgstr "Nie powiodło się wczytanie %1: %2"
+
+#~ msgid "Library does not contain the symbol \"Chiasmus\"."
+#~ msgstr "Biblioteka nie zawiera symbolu \"Chiasmus\"."
+
+#~ msgid "Scanning directory %1..."
+#~ msgstr "Przeszukiwanie katalogu %1..."
+
+#~ msgid "GpgME"
+#~ msgstr "GpgME"
+
+#~ msgid "GPGME was compiled without support for %1."
+#~ msgstr "GPGME został skompilowany bez obsługi %1."
+
+#~ msgid "Engine %1 is not installed properly."
+#~ msgstr "Narzędzie %1 nie zostało zainstalowane prawidłowo."
+
+#~ msgid "Engine %1 version %2 installed, but at least version %3 is required."
+#~ msgstr ""
+#~ "Narzędzie %1 zostało zainstalowane w wersji %2, ale wymagana jest "
+#~ "przynajmniej wersja %3."
+
+#~ msgid "Unknown problem with engine for protocol %1."
+#~ msgstr "Wystąpił nieznany problem w narzędziu dla protokołu %1."
+
+#~ msgid "program terminated unexpectedly"
+#~ msgstr "program niespodziewania zakończył działanie"
+
+#~ msgid "program not found or cannot be started"
+#~ msgstr "nie znaleziono programu lub nie można go uruchomić"
+
+#~ msgid "<qt>Failed to execute gpgconf:<p>%1</p></qt>"
+#~ msgstr "<qt>Nie powiodło się uruchomienie gpgconf:<p>%1</p></qt>"
+
+#~ msgid ""
+#~ "Could not start gpgconf.\n"
+#~ "Check that gpgconf is in the PATH and that it can be started."
+#~ msgstr ""
+#~ "Nie można uruchomić gpgconf\n"
+#~ "Proszę sprawdzić, że program gpgconf znajduje się w katalogu wskazywanym "
+#~ "przez zmienną PATH i że może być uruchomiony."
+
+#~ msgid "Error from gpgconf while saving configuration: %1"
+#~ msgstr "Wystąpił błąd w gpgconf podczas zapisywania ustawień: %1"
+
+#~ msgid "Generating DSA key..."
+#~ msgstr "Tworzenie klucza DSA..."
+
+#~ msgid "Generating ElGamal key..."
+#~ msgstr "Tworzenie klucza ElGamal..."
+
+#~ msgid "Searching for a large prime number..."
+#~ msgstr "Szukanie dużej liczby pierwszej..."
+
+#~ msgid ""
+#~ "Waiting for new entropy from random number generator (you might want to "
+#~ "exercise the harddisks or move the mouse)..."
+#~ msgstr ""
+#~ "Oczekiwanie na porcję entropii z generatora liczb losowych (możesz "
+#~ "wywołać pracę dysków lub poruszać myszą)..."
+
+#~ msgid "Please wait..."
+#~ msgstr "Proszę czekać..."
+
+#~ msgid ""
+#~ "Starting gpg-agent (you should consider starting a global instance "
+#~ "instead)..."
+#~ msgstr ""
+#~ "Uruchamianie programu gpg-agent (powinieneś rozważyć uruchamianie jednej "
+#~ "globalnej kopii zamiast tego)..."
+
+#~ msgid "While scanning for %1 support in backend %2:"
+#~ msgstr "Podczas wykrywania obsługi %1 w narzędziu %2:"
+
+#~ msgctxt "progress info: \"%1 of %2\""
+#~ msgid "%1/%2"
+#~ msgstr "%1/%2"
+
+#~ msgid ""
+#~ "OpenPGP key for %1\n"
+#~ "Created: %2\n"
+#~ "Expiry: %3\n"
+#~ "Fingerprint: %4"
+#~ msgstr ""
+#~ "Klucz OpenPGP dla %1\n"
+#~ "Stworzony: %2\n"
+#~ "Wygasa: %3\n"
+#~ "Odcisk klucza: %4"
+
+#~ msgid ""
+#~ "S/MIME key for %1\n"
+#~ "Created: %2\n"
+#~ "Expiry: %3\n"
+#~ "Fingerprint: %4\n"
+#~ "Issuer: %5"
+#~ msgstr ""
+#~ "Klucz S/MIME dla %1\n"
+#~ "Stworzony: %2\n"
+#~ "Wygasa: %3\n"
+#~ "Odcisk klucza: %4\n"
+#~ "Wystawca: %5"
+
+#~ msgid "Copy Audit Log to Clipboard"
+#~ msgstr "Kopiuj dziennik do schowka"
+
+#~ msgid "Add or Change Directory Service"
+#~ msgstr "Dodanie lub zmiana usługi katalogowej"
+
+#~ msgid "&Server name:"
+#~ msgstr "Nazwa &serwera:"
+
+#~ msgid "389"
+#~ msgstr "389"
+
+#~ msgid "&User name (optional):"
+#~ msgstr "Nazwa &użytkownika (opcjonalna):"
+
+#~ msgid "Pass&word (optional):"
+#~ msgstr "&Hasło (opcjonalne):"
+
+#~ msgid "&OK"
+#~ msgstr "&OK"
+
+#~ msgid "&Cancel"
+#~ msgstr "&Anuluj"
+
+#~ msgid "&Base DN:"
+#~ msgstr "&Podstawowa DN:"
+
+#~ msgid "&Port:"
+#~ msgstr "&Port:"
+
+#~ msgctxt "NAME OF TRANSLATORS"
+#~ msgid "Your names"
+#~ msgstr "Krzysztof Lichota, Marta Rybczyńska"
+
+#~ msgctxt "EMAIL OF TRANSLATORS"
+#~ msgid "Your emails"
+#~ msgstr "lichota@mimuw.edu.pl, kde-i18n@rybczynska.net"
+
+#~ msgid "(Unknown Protocol)"
+#~ msgstr "(Nieznany protokół)"
+
+#~ msgid "Error while initializing plugin \"%1\""
+#~ msgstr "Błąd podczas inicjalizacji wtyczki \"%1\""
+
+#~ msgid "failed"
+#~ msgstr "błąd"
+
+#~ msgctxt ""
+#~ "Items in Kleo::BackendConfigWidget listview (1: protocol; 2: "
+#~ "implementation name)"
+#~ msgid "%1 (%2)"
+#~ msgstr "%1 (%2)"
+
+#~ msgid "Available Backends"
+#~ msgstr "Dostępne narzędzia"
+
+#~ msgid "Confi&gure..."
+#~ msgstr "Konfi&guruj..."
+
+#~ msgid "Rescan"
+#~ msgstr "Przeskanuj ponownie"
+
+#~ msgid "The following problems where encountered during scanning:"
+#~ msgstr "Podczas skanowania wystąpiły następujące problemy:"
+
+#~ msgctxt "@title:window Results of the scanning"
+#~ msgid "Scan Results"
+#~ msgstr "Wyniki skanowania"
--- /dev/null
+msgid ""
+msgstr ""
+"Project-Id-Version: libkleopatra\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2017-07-12 06:56+0200\n"
+"PO-Revision-Date: 2017-07-12 11:23+0100\n"
+"Last-Translator: Pedro Morais <morais@kde.org>\n"
+"Language-Team: pt <kde-i18n-pt@kde.org>\n"
+"Language: pt\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-POFile-SpellExtra: DN CRLs Kpgp gpg agent gpgconf gnupg pgp GpgME ID\n"
+"X-POFile-SpellExtra: GPGME DSA ElGamal Chiasmus chiasmus stderr https hkp\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-POFile-SpellExtra: ldaps ftps yes GpgConf patterns command id verify\n"
+"X-POFile-SpellExtra: create VS\n"
+
+#: kleo/checksumdefinition.cpp:107
+#, kde-format
+msgid "Error in checksum definition %1: %2"
+msgstr "Erro na definição do código de validação %1: %2"
+
+#: kleo/checksumdefinition.cpp:157
+#, kde-format
+msgid "Cannot use both %f and | in '%1'"
+msgstr "Não é possível usar o %f e o | no '%1'"
+
+#: kleo/checksumdefinition.cpp:167
+#, kde-format
+msgid "Quoting error in '%1' entry"
+msgstr "Erro de aspas no item '%1'"
+
+#: kleo/checksumdefinition.cpp:170
+#, kde-format
+msgid "'%1' too complex (would need shell)"
+msgstr ""
+"O item '%1' é demasiado complexo (iria necessitar da linha de comandos)"
+
+#: kleo/checksumdefinition.cpp:174
+#, kde-format
+msgid "'%1' entry is empty/missing"
+msgstr "Falta o item '%1', ou está em branco"
+
+#: kleo/checksumdefinition.cpp:183
+#, kde-format
+msgid "'%1' empty or not found"
+msgstr "Falta o item '%1', ou está em branco"
+
+#: kleo/checksumdefinition.cpp:222
+#, kde-format
+msgid "'id' entry is empty/missing"
+msgstr "Falta o item 'id', ou está em branco"
+
+#: kleo/checksumdefinition.cpp:225
+#, kde-format
+msgid "'output-file' entry is empty/missing"
+msgstr "Falta o item 'output-file', ou está em branco"
+
+#: kleo/checksumdefinition.cpp:228
+#, kde-format
+msgid "'file-patterns' entry is empty/missing"
+msgstr "Falta o item 'file-patterns', ou está em branco"
+
+#: kleo/checksumdefinition.cpp:395
+#, kde-format
+msgid "Caught unknown exception in group %1"
+msgstr "Foi recebida uma excepção desconhecida no grupo %1"
+
+#: kleo/dn.cpp:507
+#, kde-format
+msgid "Common name"
+msgstr "Nome comum"
+
+#: kleo/dn.cpp:508
+#, kde-format
+msgid "Surname"
+msgstr "Apelido"
+
+#: kleo/dn.cpp:509
+#, kde-format
+msgid "Given name"
+msgstr "Nome próprio"
+
+#: kleo/dn.cpp:510
+#, kde-format
+msgid "Location"
+msgstr "Localização"
+
+#: kleo/dn.cpp:511
+#, kde-format
+msgid "Title"
+msgstr "Título"
+
+#: kleo/dn.cpp:512
+#, kde-format
+msgid "Organizational unit"
+msgstr "Unidade organizacional"
+
+#: kleo/dn.cpp:513
+#, kde-format
+msgid "Organization"
+msgstr "Organização"
+
+#: kleo/dn.cpp:514
+#, kde-format
+msgid "Postal code"
+msgstr "Código postal"
+
+#: kleo/dn.cpp:515
+#, kde-format
+msgid "Country code"
+msgstr "Código do país"
+
+#: kleo/dn.cpp:516
+#, kde-format
+msgid "State or province"
+msgstr "Estado ou província"
+
+#: kleo/dn.cpp:517
+#, kde-format
+msgid "Domain component"
+msgstr "Componente de domínio"
+
+#: kleo/dn.cpp:518
+#, kde-format
+msgid "Business category"
+msgstr "Categoria de negócios"
+
+#: kleo/dn.cpp:519
+#, kde-format
+msgid "Email address"
+msgstr "Endereço de e-mail"
+
+#: kleo/dn.cpp:520
+#, kde-format
+msgid "Mail address"
+msgstr "Endereço de correio"
+
+#: kleo/dn.cpp:521
+#, kde-format
+msgid "Mobile phone number"
+msgstr "Número de telemóvel"
+
+#: kleo/dn.cpp:522
+#, kde-format
+msgid "Telephone number"
+msgstr "Número de telefone"
+
+#: kleo/dn.cpp:523
+#, kde-format
+msgid "Fax number"
+msgstr "Número de fax"
+
+#: kleo/dn.cpp:524
+#, kde-format
+msgid "Street address"
+msgstr "Endereço da rua"
+
+#: kleo/dn.cpp:525
+#, kde-format
+msgid "Unique ID"
+msgstr "ID único"
+
+#: kleo/enum.cpp:57
+#, kde-format
+msgid "Inline OpenPGP (deprecated)"
+msgstr "OpenPGP embutido (não aconselhado)"
+
+#: kleo/enum.cpp:62
+#, kde-format
+msgid "OpenPGP/MIME"
+msgstr "OpenPGP/MIME"
+
+#: kleo/enum.cpp:67 ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "S/MIME"
+msgstr "S/MIME"
+
+#: kleo/enum.cpp:72
+#, kde-format
+msgid "S/MIME Opaque"
+msgstr "S/MIME Opaco"
+
+#: kleo/enum.cpp:104
+#, kde-format
+msgid "Any"
+msgstr "Qualquer"
+
+#: kleo/enum.cpp:177
+#, kde-format
+msgid "Never Encrypt"
+msgstr "Nunca Cifrar"
+
+#: kleo/enum.cpp:179
+#, kde-format
+msgid "Always Encrypt"
+msgstr "Cifrar Sempre"
+
+#: kleo/enum.cpp:181
+#, kde-format
+msgid "Always Encrypt If Possible"
+msgstr "Cifrar Sempre Se Possível"
+
+#: kleo/enum.cpp:183 kleo/enum.cpp:240
+#, kde-format
+msgid "Ask"
+msgstr "Perguntar"
+
+#: kleo/enum.cpp:185 kleo/enum.cpp:242
+#, kde-format
+msgid "Ask Whenever Possible"
+msgstr "Perguntar Sempre que Possível"
+
+#: kleo/enum.cpp:187
+#, kde-kuit-format
+msgctxt "no specific preference"
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>nenhum</placeholder>"
+
+#: kleo/enum.cpp:234
+#, kde-format
+msgid "Never Sign"
+msgstr "Nunca Assinar"
+
+#: kleo/enum.cpp:236
+#, kde-format
+msgid "Always Sign"
+msgstr "Assinar Sempre"
+
+#: kleo/enum.cpp:238
+#, kde-format
+msgid "Always Sign If Possible"
+msgstr "Assinar Sempre Se Possível"
+
+#: kleo/enum.cpp:244
+#, kde-format
+msgctxt "no specific preference"
+msgid "<none>"
+msgstr "<nenhuma>"
+
+#: kleo/keyfiltermanager.cpp:85
+#, kde-format
+msgid "All Certificates"
+msgstr "Todos os Certificados"
+
+#: kleo/keyfiltermanager.cpp:100
+#, kde-format
+msgid "My Certificates"
+msgstr "Os Meus Certificados"
+
+#: kleo/keyfiltermanager.cpp:118
+#, kde-format
+msgid "Trusted Certificates"
+msgstr "Certificados de Confiança"
+
+#: kleo/keyfiltermanager.cpp:135
+#, kde-format
+msgid "Fully Trusted Certificates"
+msgstr "Certificados de Confiança Total"
+
+#: kleo/keyfiltermanager.cpp:152
+#, kde-format
+msgid "Other Certificates"
+msgstr "Outros Certificados"
+
+#: kleo/keyfiltermanager.cpp:166
+#, kde-format
+msgid "VS-compliant Certificates"
+msgstr "Certificados Compatíveis com VS"
+
+#: kleo/keyfiltermanager.cpp:184
+#, kde-format
+msgid "Not validated Certificates"
+msgstr "Certificados Não Validados"
+
+#: ui/auditlogviewer.cpp:49
+#, kde-format
+msgid "View GnuPG Audit Log"
+msgstr "Ver o Registo de Auditoria do GnuPG"
+
+#: ui/auditlogviewer.cpp:53
+#, kde-format
+msgid "&Copy to Clipboard"
+msgstr "&Copiar para a Área de Transferência"
+
+#: ui/auditlogviewer.cpp:59
+#, kde-format
+msgid "&Save to Disk..."
+msgstr "Gravar no Di&sco..."
+
+#: ui/auditlogviewer.cpp:95
+#, kde-format
+msgid "Choose File to Save GnuPG Audit Log to"
+msgstr "Escolher o Ficheiro onde Gravar a Auditoria do GnuPG"
+
+#: ui/auditlogviewer.cpp:118
+#, kde-format
+msgid "Could not save to file \"%1\": %2"
+msgstr "Não foi possível gravar o ficheiro \"%1\": %2"
+
+#: ui/auditlogviewer.cpp:120
+#, kde-format
+msgid "File Save Error"
+msgstr "Erro na Gravação do Ficheiro"
+
+#: ui/cryptoconfigdialog.cpp:44
+#, kde-format
+msgid "Configure GnuPG Backend"
+msgstr "Configurar a Infra-Estrutura do GnuPG"
+
+#: ui/cryptoconfigdialog.cpp:55
+#, kde-format
+msgid "&Reset"
+msgstr "&Reiniciar"
+
+#: ui/cryptoconfigmodule.cpp:160
+#, kde-format
+msgid "GpgConf Error"
+msgstr "Erro do GpgConf"
+
+#: ui/cryptoconfigmodule.cpp:216
+#, kde-format
+msgid ""
+"The gpgconf tool used to provide the information for this dialog does not "
+"seem to be installed properly. It did not return any components. Try running "
+"\"%1\" on the command line for more information."
+msgstr ""
+"A ferramenta 'gpgconf', usada para fornecer a informação para esta janela, "
+"não parece estar instalada correctamente. Não devolveu nenhuns componentes. "
+"Tente executar o \"%1\" na linha de comandos para mais informações."
+
+#: ui/cryptoconfigmodule.cpp:496
+#, kde-format
+msgctxt ""
+"Translate this to 'yes' or 'no' (use the English words!) depending on "
+"whether your language uses Sentence style capitalisation in GUI labels (yes) "
+"or not (no). Context: We get some backend strings in that have the wrong "
+"capitalizaion (in English, at least) so we need to force the first character "
+"to upper-case. It is this behaviour you can control for your language with "
+"this translation."
+msgid "yes"
+msgstr "yes"
+
+#: ui/cryptoconfigmodule.cpp:546
+#, kde-format
+msgid "0 - None"
+msgstr "0 - Nenhum"
+
+#: ui/cryptoconfigmodule.cpp:547
+#, kde-format
+msgid "1 - Basic"
+msgstr "1 - Básico"
+
+#: ui/cryptoconfigmodule.cpp:548
+#, kde-format
+msgid "2 - Verbose"
+msgstr "2 - Descritivo"
+
+#: ui/cryptoconfigmodule.cpp:549
+#, kde-format
+msgid "3 - More Verbose"
+msgstr "3 - Mais Descritivo"
+
+#: ui/cryptoconfigmodule.cpp:550
+#, kde-format
+msgid "4 - All"
+msgstr "4 - Tudo"
+
+#: ui/cryptoconfigmodule.cpp:559
+#, kde-format
+msgid "Set the debugging level to"
+msgstr "Configurar o nível de depuração como"
+
+#: ui/cryptoconfigmodule.cpp:787
+#, kde-format
+msgid "Show..."
+msgstr "Mostrar..."
+
+#: ui/cryptoconfigmodule.cpp:787 ui/cryptoconfigmodule.cpp:876
+#, kde-format
+msgid "Edit..."
+msgstr "Editar..."
+
+#: ui/cryptoconfigmodule.cpp:841
+#, kde-format
+msgid "Configure LDAP Servers"
+msgstr "Configurar os Servidores LDAP"
+
+#: ui/cryptoconfigmodule.cpp:862
+#, kde-format
+msgid "None configured"
+msgstr "Nada configurado"
+
+#: ui/cryptoconfigmodule.cpp:864
+#, kde-format
+msgid "1 server configured"
+msgid_plural "%1 servers configured"
+msgstr[0] "%1 servidor configurado"
+msgstr[1] "%1 servidores configurados"
+
+#: ui/cryptoconfigmodule.cpp:879
+#, kde-format
+msgid "Use keyserver at"
+msgstr "Usar o servidor de chaves em"
+
+#: ui/cryptoconfigmodule.cpp:968
+#, kde-format
+msgid "Configure Keyservers"
+msgstr "Configurar os Servidores de Chaves"
+
+#: ui/directoryserviceswidget.cpp:67
+#, kde-format
+msgctxt "default server name, keep it a valid domain name, ie. no spaces"
+msgid "server"
+msgstr "servidor"
+
+#: ui/directoryserviceswidget.cpp:95
+#, kde-format
+msgid "hkp"
+msgstr "hkp"
+
+#: ui/directoryserviceswidget.cpp:96
+#, kde-format
+msgid "http"
+msgstr "http"
+
+#: ui/directoryserviceswidget.cpp:97
+#, kde-format
+msgid "https"
+msgstr "https"
+
+#: ui/directoryserviceswidget.cpp:98
+#, kde-format
+msgid "ftp"
+msgstr "ftp"
+
+#: ui/directoryserviceswidget.cpp:99
+#, kde-format
+msgid "ftps"
+msgstr "ftps"
+
+#: ui/directoryserviceswidget.cpp:100
+#, kde-format
+msgid "ldap"
+msgstr "ldap"
+
+#: ui/directoryserviceswidget.cpp:101
+#, kde-format
+msgid "ldaps"
+msgstr "ldaps"
+
+#: ui/directoryserviceswidget.cpp:588
+#, kde-format
+msgid "Server Name"
+msgstr "Nome do Servidor"
+
+#: ui/directoryserviceswidget.cpp:589
+#, kde-format
+msgid "Server Port"
+msgstr "Porto do Servidor"
+
+#: ui/directoryserviceswidget.cpp:590
+#, kde-format
+msgid "Base DN"
+msgstr "DN de base"
+
+#: ui/directoryserviceswidget.cpp:591
+#, kde-format
+msgid "User Name"
+msgstr "Nome do Utilizador"
+
+#: ui/directoryserviceswidget.cpp:592
+#, kde-format
+msgid "Password"
+msgstr "Senha"
+
+#: ui/directoryserviceswidget.cpp:614
+#, kde-format
+msgid "(read-only)"
+msgstr "(apenas para leitura)"
+
+#: ui/directoryserviceswidget.cpp:616
+#, kde-format
+msgctxt "amended tooltip; %1: original tooltip"
+msgid "%1 (read-only)"
+msgstr "%1 (apenas para leitura)"
+
+#: ui/directoryserviceswidget.cpp:739
+#, kde-format
+msgid ""
+"Enter the name or IP address of the server hosting the directory service."
+msgstr ""
+"Indique o nome ou o endereço IP do servidor que aloja o serviço de "
+"directório."
+
+#: ui/directoryserviceswidget.cpp:741
+#, kde-format
+msgid ""
+"<b>(Optional, the default is fine in most cases)</b> Pick the port number "
+"the directory service is listening on."
+msgstr ""
+"<b>(Opcional, sendo o valor por omissão o adequado na maioria dos casos)</b> "
+"Indique o número do porto onde o serviço de directório está à espera de "
+"pedidos."
+
+#: ui/directoryserviceswidget.cpp:744
+#, kde-format
+msgid ""
+"<b>(Only for LDAP)</b> Enter the base DN for this LDAP server to limit "
+"searches to only that subtree of the directory."
+msgstr ""
+"<b>(Apenas no LDAP)</b> Indique o DN de base para este servidor de LDAP, de "
+"modo a limitar as pesquisas apenas a essa sub-árvore do directório."
+
+#: ui/directoryserviceswidget.cpp:747
+#, kde-format
+msgid "<b>(Optional)</b> Enter your user name here, if needed."
+msgstr ""
+"<b>(Opcional)</b> Indique aqui o seu nome de utilizador, se necessário."
+
+#: ui/directoryserviceswidget.cpp:749
+#, kde-format
+msgid ""
+"<b>(Optional, not recommended)</b> Enter your password here, if needed. Note "
+"that the password will be saved in the clear in a config file in your home "
+"directory."
+msgstr ""
+"<b>(Opcional e não recomendado)</b> Indique aqui a sua senha, se necessário. "
+"Lembre-se que a senha será gravada de forma legível num ficheiro de "
+"configuração da sua área pessoal."
+
+#. i18n: ectx: property (windowTitle), widget (QWidget, DirectoryServicesWidget)
+#: ui/directoryserviceswidget.ui:14
+#, kde-format
+msgid "Directory Services Configuration"
+msgstr "Configuração de Serviços de Directório"
+
+#. i18n: ectx: property (text), widget (QLabel, pgpKSLabel)
+#: ui/directoryserviceswidget.ui:22
+#, kde-format
+msgid "OpenPGP Keyserver:"
+msgstr "Servidor de Chaves do OpenPGP:"
+
+#. i18n: ectx: property (title), widget (QGroupBox, x500LA)
+#: ui/directoryserviceswidget.ui:35
+#, kde-format
+msgid "X509 Directory services:"
+msgstr "Serviços de directório X.509:"
+
+#. i18n: ectx: property (whatsThis), widget (QTreeView, treeView)
+#: ui/directoryserviceswidget.ui:43
+#, kde-format
+msgid ""
+"This is a list of all directory services that are configured for use with "
+"X.509."
+msgstr ""
+"Esta é uma lista de todos os serviços de directório que estão configurados "
+"para serem usados com o X.509."
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:70
+#, kde-format
+msgid "Click to add a service"
+msgstr "Carregue para adicionar um serviço"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:73
+#, kde-format
+msgid ""
+"Click this button to create a new directory service entry as a clone of the "
+"currently selected one (or with default values, if no other is selected). "
+"You can then configure details in the table on the left hand."
+msgstr ""
+"Carregue neste botão para criar um novo serviço de directório como uma cópia "
+"do actualmente seleccionado (ou com valores predefinidos, no caso de não "
+"estar nenhum seleccionado). Poderá depois configurar os detalhes na tabela "
+"à esquerda."
+
+#. i18n: ectx: property (text), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:76
+#, kde-format
+msgid "New"
+msgstr "Novo"
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:92
+#, kde-format
+msgid "Click to remove the currently selected service"
+msgstr "Carregue para remover o serviço actualmente seleccionado"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:95
+#, kde-format
+msgid ""
+"Click this button to remove the currently selected directory service. The "
+"change will only take effect once you acknowledge the main configuration "
+"dialog."
+msgstr ""
+"Carregue neste botão para remover o serviço de directório actualmente "
+"seleccionado. A alteração só fará efeito quando o confirmar na janela de "
+"configuração do correio."
+
+#. i18n: ectx: property (text), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:98
+#, kde-format
+msgid "Delete"
+msgstr "Apagar"
+
+#. i18n: ectx: property (whatsThis), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:128
+#, kde-format
+msgid ""
+"Use this option to switch display of username and password information on or "
+"off in the above table."
+msgstr ""
+"Use esta opção para activar ou desactivar a visualização da informação do "
+"utilizador e senha na tabela acima."
+
+#. i18n: ectx: property (text), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:131
+#, kde-format
+msgid "Show user and password information"
+msgstr "Mostrar a informação do utilizador e senha"
+
+#: ui/dnattributeorderconfigwidget.cpp:73
+#, kde-format
+msgid "Description"
+msgstr "Descrição"
+
+#: ui/dnattributeorderconfigwidget.cpp:91
+#, kde-format
+msgid "Available attributes:"
+msgstr "Atributos disponíveis:"
+
+#: ui/dnattributeorderconfigwidget.cpp:92
+#, kde-format
+msgid "Current attribute order:"
+msgstr "Ordem de atributos actual:"
+
+#: ui/dnattributeorderconfigwidget.cpp:112
+#, kde-format
+msgid "All others"
+msgstr "Todos os outros"
+
+#: ui/dnattributeorderconfigwidget.cpp:129
+#, kde-format
+msgid "Move to top"
+msgstr "Para o topo"
+
+#: ui/dnattributeorderconfigwidget.cpp:130
+#, kde-format
+msgid "Move one up"
+msgstr "Subir"
+
+#: ui/dnattributeorderconfigwidget.cpp:131
+#, kde-format
+msgid "Remove from current attribute order"
+msgstr "Remover da ordem de atributos actual"
+
+#: ui/dnattributeorderconfigwidget.cpp:132
+#, kde-format
+msgid "Add to current attribute order"
+msgstr "Adicionar da ordem de atributos actual"
+
+#: ui/dnattributeorderconfigwidget.cpp:133
+#, kde-format
+msgid "Move one down"
+msgstr "Descer"
+
+#: ui/dnattributeorderconfigwidget.cpp:134
+#, kde-format
+msgid "Move to bottom"
+msgstr "Para o fundo"
+
+#: ui/keyapprovaldialog.cpp:87
+#, kde-kuit-format
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>nenhum</placeholder>"
+
+#: ui/keyapprovaldialog.cpp:88
+#, kde-format
+msgid "Never Encrypt with This Key"
+msgstr "Nunca Cifrar com Esta Chave"
+
+#: ui/keyapprovaldialog.cpp:89
+#, kde-format
+msgid "Always Encrypt with This Key"
+msgstr "Cifrar Sempre com Esta Chave"
+
+#: ui/keyapprovaldialog.cpp:90
+#, kde-format
+msgid "Encrypt Whenever Encryption is Possible"
+msgstr "Cifrar Sempre que a Cifra Seja Possível"
+
+#: ui/keyapprovaldialog.cpp:91
+#, kde-format
+msgid "Always Ask"
+msgstr "Perguntar Sempre"
+
+#: ui/keyapprovaldialog.cpp:92
+#, kde-format
+msgid "Ask Whenever Encryption is Possible"
+msgstr "Perguntar Sempre que a Cifra Seja Possível"
+
+#: ui/keyapprovaldialog.cpp:113
+#, kde-format
+msgid "Encryption Key Approval"
+msgstr "Aprovação da Chave de Cifra"
+
+#: ui/keyapprovaldialog.cpp:129
+#, kde-format
+msgid "The following keys will be used for encryption:"
+msgstr "As seguintes chaves serão usadas para a cifra:"
+
+#: ui/keyapprovaldialog.cpp:145
+#, kde-format
+msgid "Your keys:"
+msgstr "As suas chaves:"
+
+#: ui/keyapprovaldialog.cpp:157
+#, kde-format
+msgid "Recipient:"
+msgstr "Destinatário:"
+
+#: ui/keyapprovaldialog.cpp:162
+#, kde-format
+msgid "Encryption keys:"
+msgstr "Chaves de cifra:"
+
+#: ui/keyapprovaldialog.cpp:169
+#, kde-format
+msgid "Encryption preference:"
+msgstr "Preferência da cifra:"
+
+#: ui/keyrequester.cpp:118
+#, kde-format
+msgid "Clear"
+msgstr "Limpar"
+
+#: ui/keyrequester.cpp:121
+#, kde-format
+msgid "Change..."
+msgstr "Modificar..."
+
+#: ui/keyrequester.cpp:232 ui/keyselectiondialog.cpp:256
+#, kde-kuit-format
+msgid "<placeholder>unknown</placeholder>"
+msgstr "<placeholder>desconhecido</placeholder>"
+
+#: ui/keyrequester.cpp:246 ui/keyselectiondialog.cpp:657
+#, kde-format
+msgid ""
+"<qt><p>An error occurred while fetching the keys from the backend:</p><p><b>"
+"%1</b></p></qt>"
+msgstr ""
+"<qt><p>Ocorreu um erro ao obter as chaves da infra-estrutura:</p><p><b>%1</"
+"b></p></qt>"
+
+#: ui/keyrequester.cpp:251 ui/keyrequester.cpp:283 ui/keyrequester.cpp:306
+#: ui/keyselectiondialog.cpp:630 ui/keyselectiondialog.cpp:662
+#, kde-format
+msgid "Key Listing Failed"
+msgstr "Listagem de Chaves Falhou"
+
+#: ui/keyrequester.cpp:281
+#, kde-format
+msgid ""
+"The OpenPGP backend does not support listing keys. Check your installation."
+msgstr ""
+"A infra-estrutura OpenPGP não suporta a listagem de chaves. Verifique a sua "
+"instalação."
+
+#: ui/keyrequester.cpp:304
+#, kde-format
+msgid ""
+"The S/MIME backend does not support listing keys. Check your installation."
+msgstr ""
+"A infra-estrutura S/MIME não suporta a listagem de chaves. Verifique a sua "
+"instalação."
+
+#: ui/keyrequester.cpp:426
+#, kde-format
+msgid "OpenPGP Key Selection"
+msgstr "Selecção da Chave do OpenPGP"
+
+#: ui/keyrequester.cpp:427
+#, kde-format
+msgid "Please select an OpenPGP key to use."
+msgstr "Por favor, seleccione uma chave de OpenPGP a usar."
+
+#: ui/keyrequester.cpp:429
+#, kde-format
+msgid "S/MIME Key Selection"
+msgstr "Escolha de Chave S/MIME"
+
+#: ui/keyrequester.cpp:430
+#, kde-format
+msgid "Please select an S/MIME key to use."
+msgstr "Escolha uma chave S/MIME a utilizar."
+
+#: ui/keyrequester.cpp:432
+#, kde-format
+msgid "Key Selection"
+msgstr "Escolha de Chave"
+
+#: ui/keyrequester.cpp:433
+#, kde-format
+msgid "Please select an (OpenPGP or S/MIME) key to use."
+msgstr "Escolha uma chave (OpenPGP ou S/MIME) a utilizar."
+
+#: ui/keyselectioncombo.cpp:195
+#, kde-format
+msgctxt "Name <email> (validity, type, created: date)"
+msgid "%1 (%2, %3, created: %4)"
+msgstr "%1 (%2, %3, criado a: %4)"
+
+#: ui/keyselectioncombo.cpp:196
+#, kde-format
+msgctxt "Name <email>"
+msgid "%1 <%2>"
+msgstr "%1 <%2>"
+
+#: ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "OpenPGP"
+msgstr "OpenPGP"
+
+#: ui/keyselectioncombo.cpp:347
+#, kde-format
+msgid "Loading keys ..."
+msgstr "A carregar as chaves ..."
+
+#: ui/keyselectiondialog.cpp:98
+#, kde-format
+msgid "The key is not valid."
+msgstr "A chave não é válida."
+
+#: ui/keyselectiondialog.cpp:106
+#, kde-format
+msgid "The key is expired."
+msgstr "A chave expirou."
+
+#: ui/keyselectiondialog.cpp:110
+#, kde-format
+msgid "The key is revoked."
+msgstr "A chave está revogada."
+
+#: ui/keyselectiondialog.cpp:114
+#, kde-format
+msgid "The key is disabled."
+msgstr "A chave está desactivada."
+
+#: ui/keyselectiondialog.cpp:122
+#, kde-format
+msgid "The key is not designated for encryption."
+msgstr "A chave não se destina para a encriptação."
+
+#: ui/keyselectiondialog.cpp:128
+#, kde-format
+msgid "The key is not designated for signing."
+msgstr "A chave não se destina para a assinatura."
+
+#: ui/keyselectiondialog.cpp:134
+#, kde-format
+msgid "The key is not designated for certifying."
+msgstr "A chave não se destina para a certificação."
+
+#: ui/keyselectiondialog.cpp:140
+#, kde-format
+msgid "The key is not designated for authentication."
+msgstr "A chave não se destina para a autenticação."
+
+#: ui/keyselectiondialog.cpp:148
+#, kde-format
+msgid "The key is not secret."
+msgstr "A chave não é privada."
+
+#: ui/keyselectiondialog.cpp:163
+#, kde-format
+msgid "The key is not trusted enough."
+msgstr "A chave não é fidedigna o suficiente."
+
+#: ui/keyselectiondialog.cpp:169
+#, kde-format
+msgid "The key can be used."
+msgstr "A chave pode ser usada."
+
+#: ui/keyselectiondialog.cpp:230
+#, kde-format
+msgid "Key ID"
+msgstr "ID da Chave"
+
+#: ui/keyselectiondialog.cpp:231
+#, kde-format
+msgid "User ID"
+msgstr "ID do Utilizador"
+
+#: ui/keyselectiondialog.cpp:279
+#, kde-format
+msgid "never"
+msgstr "nunca"
+
+#: ui/keyselectiondialog.cpp:289 ui/keyselectiondialog.cpp:291
+#: ui/keyselectiondialog.cpp:300 ui/keyselectiondialog.cpp:302
+#, kde-format
+msgid "unknown"
+msgstr "desconhecido"
+
+#: ui/keyselectiondialog.cpp:289
+#, kde-format
+msgid "OpenPGP key for <b>%1</b>"
+msgstr "Chave de OpenPGP para o <b>%1</b>"
+
+#: ui/keyselectiondialog.cpp:291
+#, kde-format
+msgid "S/MIME key for <b>%1</b>"
+msgstr "Chave de S/MIME para o <b>%1</b>"
+
+#: ui/keyselectiondialog.cpp:298
+#, kde-format
+msgctxt "Key creation date"
+msgid "Created"
+msgstr "Criada a"
+
+#: ui/keyselectiondialog.cpp:299
+#, kde-format
+msgctxt "Key Expiration date"
+msgid "Expiry"
+msgstr "Válida até"
+
+#: ui/keyselectiondialog.cpp:300
+#, kde-format
+msgctxt "Key fingerprint"
+msgid "Fingerprint"
+msgstr "Impressão digital"
+
+#: ui/keyselectiondialog.cpp:302
+#, kde-format
+msgctxt "Key issuer"
+msgid "Issuer"
+msgstr "Emissor"
+
+#: ui/keyselectiondialog.cpp:304
+#, kde-format
+msgctxt "Key status"
+msgid "Status"
+msgstr "Estado"
+
+#: ui/keyselectiondialog.cpp:456
+#, kde-format
+msgid "Search for &External Certificates"
+msgstr "Procurar por Certificados &Externos"
+
+#: ui/keyselectiondialog.cpp:470
+#, kde-format
+msgid "&Search for:"
+msgstr "&Procurar por:"
+
+#: ui/keyselectiondialog.cpp:494
+#, kde-format
+msgid "&Remember choice"
+msgstr "&Recordar a decisão"
+
+#: ui/keyselectiondialog.cpp:497
+#, kde-format
+msgid ""
+"<qt><p>If you check this box your choice will be stored and you will not be "
+"asked again.</p></qt>"
+msgstr ""
+"<qt><p>Se assinalar esta opção, a escolha do utilizador será armazenada e "
+"não lhe será perguntada de novo.</p></qt>"
+
+#: ui/keyselectiondialog.cpp:509
+#, kde-format
+msgid "&Reread Keys"
+msgstr "&Reler as Chaves"
+
+#: ui/keyselectiondialog.cpp:510
+#, kde-format
+msgid "&Start Certificate Manager"
+msgstr "Iniciar o Ge&stor de Certificados"
+
+#: ui/keyselectiondialog.cpp:628
+#, kde-format
+msgid "No backends found for listing keys. Check your installation."
+msgstr ""
+"Nenhuma infra-estrutura encontrada para listagem de chaves. Verifique a sua "
+"instalação."
+
+#: ui/keyselectiondialog.cpp:644
+#, kde-format
+msgid "Could not start certificate manager; please check your installation."
+msgstr ""
+"Não foi possível iniciar o gestor de certificados; verifique por favor a sua "
+"instalação."
+
+#: ui/keyselectiondialog.cpp:646
+#, kde-format
+msgid "Certificate Manager Error"
+msgstr "Erro do Gestor de Certificados"
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Checking selected keys..."
+msgstr "A verificar as chaves seleccionadas..."
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Fetching keys..."
+msgstr "A transferir as chaves..."
+
+#: ui/keyselectiondialog.cpp:731
+#, kde-format
+msgid ""
+"<qt>One backend returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgid_plural ""
+"<qt>%1 backends returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgstr[0] ""
+"<qt>Uma infra-estrutura devolveu um resultado truncado. Nem todas as chaves "
+"disponíveis são mostradas</qt>"
+msgstr[1] ""
+"<qt>%1 infra-estruturas devolveram um resultado truncado. Nem todas as "
+"chaves disponíveis são mostradas</qt>"
+
+#: ui/keyselectiondialog.cpp:736
+#, kde-format
+msgid "Key List Result"
+msgstr "Resultado da Listagem de Chaves"
+
+#: ui/keyselectiondialog.cpp:856
+#, kde-format
+msgid "Recheck Key"
+msgstr "Rever a Chave"
+
+#: ui/messagebox.cpp:71
+#, kde-format
+msgid "Your system does not have support for GnuPG Audit Logs"
+msgstr "O seu sistema não tem suporte para os Registos de Auditoria do GnuPG"
+
+#: ui/messagebox.cpp:72
+#, kde-format
+msgid "System Error"
+msgstr "Erro do Sistema"
+
+#: ui/messagebox.cpp:79
+#, kde-format
+msgid ""
+"An error occurred while trying to retrieve the GnuPG Audit Log:\n"
+"%1"
+msgstr ""
+"Ocorreu um erro ao tentar obter o registo de auditoria do GnuPG:\n"
+"%1"
+
+#: ui/messagebox.cpp:81
+#, kde-format
+msgid "GnuPG Audit Log Error"
+msgstr "Erro no Registo de Auditoria do GnuPG"
+
+#: ui/messagebox.cpp:88
+#, kde-format
+msgid "No GnuPG Audit Log available for this operation."
+msgstr ""
+"Não está disponível nenhum registo de auditoria do GnuPG para esta operação."
+
+#: ui/messagebox.cpp:89
+#, kde-format
+msgid "No GnuPG Audit Log"
+msgstr "Sem Registo de Auditoria do GnuPG"
+
+#: ui/messagebox.cpp:109 ui/messagebox.cpp:115
+#, kde-format
+msgid "GnuPG Audit Log Viewer"
+msgstr "Visualizador do Registo de Auditoria do GnuPG"
+
+#: ui/messagebox.cpp:121
+#, kde-format
+msgid "Signing failed: %1"
+msgstr "A assinatura falhou: %1"
+
+#: ui/messagebox.cpp:122
+#, kde-format
+msgid "Signing successful"
+msgstr "Assinatura com sucesso"
+
+#: ui/messagebox.cpp:133
+#, kde-format
+msgid "Encryption failed: %1"
+msgstr "A encriptação falhou: %1"
+
+#: ui/messagebox.cpp:134
+#, kde-format
+msgid "Encryption successful"
+msgstr "Encriptação com sucesso"
+
+#: ui/messagebox.cpp:155
+#, kde-format
+msgid "Signing Result"
+msgstr "Resultado da Assinatura"
+
+#: ui/messagebox.cpp:167
+#, kde-format
+msgid "Signing Error"
+msgstr "Erro na Assinatura"
+
+#: ui/messagebox.cpp:179 ui/messagebox.cpp:203
+#, kde-format
+msgid "Encryption Result"
+msgstr "Resultado da Encriptação"
+
+#: ui/messagebox.cpp:191 ui/messagebox.cpp:215
+#, kde-format
+msgid "Encryption Error"
+msgstr "Erro de Encriptação"
+
+#: ui/messagebox.cpp:263
+#, kde-format
+msgid "&Show Audit Log"
+msgstr "Mo&strar o Registo da Auditoria"
+
+#: ui/progressdialog.cpp:91
+#, kde-format
+msgid "%1: %2"
+msgstr "%1: %2"
--- /dev/null
+# Translation of libkleopatra.po to Brazilian Portuguese
+# Copyright (C) 2008-2015 This_file_is_part_of_KDE
+# This file is distributed under the same license as the PACKAGE package.
+#
+# André Marcelo Alvarenga <alvarenga@kde.org>, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015.
+# Luiz Fernando Ranghetti <elchevive@opensuse.org>, 2009, 2010.
+# Marcus Vinícius de Andrade Gama <marcus.gama@gmail.com>, 2010.
+msgid ""
+msgstr ""
+"Project-Id-Version: libkleopatra\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2017-07-12 06:56+0200\n"
+"PO-Revision-Date: 2015-04-27 08:23-0300\n"
+"Last-Translator: André Marcelo Alvarenga <alvarenga@kde.org>\n"
+"Language-Team: Brazilian Portuguese <kde-i18n-pt_br@kde.org>\n"
+"Language: pt_BR\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"X-Generator: Lokalize 1.5\n"
+
+#: kleo/checksumdefinition.cpp:107
+#, kde-format
+msgid "Error in checksum definition %1: %2"
+msgstr "Erro na definição da soma de verificação %1: %2"
+
+#: kleo/checksumdefinition.cpp:157
+#, kde-format
+msgid "Cannot use both %f and | in '%1'"
+msgstr "Não é possível usar o %f e o | no '%1'"
+
+#: kleo/checksumdefinition.cpp:167
+#, kde-format
+msgid "Quoting error in '%1' entry"
+msgstr "Erro de aspas no item '%1'"
+
+#: kleo/checksumdefinition.cpp:170
+#, kde-format
+msgid "'%1' too complex (would need shell)"
+msgstr "O item '%1' é muito complexo (precisaria da linha de comando)"
+
+#: kleo/checksumdefinition.cpp:174
+#, kde-format
+msgid "'%1' entry is empty/missing"
+msgstr "falta o item '%1' ou está vazio"
+
+#: kleo/checksumdefinition.cpp:183
+#, kde-format
+msgid "'%1' empty or not found"
+msgstr "O item '%1' está vazio ou não foi encontrado"
+
+#: kleo/checksumdefinition.cpp:222
+#, kde-format
+msgid "'id' entry is empty/missing"
+msgstr "falta o item 'id' ou está vazio"
+
+#: kleo/checksumdefinition.cpp:225
+#, kde-format
+msgid "'output-file' entry is empty/missing"
+msgstr "falta o item 'output-file' ou está vazio"
+
+#: kleo/checksumdefinition.cpp:228
+#, kde-format
+msgid "'file-patterns' entry is empty/missing"
+msgstr "falta o item 'file-patterns' ou está vazio"
+
+#: kleo/checksumdefinition.cpp:395
+#, kde-format
+msgid "Caught unknown exception in group %1"
+msgstr "Foi recebida uma exceção desconhecida no grupo %1"
+
+#: kleo/dn.cpp:507
+#, kde-format
+msgid "Common name"
+msgstr "Nome comum"
+
+#: kleo/dn.cpp:508
+#, kde-format
+msgid "Surname"
+msgstr "Sobrenome"
+
+#: kleo/dn.cpp:509
+#, kde-format
+msgid "Given name"
+msgstr "Nome próprio"
+
+#: kleo/dn.cpp:510
+#, kde-format
+msgid "Location"
+msgstr "Localização"
+
+#: kleo/dn.cpp:511
+#, kde-format
+msgid "Title"
+msgstr "Título"
+
+#: kleo/dn.cpp:512
+#, kde-format
+msgid "Organizational unit"
+msgstr "Unidade organizacional"
+
+#: kleo/dn.cpp:513
+#, kde-format
+msgid "Organization"
+msgstr "Organização"
+
+#: kleo/dn.cpp:514
+#, kde-format
+msgid "Postal code"
+msgstr "CEP"
+
+#: kleo/dn.cpp:515
+#, kde-format
+msgid "Country code"
+msgstr "Código do país"
+
+#: kleo/dn.cpp:516
+#, kde-format
+msgid "State or province"
+msgstr "Estado ou província"
+
+#: kleo/dn.cpp:517
+#, kde-format
+msgid "Domain component"
+msgstr "Componente de domínio"
+
+#: kleo/dn.cpp:518
+#, kde-format
+msgid "Business category"
+msgstr "Categoria de negócios"
+
+#: kleo/dn.cpp:519
+#, kde-format
+msgid "Email address"
+msgstr "Endereço de e-mail"
+
+#: kleo/dn.cpp:520
+#, kde-format
+msgid "Mail address"
+msgstr "Endereço de e-mail"
+
+#: kleo/dn.cpp:521
+#, kde-format
+msgid "Mobile phone number"
+msgstr "Número do celular"
+
+#: kleo/dn.cpp:522
+#, kde-format
+msgid "Telephone number"
+msgstr "Número do telefone"
+
+#: kleo/dn.cpp:523
+#, kde-format
+msgid "Fax number"
+msgstr "Número do fax"
+
+#: kleo/dn.cpp:524
+#, kde-format
+msgid "Street address"
+msgstr "Endereço"
+
+#: kleo/dn.cpp:525
+#, kde-format
+msgid "Unique ID"
+msgstr "ID único"
+
+#: kleo/enum.cpp:57
+#, kde-format
+msgid "Inline OpenPGP (deprecated)"
+msgstr "OpenPGP integrado (obsoleto)"
+
+#: kleo/enum.cpp:62
+#, kde-format
+msgid "OpenPGP/MIME"
+msgstr "OpenPGP/MIME"
+
+#: kleo/enum.cpp:67 ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "S/MIME"
+msgstr "S/MIME"
+
+#: kleo/enum.cpp:72
+#, kde-format
+msgid "S/MIME Opaque"
+msgstr "S/MIME opaco"
+
+#: kleo/enum.cpp:104
+#, kde-format
+msgid "Any"
+msgstr "Qualquer"
+
+#: kleo/enum.cpp:177
+#, kde-format
+msgid "Never Encrypt"
+msgstr "Nunca criptografar"
+
+#: kleo/enum.cpp:179
+#, kde-format
+msgid "Always Encrypt"
+msgstr "Sempre criptografar"
+
+#: kleo/enum.cpp:181
+#, kde-format
+msgid "Always Encrypt If Possible"
+msgstr "Criptografar sempre que possível"
+
+#: kleo/enum.cpp:183 kleo/enum.cpp:240
+#, kde-format
+msgid "Ask"
+msgstr "Perguntar"
+
+#: kleo/enum.cpp:185 kleo/enum.cpp:242
+#, kde-format
+msgid "Ask Whenever Possible"
+msgstr "Perguntar sempre que possível"
+
+#: kleo/enum.cpp:187
+#, kde-kuit-format
+msgctxt "no specific preference"
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>nenhuma</placeholder>"
+
+#: kleo/enum.cpp:234
+#, kde-format
+msgid "Never Sign"
+msgstr "Nunca assinar"
+
+#: kleo/enum.cpp:236
+#, kde-format
+msgid "Always Sign"
+msgstr "Sempre assinar"
+
+#: kleo/enum.cpp:238
+#, kde-format
+msgid "Always Sign If Possible"
+msgstr "Assinar sempre que possível"
+
+#: kleo/enum.cpp:244
+#, kde-format
+msgctxt "no specific preference"
+msgid "<none>"
+msgstr "<nenhuma>"
+
+#: kleo/keyfiltermanager.cpp:85
+#, kde-format
+msgid "All Certificates"
+msgstr "Todos os certificados"
+
+#: kleo/keyfiltermanager.cpp:100
+#, kde-format
+msgid "My Certificates"
+msgstr "Meus certificados"
+
+#: kleo/keyfiltermanager.cpp:118
+#, kde-format
+msgid "Trusted Certificates"
+msgstr "Certificados confiáveis"
+
+#: kleo/keyfiltermanager.cpp:135
+#, fuzzy, kde-format
+#| msgid "Trusted Certificates"
+msgid "Fully Trusted Certificates"
+msgstr "Certificados confiáveis"
+
+#: kleo/keyfiltermanager.cpp:152
+#, kde-format
+msgid "Other Certificates"
+msgstr "Outros certificados"
+
+#: kleo/keyfiltermanager.cpp:166
+#, fuzzy, kde-format
+#| msgid "All Certificates"
+msgid "VS-compliant Certificates"
+msgstr "Todos os certificados"
+
+#: kleo/keyfiltermanager.cpp:184
+#, fuzzy, kde-format
+#| msgid "Trusted Certificates"
+msgid "Not validated Certificates"
+msgstr "Certificados confiáveis"
+
+#: ui/auditlogviewer.cpp:49
+#, kde-format
+msgid "View GnuPG Audit Log"
+msgstr "Exibir registro de auditoria do GnuPG"
+
+#: ui/auditlogviewer.cpp:53
+#, kde-format
+msgid "&Copy to Clipboard"
+msgstr "&Copiar para a área de transferência"
+
+#: ui/auditlogviewer.cpp:59
+#, kde-format
+msgid "&Save to Disk..."
+msgstr "&Salvar para o disco..."
+
+#: ui/auditlogviewer.cpp:95
+#, kde-format
+msgid "Choose File to Save GnuPG Audit Log to"
+msgstr "Escolher o arquivo onde salvar o registro de auditoria do GnuPG"
+
+#: ui/auditlogviewer.cpp:118
+#, kde-format
+msgid "Could not save to file \"%1\": %2"
+msgstr "Não foi possível salvar o arquivo \"%1\": %2"
+
+#: ui/auditlogviewer.cpp:120
+#, kde-format
+msgid "File Save Error"
+msgstr "Erro ao salvar o arquivo"
+
+#: ui/cryptoconfigdialog.cpp:44
+#, kde-format
+msgid "Configure GnuPG Backend"
+msgstr "Configurar a infraestrutura do GnuPG"
+
+#: ui/cryptoconfigdialog.cpp:55
+#, kde-format
+msgid "&Reset"
+msgstr "&Reiniciar"
+
+#: ui/cryptoconfigmodule.cpp:160
+#, kde-format
+msgid "GpgConf Error"
+msgstr "Erro no GpgConf"
+
+#: ui/cryptoconfigmodule.cpp:216
+#, kde-format
+msgid ""
+"The gpgconf tool used to provide the information for this dialog does not "
+"seem to be installed properly. It did not return any components. Try running "
+"\"%1\" on the command line for more information."
+msgstr ""
+"A ferramenta gpgconf usada para fornecer as informações para este diálogo "
+"parece não ter sido instalada corretamente. Ela não retorna quaisquer "
+"componentes. Tente executar \"%1\" na linha de comando para mais informações."
+
+#: ui/cryptoconfigmodule.cpp:496
+#, kde-format
+msgctxt ""
+"Translate this to 'yes' or 'no' (use the English words!) depending on "
+"whether your language uses Sentence style capitalisation in GUI labels (yes) "
+"or not (no). Context: We get some backend strings in that have the wrong "
+"capitalizaion (in English, at least) so we need to force the first character "
+"to upper-case. It is this behaviour you can control for your language with "
+"this translation."
+msgid "yes"
+msgstr "yes"
+
+#: ui/cryptoconfigmodule.cpp:546
+#, kde-format
+msgid "0 - None"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:547
+#, kde-format
+msgid "1 - Basic"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:548
+#, kde-format
+msgid "2 - Verbose"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:549
+#, kde-format
+msgid "3 - More Verbose"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:550
+#, kde-format
+msgid "4 - All"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:559
+#, kde-format
+msgid "Set the debugging level to"
+msgstr "Selecionar o nível de depuração para"
+
+#: ui/cryptoconfigmodule.cpp:787
+#, kde-format
+msgid "Show..."
+msgstr "Mostrar..."
+
+#: ui/cryptoconfigmodule.cpp:787 ui/cryptoconfigmodule.cpp:876
+#, kde-format
+msgid "Edit..."
+msgstr "Editar..."
+
+#: ui/cryptoconfigmodule.cpp:841
+#, kde-format
+msgid "Configure LDAP Servers"
+msgstr "Configurar servidores LDAP"
+
+#: ui/cryptoconfigmodule.cpp:862
+#, fuzzy, kde-format
+#| msgid "No server configured yet"
+msgid "None configured"
+msgstr "Nenhum servidor configurado"
+
+#: ui/cryptoconfigmodule.cpp:864
+#, kde-format
+msgid "1 server configured"
+msgid_plural "%1 servers configured"
+msgstr[0] "1 servidor configurado"
+msgstr[1] "%1 servidores configurados"
+
+#: ui/cryptoconfigmodule.cpp:879
+#, kde-format
+msgid "Use keyserver at"
+msgstr "Usar o servidor de chaves em"
+
+#: ui/cryptoconfigmodule.cpp:968
+#, kde-format
+msgid "Configure Keyservers"
+msgstr "Configurar os servidores de chaves"
+
+#: ui/directoryserviceswidget.cpp:67
+#, kde-format
+msgctxt "default server name, keep it a valid domain name, ie. no spaces"
+msgid "server"
+msgstr "servidor"
+
+#: ui/directoryserviceswidget.cpp:95
+#, kde-format
+msgid "hkp"
+msgstr "hkp"
+
+#: ui/directoryserviceswidget.cpp:96
+#, kde-format
+msgid "http"
+msgstr "http"
+
+#: ui/directoryserviceswidget.cpp:97
+#, kde-format
+msgid "https"
+msgstr "https"
+
+#: ui/directoryserviceswidget.cpp:98
+#, kde-format
+msgid "ftp"
+msgstr "ftp"
+
+#: ui/directoryserviceswidget.cpp:99
+#, kde-format
+msgid "ftps"
+msgstr "ftps"
+
+#: ui/directoryserviceswidget.cpp:100
+#, kde-format
+msgid "ldap"
+msgstr "ldap"
+
+#: ui/directoryserviceswidget.cpp:101
+#, kde-format
+msgid "ldaps"
+msgstr "ldaps"
+
+#: ui/directoryserviceswidget.cpp:588
+#, kde-format
+msgid "Server Name"
+msgstr "Nome do servidor"
+
+#: ui/directoryserviceswidget.cpp:589
+#, kde-format
+msgid "Server Port"
+msgstr "Porta do servidor"
+
+#: ui/directoryserviceswidget.cpp:590
+#, kde-format
+msgid "Base DN"
+msgstr "DN base"
+
+#: ui/directoryserviceswidget.cpp:591
+#, kde-format
+msgid "User Name"
+msgstr "Nome do usuário"
+
+#: ui/directoryserviceswidget.cpp:592
+#, kde-format
+msgid "Password"
+msgstr "Senha"
+
+#: ui/directoryserviceswidget.cpp:614
+#, kde-format
+msgid "(read-only)"
+msgstr "(somente leitura)"
+
+#: ui/directoryserviceswidget.cpp:616
+#, kde-format
+msgctxt "amended tooltip; %1: original tooltip"
+msgid "%1 (read-only)"
+msgstr "%1 (somente leitura)"
+
+#: ui/directoryserviceswidget.cpp:739
+#, kde-format
+msgid ""
+"Enter the name or IP address of the server hosting the directory service."
+msgstr ""
+"Digite o nome ou endereço IP do servidor de hospedagem do serviço de "
+"diretório."
+
+#: ui/directoryserviceswidget.cpp:741
+#, kde-format
+msgid ""
+"<b>(Optional, the default is fine in most cases)</b> Pick the port number "
+"the directory service is listening on."
+msgstr ""
+"<b>(Opcional, o padrão é bom em muitos casos)</b> Escolha o número da porta "
+"em que o serviço de diretório está disponível."
+
+#: ui/directoryserviceswidget.cpp:744
+#, kde-format
+msgid ""
+"<b>(Only for LDAP)</b> Enter the base DN for this LDAP server to limit "
+"searches to only that subtree of the directory."
+msgstr ""
+"<b>(Somente para LDAP)</b> Digite o DN base para este servidor LDAP para "
+"limitar pesquisas em somente esta subárvore de diretório."
+
+#: ui/directoryserviceswidget.cpp:747
+#, kde-format
+msgid "<b>(Optional)</b> Enter your user name here, if needed."
+msgstr "<b>(Opcional)</b> Se for necessário, digite seu nome de usuário aqui."
+
+#: ui/directoryserviceswidget.cpp:749
+#, kde-format
+msgid ""
+"<b>(Optional, not recommended)</b> Enter your password here, if needed. Note "
+"that the password will be saved in the clear in a config file in your home "
+"directory."
+msgstr ""
+"<b>(Optional, não recomendado)</b> Se necessário, digite a sua senha aqui. "
+"Lembre-se que a senha será salva em um arquivo de configuração no seu "
+"diretório home."
+
+#. i18n: ectx: property (windowTitle), widget (QWidget, DirectoryServicesWidget)
+#: ui/directoryserviceswidget.ui:14
+#, kde-format
+msgid "Directory Services Configuration"
+msgstr "Configuração dos serviços de diretório"
+
+#. i18n: ectx: property (text), widget (QLabel, pgpKSLabel)
+#: ui/directoryserviceswidget.ui:22
+#, fuzzy, kde-format
+#| msgid "OpenPGP Key Selection"
+msgid "OpenPGP Keyserver:"
+msgstr "Seleção da chave do OpenPGP"
+
+#. i18n: ectx: property (title), widget (QGroupBox, x500LA)
+#: ui/directoryserviceswidget.ui:35
+#, fuzzy, kde-format
+#| msgid "Directory services:"
+msgid "X509 Directory services:"
+msgstr "Serviços de diretório:"
+
+#. i18n: ectx: property (whatsThis), widget (QTreeView, treeView)
+#: ui/directoryserviceswidget.ui:43
+#, fuzzy, kde-format
+#| msgid ""
+#| "This is a list of all directory services that are configured for use with "
+#| "X.509 and OpenPGP."
+msgid ""
+"This is a list of all directory services that are configured for use with "
+"X.509."
+msgstr ""
+"Esta é uma lista de todos os serviços de diretório configurados para uso com "
+"X.509 e OpenPGP."
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:70
+#, kde-format
+msgid "Click to add a service"
+msgstr "Clique para adicionar um serviço"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:73
+#, kde-format
+msgid ""
+"Click this button to create a new directory service entry as a clone of the "
+"currently selected one (or with default values, if no other is selected). "
+"You can then configure details in the table on the left hand."
+msgstr ""
+"Clique neste botão para criar uma nova entrada de serviço de diretório como "
+"um clone do atualmente selecionado (ou com valores padrão, se nenhum estiver "
+"selecionado). Você pode então configurar os detalhes na tabela à esquerda."
+
+#. i18n: ectx: property (text), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:76
+#, kde-format
+msgid "New"
+msgstr "Novo"
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:92
+#, kde-format
+msgid "Click to remove the currently selected service"
+msgstr "Clique para remover o serviço atualmente selecionado"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:95
+#, kde-format
+msgid ""
+"Click this button to remove the currently selected directory service. The "
+"change will only take effect once you acknowledge the main configuration "
+"dialog."
+msgstr ""
+"Clique neste botão para remover o serviço de diretório atualmente "
+"selecionado. A alteração somente terá efeito quando você confirmá-la no "
+"diálogo de configuração principal."
+
+#. i18n: ectx: property (text), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:98
+#, kde-format
+msgid "Delete"
+msgstr "Excluir"
+
+#. i18n: ectx: property (whatsThis), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:128
+#, kde-format
+msgid ""
+"Use this option to switch display of username and password information on or "
+"off in the above table."
+msgstr ""
+"Use esta opção para exibir ou não as informações do nome do usuário e senha "
+"na tabela acima."
+
+#. i18n: ectx: property (text), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:131
+#, kde-format
+msgid "Show user and password information"
+msgstr "Mostrar informações do usuário e senha"
+
+#: ui/dnattributeorderconfigwidget.cpp:73
+#, kde-format
+msgid "Description"
+msgstr "Descrição"
+
+#: ui/dnattributeorderconfigwidget.cpp:91
+#, kde-format
+msgid "Available attributes:"
+msgstr "Atributos disponíveis:"
+
+#: ui/dnattributeorderconfigwidget.cpp:92
+#, kde-format
+msgid "Current attribute order:"
+msgstr "Ordem atual de atributos:"
+
+#: ui/dnattributeorderconfigwidget.cpp:112
+#, kde-format
+msgid "All others"
+msgstr "Todos os outros"
+
+#: ui/dnattributeorderconfigwidget.cpp:129
+#, kde-format
+msgid "Move to top"
+msgstr "Mover para o topo"
+
+#: ui/dnattributeorderconfigwidget.cpp:130
+#, kde-format
+msgid "Move one up"
+msgstr "Mover para cima"
+
+#: ui/dnattributeorderconfigwidget.cpp:131
+#, kde-format
+msgid "Remove from current attribute order"
+msgstr "Remover da ordem atual de atributos"
+
+#: ui/dnattributeorderconfigwidget.cpp:132
+#, kde-format
+msgid "Add to current attribute order"
+msgstr "Adicionar para a ordem atual de atributos"
+
+#: ui/dnattributeorderconfigwidget.cpp:133
+#, kde-format
+msgid "Move one down"
+msgstr "Mover para baixo"
+
+#: ui/dnattributeorderconfigwidget.cpp:134
+#, kde-format
+msgid "Move to bottom"
+msgstr "Mover para o inferior"
+
+#: ui/keyapprovaldialog.cpp:87
+#, kde-kuit-format
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>nenhum</placeholder>"
+
+#: ui/keyapprovaldialog.cpp:88
+#, kde-format
+msgid "Never Encrypt with This Key"
+msgstr "Nunca criptografar com esta chave"
+
+#: ui/keyapprovaldialog.cpp:89
+#, kde-format
+msgid "Always Encrypt with This Key"
+msgstr "Sempre criptografar com esta chave"
+
+#: ui/keyapprovaldialog.cpp:90
+#, kde-format
+msgid "Encrypt Whenever Encryption is Possible"
+msgstr "Criptografar sempre que possível"
+
+#: ui/keyapprovaldialog.cpp:91
+#, kde-format
+msgid "Always Ask"
+msgstr "Sempre perguntar"
+
+#: ui/keyapprovaldialog.cpp:92
+#, kde-format
+msgid "Ask Whenever Encryption is Possible"
+msgstr "Perguntar sempre que a criptografia seja possível"
+
+#: ui/keyapprovaldialog.cpp:113
+#, kde-format
+msgid "Encryption Key Approval"
+msgstr "Aprovação da chave de criptografia"
+
+#: ui/keyapprovaldialog.cpp:129
+#, kde-format
+msgid "The following keys will be used for encryption:"
+msgstr "As seguintes chaves serão usadas para criptografia:"
+
+#: ui/keyapprovaldialog.cpp:145
+#, kde-format
+msgid "Your keys:"
+msgstr "Suas chaves:"
+
+#: ui/keyapprovaldialog.cpp:157
+#, kde-format
+msgid "Recipient:"
+msgstr "Destinatário:"
+
+#: ui/keyapprovaldialog.cpp:162
+#, kde-format
+msgid "Encryption keys:"
+msgstr "Chaves de criptografia:"
+
+#: ui/keyapprovaldialog.cpp:169
+#, kde-format
+msgid "Encryption preference:"
+msgstr "Preferências da criptografia:"
+
+#: ui/keyrequester.cpp:118
+#, kde-format
+msgid "Clear"
+msgstr "Limpar"
+
+#: ui/keyrequester.cpp:121
+#, kde-format
+msgid "Change..."
+msgstr "Alterar..."
+
+#: ui/keyrequester.cpp:232 ui/keyselectiondialog.cpp:256
+#, kde-kuit-format
+msgid "<placeholder>unknown</placeholder>"
+msgstr "<placeholder>desconhecido</placeholder>"
+
+#: ui/keyrequester.cpp:246 ui/keyselectiondialog.cpp:657
+#, kde-format
+msgid ""
+"<qt><p>An error occurred while fetching the keys from the backend:</p><p><b>"
+"%1</b></p></qt>"
+msgstr ""
+"<qt><p>Ocorreu um erro ao obter as chaves da infraestrutura:</p><p><b>%1</"
+"b></p></qt>"
+
+#: ui/keyrequester.cpp:251 ui/keyrequester.cpp:283 ui/keyrequester.cpp:306
+#: ui/keyselectiondialog.cpp:630 ui/keyselectiondialog.cpp:662
+#, kde-format
+msgid "Key Listing Failed"
+msgstr "Falha na listagem das chaves"
+
+#: ui/keyrequester.cpp:281
+#, kde-format
+msgid ""
+"The OpenPGP backend does not support listing keys. Check your installation."
+msgstr ""
+"A infraestrutura do OpenPGP não suporta a listagem de chaves. Verifique a "
+"sua instalação."
+
+#: ui/keyrequester.cpp:304
+#, kde-format
+msgid ""
+"The S/MIME backend does not support listing keys. Check your installation."
+msgstr ""
+"A infraestrutura do S/MIME não suporta a listagem de chaves. Verifique a sua "
+"instalação."
+
+#: ui/keyrequester.cpp:426
+#, kde-format
+msgid "OpenPGP Key Selection"
+msgstr "Seleção da chave do OpenPGP"
+
+#: ui/keyrequester.cpp:427
+#, kde-format
+msgid "Please select an OpenPGP key to use."
+msgstr "Selecione uma chave do OpenPGP para usar."
+
+#: ui/keyrequester.cpp:429
+#, kde-format
+msgid "S/MIME Key Selection"
+msgstr "Seleção da chave S/MIME"
+
+#: ui/keyrequester.cpp:430
+#, kde-format
+msgid "Please select an S/MIME key to use."
+msgstr "Selecione uma chave S/MIME para usar."
+
+#: ui/keyrequester.cpp:432
+#, kde-format
+msgid "Key Selection"
+msgstr "Seleção da chave"
+
+#: ui/keyrequester.cpp:433
+#, kde-format
+msgid "Please select an (OpenPGP or S/MIME) key to use."
+msgstr "Selecione uma chave (OpenPGP ou S/MIME) para usar."
+
+#: ui/keyselectioncombo.cpp:195
+#, kde-format
+msgctxt "Name <email> (validity, type, created: date)"
+msgid "%1 (%2, %3, created: %4)"
+msgstr ""
+
+#: ui/keyselectioncombo.cpp:196
+#, kde-format
+msgctxt "Name <email>"
+msgid "%1 <%2>"
+msgstr ""
+
+#: ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "OpenPGP"
+msgstr "OpenPGP"
+
+#: ui/keyselectioncombo.cpp:347
+#, fuzzy, kde-format
+#| msgid "Fetching keys..."
+msgid "Loading keys ..."
+msgstr "Obtendo chaves..."
+
+#: ui/keyselectiondialog.cpp:98
+#, kde-format
+msgid "The key is not valid."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:106
+#, kde-format
+msgid "The key is expired."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:110
+#, kde-format
+msgid "The key is revoked."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:114
+#, kde-format
+msgid "The key is disabled."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:122
+#, fuzzy, kde-format
+#| msgid "The following keys will be used for encryption:"
+msgid "The key is not designated for encryption."
+msgstr "As seguintes chaves serão usadas para criptografia:"
+
+#: ui/keyselectiondialog.cpp:128
+#, kde-format
+msgid "The key is not designated for signing."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:134
+#, kde-format
+msgid "The key is not designated for certifying."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:140
+#, kde-format
+msgid "The key is not designated for authentication."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:148
+#, kde-format
+msgid "The key is not secret."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:163
+#, kde-format
+msgid "The key is not trusted enough."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:169
+#, kde-format
+msgid "The key can be used."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:230
+#, kde-format
+msgid "Key ID"
+msgstr "ID da chave"
+
+#: ui/keyselectiondialog.cpp:231
+#, kde-format
+msgid "User ID"
+msgstr "ID do usuário"
+
+#: ui/keyselectiondialog.cpp:279
+#, kde-format
+msgid "never"
+msgstr "nunca"
+
+#: ui/keyselectiondialog.cpp:289 ui/keyselectiondialog.cpp:291
+#: ui/keyselectiondialog.cpp:300 ui/keyselectiondialog.cpp:302
+#, kde-format
+msgid "unknown"
+msgstr "desconhecido"
+
+#: ui/keyselectiondialog.cpp:289
+#, kde-format
+msgid "OpenPGP key for <b>%1</b>"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:291
+#, kde-format
+msgid "S/MIME key for <b>%1</b>"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:298
+#, kde-format
+msgctxt "Key creation date"
+msgid "Created"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:299
+#, kde-format
+msgctxt "Key Expiration date"
+msgid "Expiry"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:300
+#, kde-format
+msgctxt "Key fingerprint"
+msgid "Fingerprint"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:302
+#, kde-format
+msgctxt "Key issuer"
+msgid "Issuer"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:304
+#, kde-format
+msgctxt "Key status"
+msgid "Status"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:456
+#, kde-format
+msgid "Search for &External Certificates"
+msgstr "Pesquisar por certificados &externos"
+
+#: ui/keyselectiondialog.cpp:470
+#, kde-format
+msgid "&Search for:"
+msgstr "Pe&squisar por:"
+
+#: ui/keyselectiondialog.cpp:494
+#, kde-format
+msgid "&Remember choice"
+msgstr "&Lembrar escolha"
+
+#: ui/keyselectiondialog.cpp:497
+#, kde-format
+msgid ""
+"<qt><p>If you check this box your choice will be stored and you will not be "
+"asked again.</p></qt>"
+msgstr ""
+"<qt><p>Se marcar esta opção, a escolha será armazenada e você não será "
+"questionado novamente.</p></qt>"
+
+#: ui/keyselectiondialog.cpp:509
+#, kde-format
+msgid "&Reread Keys"
+msgstr "&Ler as chaves novamente"
+
+#: ui/keyselectiondialog.cpp:510
+#, kde-format
+msgid "&Start Certificate Manager"
+msgstr "&Iniciar o gerenciador de certificados"
+
+#: ui/keyselectiondialog.cpp:628
+#, kde-format
+msgid "No backends found for listing keys. Check your installation."
+msgstr ""
+"Nenhuma infraestrutura encontrada para listagem de chaves. Verifique a sua "
+"instalação."
+
+#: ui/keyselectiondialog.cpp:644
+#, kde-format
+msgid "Could not start certificate manager; please check your installation."
+msgstr ""
+"Não foi possível iniciar o gerenciador de certificados. Verifique a sua "
+"instalação."
+
+#: ui/keyselectiondialog.cpp:646
+#, kde-format
+msgid "Certificate Manager Error"
+msgstr "Erro no gerenciador de certificados"
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Checking selected keys..."
+msgstr "Verificando chaves selecionadas..."
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Fetching keys..."
+msgstr "Obtendo chaves..."
+
+#: ui/keyselectiondialog.cpp:731
+#, kde-format
+msgid ""
+"<qt>One backend returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgid_plural ""
+"<qt>%1 backends returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgstr[0] ""
+"<qt>Uma infraestrutura retornou uma saída truncada.<p>Nem todas as chaves "
+"disponíveis são mostradas</p></qt>"
+msgstr[1] ""
+"<qt>%1 infraestruturas retornaram uma saída truncada.<p>Nem todas as chaves "
+"disponíveis são mostradas</p></qt>"
+
+#: ui/keyselectiondialog.cpp:736
+#, kde-format
+msgid "Key List Result"
+msgstr "Resultado da listagem de chaves"
+
+#: ui/keyselectiondialog.cpp:856
+#, kde-format
+msgid "Recheck Key"
+msgstr "Verificar a chave novamente"
+
+#: ui/messagebox.cpp:71
+#, kde-format
+msgid "Your system does not have support for GnuPG Audit Logs"
+msgstr "O seu sistema não tem suporte para registros de auditoria do GnuPG"
+
+#: ui/messagebox.cpp:72
+#, kde-format
+msgid "System Error"
+msgstr "Erro de sistema"
+
+#: ui/messagebox.cpp:79
+#, kde-format
+msgid ""
+"An error occurred while trying to retrieve the GnuPG Audit Log:\n"
+"%1"
+msgstr ""
+"Ocorreu um erro na tentativa de obter o log de auditoria do GnuPG:\n"
+"%1"
+
+#: ui/messagebox.cpp:81
+#, kde-format
+msgid "GnuPG Audit Log Error"
+msgstr "Erro no log de auditoria do GnuPG"
+
+#: ui/messagebox.cpp:88
+#, kde-format
+msgid "No GnuPG Audit Log available for this operation."
+msgstr "Não há registro de auditoria do GnuPG disponível para esta operação."
+
+#: ui/messagebox.cpp:89
+#, kde-format
+msgid "No GnuPG Audit Log"
+msgstr "Não há registro de auditoria do GnuPG"
+
+#: ui/messagebox.cpp:109 ui/messagebox.cpp:115
+#, kde-format
+msgid "GnuPG Audit Log Viewer"
+msgstr "Visualizador de registro de auditoria do GnuPG"
+
+#: ui/messagebox.cpp:121
+#, kde-format
+msgid "Signing failed: %1"
+msgstr "Falha ao assinar: %1"
+
+#: ui/messagebox.cpp:122
+#, kde-format
+msgid "Signing successful"
+msgstr "Assinatura concluída com sucesso"
+
+#: ui/messagebox.cpp:133
+#, kde-format
+msgid "Encryption failed: %1"
+msgstr "Falha na criptografia: %1"
+
+#: ui/messagebox.cpp:134
+#, kde-format
+msgid "Encryption successful"
+msgstr "Criptografia concluída com sucesso"
+
+#: ui/messagebox.cpp:155
+#, kde-format
+msgid "Signing Result"
+msgstr "Resultado da assinatura"
+
+#: ui/messagebox.cpp:167
+#, kde-format
+msgid "Signing Error"
+msgstr "Erro na assinatura"
+
+#: ui/messagebox.cpp:179 ui/messagebox.cpp:203
+#, kde-format
+msgid "Encryption Result"
+msgstr "Resultado da criptografia"
+
+#: ui/messagebox.cpp:191 ui/messagebox.cpp:215
+#, kde-format
+msgid "Encryption Error"
+msgstr "Erro na criptografia"
+
+#: ui/messagebox.cpp:263
+#, kde-format
+msgid "&Show Audit Log"
+msgstr "&Exibir log de auditoria"
+
+#: ui/progressdialog.cpp:91
+#, kde-format
+msgid "%1: %2"
+msgstr "%1: %2"
+
+#~ msgctxt "New X.509 Directory Server"
+#~ msgid "X.509"
+#~ msgstr "X.509"
+
+#~ msgctxt "New OpenPGP Directory Server"
+#~ msgid "OpenPGP"
+#~ msgstr "OpenPGP"
+
+#~ msgid "Scheme"
+#~ msgstr "Esquema"
+
+#~ msgid "X.509"
+#~ msgstr "X.509"
+
+#~ msgid ""
+#~ "Select the access scheme (scheme) that the directory service is available "
+#~ "through."
+#~ msgstr ""
+#~ "Selecione o esquema de acesso no qual o serviço de diretório está "
+#~ "disponível."
+
+#~ msgid ""
+#~ "Check this column if this directory service is providing S/MIME (X.509) "
+#~ "certificates."
+#~ msgstr ""
+#~ "Verifique nesta coluna se o serviço de diretório está fornecendo "
+#~ "certificados S/MIME (X.509)."
+
+#~ msgid ""
+#~ "Check this column if this directory service is providing OpenPGP "
+#~ "certificates."
+#~ msgstr ""
+#~ "Verifique nesta coluna se o serviço de diretório está fornecendo "
+#~ "certificados OpenPGP."
+
+#~ msgid "0 - None (no debugging at all)"
+#~ msgstr "0 - nenhum (sem depuração para todos)"
+
+#~ msgid "1 - Basic (some basic debug messages)"
+#~ msgstr "1 - básico (algumas mensagens básicas de depuração)"
+
+#~ msgid "2 - Advanced (more verbose debug messages)"
+#~ msgstr "2 - avançado (mais mensagens de depuração detalhadas)"
+
+#~ msgid "3 - Expert (even more detailed messages)"
+#~ msgstr "3 - especialista (ainda mais mensagens detalhadas)"
+
+#~ msgid "4 - Guru (all of the debug messages you can get)"
+#~ msgstr "4 - guru (todas as mensagens de depuração que você pode obter)"
+
+#~ msgid "General"
+#~ msgstr "Geral"
+
+#~ msgid "Chiasmus"
+#~ msgstr "Chiasmus"
+
+#~ msgid "Chiasmus command line tool"
+#~ msgstr "Ferramenta de linha de comando do Chiasmus"
+
+#~ msgid "Unsupported protocol \"%1\""
+#~ msgstr "Protocolo não suportado \"%1\""
+
+#~ msgid "File \"%1\" does not exist or is not executable."
+#~ msgstr "O arquivo \"%1\" não existe ou não é executável."
+
+#~ msgid "Output from chiasmus"
+#~ msgstr "Saída do chiasmus"
+
+#~ msgid "Decryption failed: %1"
+#~ msgstr "Falha na descriptografia: %1"
+
+#~ msgid ""
+#~ "The following was received on stderr:\n"
+#~ "%1"
+#~ msgstr ""
+#~ "O seguinte foi recebido no stderr:\n"
+#~ "%1"
+
+#~ msgid "Failed to load %1: %2"
+#~ msgstr "Falha ao carregar %1: %2"
+
+#~ msgid "Library does not contain the symbol \"Chiasmus\"."
+#~ msgstr "A biblioteca não contém o símbolo \"Chiasmus\"."
+
+#~ msgid "Scanning directory %1..."
+#~ msgstr "Procurando no diretório %1..."
+
+#~ msgid "GpgME"
+#~ msgstr "GpgME"
+
+#~ msgid "GPGME was compiled without support for %1."
+#~ msgstr "O GPGME foi compilado sem suporte a %1."
+
+#~ msgid "Engine %1 is not installed properly."
+#~ msgstr "O mecanismo %1 não foi instalado corretamente."
+
+#~ msgid "Engine %1 version %2 installed, but at least version %3 is required."
+#~ msgstr ""
+#~ "A versão %2 do mecanismo %1 está instalada, mas é necessário pelo menos a "
+#~ "versão %3."
+
+#~ msgid "Unknown problem with engine for protocol %1."
+#~ msgstr "Problema desconhecido com o mecanismo do protocolo %1."
+
+#~ msgid "program terminated unexpectedly"
+#~ msgstr "o programa terminou inesperadamente"
+
+#~ msgid "program not found or cannot be started"
+#~ msgstr "o programa não foi encontrado ou não foi iniciado"
+
+#~ msgid "<qt>Failed to execute gpgconf:<p>%1</p></qt>"
+#~ msgstr "<qt>Falha ao executar o gpgconf:<p>%1</p></qt>"
+
+#~ msgid ""
+#~ "Could not start gpgconf.\n"
+#~ "Check that gpgconf is in the PATH and that it can be started."
+#~ msgstr ""
+#~ "Não foi possível iniciar o gpgconf.\n"
+#~ "Verifique se o gpgconf está no PATH e que ele pode ser iniciado."
+
+#~ msgid "Error from gpgconf while saving configuration: %1"
+#~ msgstr "Erro do gpgconf ao salvar a configuração: %1"
+
+#~ msgid "Generating DSA key..."
+#~ msgstr "Gerando a chave DSA..."
+
+#~ msgid "Generating ElGamal key..."
+#~ msgstr "Gerando a chave ElGamal..."
+
+#~ msgid "Searching for a large prime number..."
+#~ msgstr "Pesquisando por um número primo grande..."
+
+#~ msgid ""
+#~ "Waiting for new entropy from random number generator (you might want to "
+#~ "exercise the harddisks or move the mouse)..."
+#~ msgstr ""
+#~ "Aguardando por uma nova entropia do gerador de números aleatórios (você "
+#~ "pode querer exercitar os discos rígidos ou mover o mouse)..."
+
+#~ msgid "Please wait..."
+#~ msgstr "Por favor, aguarde..."
+
+#~ msgid ""
+#~ "Starting gpg-agent (you should consider starting a global instance "
+#~ "instead)..."
+#~ msgstr ""
+#~ "Iniciando o gpg-agent (você deve considerar iniciar uma instância global "
+#~ "em vez disto)..."
+
+#~ msgid "While scanning for %1 support in backend %2:"
+#~ msgstr "Enquanto procura por suporte ao %1 na infraestrutura %2:"
+
+#~ msgctxt "progress info: \"%1 of %2\""
+#~ msgid "%1/%2"
+#~ msgstr "%1/%2"
+
+#~ msgid ""
+#~ "OpenPGP key for %1\n"
+#~ "Created: %2\n"
+#~ "Expiry: %3\n"
+#~ "Fingerprint: %4"
+#~ msgstr ""
+#~ "Chave OpenPGP de %1\n"
+#~ "Criada em: %2\n"
+#~ "Vencimento: %3\n"
+#~ "Impressão digital: %4"
+
+#~ msgid ""
+#~ "S/MIME key for %1\n"
+#~ "Created: %2\n"
+#~ "Expiry: %3\n"
+#~ "Fingerprint: %4\n"
+#~ "Issuer: %5"
+#~ msgstr ""
+#~ "Chave S/MIME para %1\n"
+#~ "Criada: %2\n"
+#~ "Vencimento: %3\n"
+#~ "Impressão digital: %4\n"
+#~ "Emitida por: %5"
+
+#~ msgid "Copy Audit Log to Clipboard"
+#~ msgstr "Copiar registro de auditoria para área de transferência"
--- /dev/null
+# translation of libkleopatra.po to Romanian
+# Claudiu Costin <claudiuc@kde.org>, 2004.
+# Sergiu Bivol <sergiu@ase.md>, 2008, 2009, 2012, 2013.
+msgid ""
+msgstr ""
+"Project-Id-Version: libkleopatra\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2017-07-12 06:56+0200\n"
+"PO-Revision-Date: 2013-02-16 10:55+0200\n"
+"Last-Translator: Sergiu Bivol <sergiu@ase.md>\n"
+"Language-Team: Romanian <kde-i18n-ro@kde.org>\n"
+"Language: ro\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Lokalize 1.5\n"
+"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < "
+"20)) ? 1 : 2;\n"
+
+#: kleo/checksumdefinition.cpp:107
+#, kde-format
+msgid "Error in checksum definition %1: %2"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:157
+#, kde-format
+msgid "Cannot use both %f and | in '%1'"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:167
+#, kde-format
+msgid "Quoting error in '%1' entry"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:170
+#, kde-format
+msgid "'%1' too complex (would need shell)"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:174
+#, kde-format
+msgid "'%1' entry is empty/missing"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:183
+#, kde-format
+msgid "'%1' empty or not found"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:222
+#, kde-format
+msgid "'id' entry is empty/missing"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:225
+#, kde-format
+msgid "'output-file' entry is empty/missing"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:228
+#, kde-format
+msgid "'file-patterns' entry is empty/missing"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:395
+#, kde-format
+msgid "Caught unknown exception in group %1"
+msgstr ""
+
+#: kleo/dn.cpp:507
+#, kde-format
+msgid "Common name"
+msgstr ""
+
+#: kleo/dn.cpp:508
+#, kde-format
+msgid "Surname"
+msgstr "Nume"
+
+#: kleo/dn.cpp:509
+#, kde-format
+msgid "Given name"
+msgstr ""
+
+#: kleo/dn.cpp:510
+#, kde-format
+msgid "Location"
+msgstr "Amplasare"
+
+#: kleo/dn.cpp:511
+#, kde-format
+msgid "Title"
+msgstr "Funcție"
+
+#: kleo/dn.cpp:512
+#, kde-format
+msgid "Organizational unit"
+msgstr "Unitate organizațională"
+
+#: kleo/dn.cpp:513
+#, kde-format
+msgid "Organization"
+msgstr "Organizație"
+
+#: kleo/dn.cpp:514
+#, kde-format
+msgid "Postal code"
+msgstr "Cod poștal"
+
+#: kleo/dn.cpp:515
+#, kde-format
+msgid "Country code"
+msgstr "Codul țării"
+
+#: kleo/dn.cpp:516
+#, kde-format
+msgid "State or province"
+msgstr "Stat sau provincie"
+
+#: kleo/dn.cpp:517
+#, kde-format
+msgid "Domain component"
+msgstr ""
+
+#: kleo/dn.cpp:518
+#, kde-format
+msgid "Business category"
+msgstr ""
+
+#: kleo/dn.cpp:519
+#, kde-format
+msgid "Email address"
+msgstr ""
+
+#: kleo/dn.cpp:520
+#, kde-format
+msgid "Mail address"
+msgstr ""
+
+#: kleo/dn.cpp:521
+#, kde-format
+msgid "Mobile phone number"
+msgstr ""
+
+#: kleo/dn.cpp:522
+#, kde-format
+msgid "Telephone number"
+msgstr ""
+
+#: kleo/dn.cpp:523
+#, kde-format
+msgid "Fax number"
+msgstr ""
+
+#: kleo/dn.cpp:524
+#, kde-format
+msgid "Street address"
+msgstr ""
+
+#: kleo/dn.cpp:525
+#, kde-format
+msgid "Unique ID"
+msgstr ""
+
+#: kleo/enum.cpp:57
+#, kde-format
+msgid "Inline OpenPGP (deprecated)"
+msgstr ""
+
+#: kleo/enum.cpp:62
+#, kde-format
+msgid "OpenPGP/MIME"
+msgstr "OpenPGP/MIME"
+
+#: kleo/enum.cpp:67 ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "S/MIME"
+msgstr "S/MIME"
+
+#: kleo/enum.cpp:72
+#, kde-format
+msgid "S/MIME Opaque"
+msgstr ""
+
+#: kleo/enum.cpp:104
+#, kde-format
+msgid "Any"
+msgstr "Oricare"
+
+#: kleo/enum.cpp:177
+#, kde-format
+msgid "Never Encrypt"
+msgstr "Nu cripta niciodată"
+
+#: kleo/enum.cpp:179
+#, kde-format
+msgid "Always Encrypt"
+msgstr "Criptează întotdeauna"
+
+#: kleo/enum.cpp:181
+#, kde-format
+msgid "Always Encrypt If Possible"
+msgstr "Criptează întotdeauna dacă se poate"
+
+#: kleo/enum.cpp:183 kleo/enum.cpp:240
+#, kde-format
+msgid "Ask"
+msgstr "Întreabă"
+
+#: kleo/enum.cpp:185 kleo/enum.cpp:242
+#, kde-format
+msgid "Ask Whenever Possible"
+msgstr "Întreabă oricând se poate"
+
+#: kleo/enum.cpp:187
+#, kde-kuit-format
+msgctxt "no specific preference"
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>niciuna</placeholder>"
+
+#: kleo/enum.cpp:234
+#, kde-format
+msgid "Never Sign"
+msgstr "Nu semna niciodată"
+
+#: kleo/enum.cpp:236
+#, kde-format
+msgid "Always Sign"
+msgstr "Semnează întotdeauna"
+
+#: kleo/enum.cpp:238
+#, kde-format
+msgid "Always Sign If Possible"
+msgstr "Semnează întotdeauna dacă se poate"
+
+#: kleo/enum.cpp:244
+#, kde-format
+msgctxt "no specific preference"
+msgid "<none>"
+msgstr "<niciuna>"
+
+#: kleo/keyfiltermanager.cpp:85
+#, kde-format
+msgid "All Certificates"
+msgstr "Toate certificatele"
+
+#: kleo/keyfiltermanager.cpp:100
+#, kde-format
+msgid "My Certificates"
+msgstr "Certificatele mele"
+
+#: kleo/keyfiltermanager.cpp:118
+#, kde-format
+msgid "Trusted Certificates"
+msgstr "Certificate de încredere"
+
+#: kleo/keyfiltermanager.cpp:135
+#, fuzzy, kde-format
+#| msgid "Trusted Certificates"
+msgid "Fully Trusted Certificates"
+msgstr "Certificate de încredere"
+
+#: kleo/keyfiltermanager.cpp:152
+#, kde-format
+msgid "Other Certificates"
+msgstr "Alte certificate"
+
+#: kleo/keyfiltermanager.cpp:166
+#, fuzzy, kde-format
+#| msgid "All Certificates"
+msgid "VS-compliant Certificates"
+msgstr "Toate certificatele"
+
+#: kleo/keyfiltermanager.cpp:184
+#, fuzzy, kde-format
+#| msgid "Trusted Certificates"
+msgid "Not validated Certificates"
+msgstr "Certificate de încredere"
+
+#: ui/auditlogviewer.cpp:49
+#, kde-format
+msgid "View GnuPG Audit Log"
+msgstr ""
+
+#: ui/auditlogviewer.cpp:53
+#, kde-format
+msgid "&Copy to Clipboard"
+msgstr "&Copiază în clipboard"
+
+#: ui/auditlogviewer.cpp:59
+#, kde-format
+msgid "&Save to Disk..."
+msgstr "&Salvare pe disc..."
+
+#: ui/auditlogviewer.cpp:95
+#, kde-format
+msgid "Choose File to Save GnuPG Audit Log to"
+msgstr ""
+
+#: ui/auditlogviewer.cpp:118
+#, kde-format
+msgid "Could not save to file \"%1\": %2"
+msgstr ""
+
+#: ui/auditlogviewer.cpp:120
+#, kde-format
+msgid "File Save Error"
+msgstr ""
+
+#: ui/cryptoconfigdialog.cpp:44
+#, kde-format
+msgid "Configure GnuPG Backend"
+msgstr ""
+
+#: ui/cryptoconfigdialog.cpp:55
+#, kde-format
+msgid "&Reset"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:160
+#, kde-format
+msgid "GpgConf Error"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:216
+#, kde-format
+msgid ""
+"The gpgconf tool used to provide the information for this dialog does not "
+"seem to be installed properly. It did not return any components. Try running "
+"\"%1\" on the command line for more information."
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:496
+#, kde-format
+msgctxt ""
+"Translate this to 'yes' or 'no' (use the English words!) depending on "
+"whether your language uses Sentence style capitalisation in GUI labels (yes) "
+"or not (no). Context: We get some backend strings in that have the wrong "
+"capitalizaion (in English, at least) so we need to force the first character "
+"to upper-case. It is this behaviour you can control for your language with "
+"this translation."
+msgid "yes"
+msgstr "yes"
+
+#: ui/cryptoconfigmodule.cpp:546
+#, kde-format
+msgid "0 - None"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:547
+#, kde-format
+msgid "1 - Basic"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:548
+#, kde-format
+msgid "2 - Verbose"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:549
+#, kde-format
+msgid "3 - More Verbose"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:550
+#, kde-format
+msgid "4 - All"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:559
+#, kde-format
+msgid "Set the debugging level to"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:787
+#, kde-format
+msgid "Show..."
+msgstr "Arată..."
+
+#: ui/cryptoconfigmodule.cpp:787 ui/cryptoconfigmodule.cpp:876
+#, kde-format
+msgid "Edit..."
+msgstr "Modificare..."
+
+#: ui/cryptoconfigmodule.cpp:841
+#, kde-format
+msgid "Configure LDAP Servers"
+msgstr "Configurare servere LDAP"
+
+#: ui/cryptoconfigmodule.cpp:862
+#, fuzzy, kde-format
+#| msgid "No server configured yet"
+msgid "None configured"
+msgstr "Niciun server configurat deocamdată"
+
+#: ui/cryptoconfigmodule.cpp:864
+#, kde-format
+msgid "1 server configured"
+msgid_plural "%1 servers configured"
+msgstr[0] "1 server configurat"
+msgstr[1] "%1 servere configurate"
+msgstr[2] "%1 de servere configurate"
+
+#: ui/cryptoconfigmodule.cpp:879
+#, kde-format
+msgid "Use keyserver at"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:968
+#, kde-format
+msgid "Configure Keyservers"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:67
+#, kde-format
+msgctxt "default server name, keep it a valid domain name, ie. no spaces"
+msgid "server"
+msgstr "server"
+
+#: ui/directoryserviceswidget.cpp:95
+#, kde-format
+msgid "hkp"
+msgstr "hkp"
+
+#: ui/directoryserviceswidget.cpp:96
+#, kde-format
+msgid "http"
+msgstr "http"
+
+#: ui/directoryserviceswidget.cpp:97
+#, kde-format
+msgid "https"
+msgstr "https"
+
+#: ui/directoryserviceswidget.cpp:98
+#, kde-format
+msgid "ftp"
+msgstr "ftp"
+
+#: ui/directoryserviceswidget.cpp:99
+#, kde-format
+msgid "ftps"
+msgstr "ftps"
+
+#: ui/directoryserviceswidget.cpp:100
+#, kde-format
+msgid "ldap"
+msgstr "ldap"
+
+#: ui/directoryserviceswidget.cpp:101
+#, kde-format
+msgid "ldaps"
+msgstr "ldaps"
+
+#: ui/directoryserviceswidget.cpp:588
+#, kde-format
+msgid "Server Name"
+msgstr "Nume server"
+
+#: ui/directoryserviceswidget.cpp:589
+#, kde-format
+msgid "Server Port"
+msgstr "Port server"
+
+#: ui/directoryserviceswidget.cpp:590
+#, kde-format
+msgid "Base DN"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:591
+#, kde-format
+msgid "User Name"
+msgstr "Nume utilizator"
+
+#: ui/directoryserviceswidget.cpp:592
+#, kde-format
+msgid "Password"
+msgstr "Parolă"
+
+#: ui/directoryserviceswidget.cpp:614
+#, kde-format
+msgid "(read-only)"
+msgstr "(numai citire)"
+
+#: ui/directoryserviceswidget.cpp:616
+#, kde-format
+msgctxt "amended tooltip; %1: original tooltip"
+msgid "%1 (read-only)"
+msgstr "%1 (numai citire)"
+
+#: ui/directoryserviceswidget.cpp:739
+#, kde-format
+msgid ""
+"Enter the name or IP address of the server hosting the directory service."
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:741
+#, kde-format
+msgid ""
+"<b>(Optional, the default is fine in most cases)</b> Pick the port number "
+"the directory service is listening on."
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:744
+#, kde-format
+msgid ""
+"<b>(Only for LDAP)</b> Enter the base DN for this LDAP server to limit "
+"searches to only that subtree of the directory."
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:747
+#, kde-format
+msgid "<b>(Optional)</b> Enter your user name here, if needed."
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:749
+#, kde-format
+msgid ""
+"<b>(Optional, not recommended)</b> Enter your password here, if needed. Note "
+"that the password will be saved in the clear in a config file in your home "
+"directory."
+msgstr ""
+
+#. i18n: ectx: property (windowTitle), widget (QWidget, DirectoryServicesWidget)
+#: ui/directoryserviceswidget.ui:14
+#, kde-format
+msgid "Directory Services Configuration"
+msgstr ""
+
+#. i18n: ectx: property (text), widget (QLabel, pgpKSLabel)
+#: ui/directoryserviceswidget.ui:22
+#, kde-format
+msgid "OpenPGP Keyserver:"
+msgstr ""
+
+#. i18n: ectx: property (title), widget (QGroupBox, x500LA)
+#: ui/directoryserviceswidget.ui:35
+#, kde-format
+msgid "X509 Directory services:"
+msgstr ""
+
+#. i18n: ectx: property (whatsThis), widget (QTreeView, treeView)
+#: ui/directoryserviceswidget.ui:43
+#, kde-format
+msgid ""
+"This is a list of all directory services that are configured for use with "
+"X.509."
+msgstr ""
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:70
+#, kde-format
+msgid "Click to add a service"
+msgstr "Faceți clic pentru a adăuga un serviciu"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:73
+#, kde-format
+msgid ""
+"Click this button to create a new directory service entry as a clone of the "
+"currently selected one (or with default values, if no other is selected). "
+"You can then configure details in the table on the left hand."
+msgstr ""
+
+#. i18n: ectx: property (text), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:76
+#, kde-format
+msgid "New"
+msgstr "Nou"
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:92
+#, kde-format
+msgid "Click to remove the currently selected service"
+msgstr ""
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:95
+#, kde-format
+msgid ""
+"Click this button to remove the currently selected directory service. The "
+"change will only take effect once you acknowledge the main configuration "
+"dialog."
+msgstr ""
+
+#. i18n: ectx: property (text), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:98
+#, kde-format
+msgid "Delete"
+msgstr "Șterge"
+
+#. i18n: ectx: property (whatsThis), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:128
+#, kde-format
+msgid ""
+"Use this option to switch display of username and password information on or "
+"off in the above table."
+msgstr ""
+
+#. i18n: ectx: property (text), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:131
+#, kde-format
+msgid "Show user and password information"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:73
+#, kde-format
+msgid "Description"
+msgstr "Descriere"
+
+#: ui/dnattributeorderconfigwidget.cpp:91
+#, kde-format
+msgid "Available attributes:"
+msgstr "Atribute disponibile:"
+
+#: ui/dnattributeorderconfigwidget.cpp:92
+#, kde-format
+msgid "Current attribute order:"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:112
+#, kde-format
+msgid "All others"
+msgstr "Toate celelalte"
+
+#: ui/dnattributeorderconfigwidget.cpp:129
+#, kde-format
+msgid "Move to top"
+msgstr "Mută în vârf"
+
+#: ui/dnattributeorderconfigwidget.cpp:130
+#, kde-format
+msgid "Move one up"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:131
+#, kde-format
+msgid "Remove from current attribute order"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:132
+#, kde-format
+msgid "Add to current attribute order"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:133
+#, kde-format
+msgid "Move one down"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:134
+#, kde-format
+msgid "Move to bottom"
+msgstr ""
+
+#: ui/keyapprovaldialog.cpp:87
+#, fuzzy, kde-kuit-format
+#| msgctxt "no specific preference"
+#| msgid "<placeholder>none</placeholder>"
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>niciuna</placeholder>"
+
+#: ui/keyapprovaldialog.cpp:88
+#, kde-format
+msgid "Never Encrypt with This Key"
+msgstr "Nu cripta niciodată cu această cheie"
+
+#: ui/keyapprovaldialog.cpp:89
+#, kde-format
+msgid "Always Encrypt with This Key"
+msgstr "Criptează întotdeauna cu această cheie"
+
+#: ui/keyapprovaldialog.cpp:90
+#, kde-format
+msgid "Encrypt Whenever Encryption is Possible"
+msgstr ""
+
+#: ui/keyapprovaldialog.cpp:91
+#, kde-format
+msgid "Always Ask"
+msgstr "Întreabă întotdeauna"
+
+#: ui/keyapprovaldialog.cpp:92
+#, kde-format
+msgid "Ask Whenever Encryption is Possible"
+msgstr ""
+
+#: ui/keyapprovaldialog.cpp:113
+#, kde-format
+msgid "Encryption Key Approval"
+msgstr ""
+
+#: ui/keyapprovaldialog.cpp:129
+#, kde-format
+msgid "The following keys will be used for encryption:"
+msgstr ""
+
+#: ui/keyapprovaldialog.cpp:145
+#, kde-format
+msgid "Your keys:"
+msgstr "Cheile dumneavoastră:"
+
+#: ui/keyapprovaldialog.cpp:157
+#, kde-format
+msgid "Recipient:"
+msgstr "Destinatar:"
+
+#: ui/keyapprovaldialog.cpp:162
+#, kde-format
+msgid "Encryption keys:"
+msgstr "Chei de criptare:"
+
+#: ui/keyapprovaldialog.cpp:169
+#, kde-format
+msgid "Encryption preference:"
+msgstr "Preferință criptare:"
+
+#: ui/keyrequester.cpp:118
+#, kde-format
+msgid "Clear"
+msgstr "Curăță"
+
+#: ui/keyrequester.cpp:121
+#, kde-format
+msgid "Change..."
+msgstr "Modifică..."
+
+#: ui/keyrequester.cpp:232 ui/keyselectiondialog.cpp:256
+#, kde-kuit-format
+msgid "<placeholder>unknown</placeholder>"
+msgstr "<placeholder>necunoscut</placeholder>"
+
+#: ui/keyrequester.cpp:246 ui/keyselectiondialog.cpp:657
+#, kde-format
+msgid ""
+"<qt><p>An error occurred while fetching the keys from the backend:</p><p><b>"
+"%1</b></p></qt>"
+msgstr ""
+
+#: ui/keyrequester.cpp:251 ui/keyrequester.cpp:283 ui/keyrequester.cpp:306
+#: ui/keyselectiondialog.cpp:630 ui/keyselectiondialog.cpp:662
+#, kde-format
+msgid "Key Listing Failed"
+msgstr "Enumerarea cheilor a eșuat"
+
+#: ui/keyrequester.cpp:281
+#, kde-format
+msgid ""
+"The OpenPGP backend does not support listing keys. Check your installation."
+msgstr ""
+
+#: ui/keyrequester.cpp:304
+#, kde-format
+msgid ""
+"The S/MIME backend does not support listing keys. Check your installation."
+msgstr ""
+
+#: ui/keyrequester.cpp:426
+#, kde-format
+msgid "OpenPGP Key Selection"
+msgstr ""
+
+#: ui/keyrequester.cpp:427
+#, kde-format
+msgid "Please select an OpenPGP key to use."
+msgstr ""
+
+#: ui/keyrequester.cpp:429
+#, kde-format
+msgid "S/MIME Key Selection"
+msgstr ""
+
+#: ui/keyrequester.cpp:430
+#, kde-format
+msgid "Please select an S/MIME key to use."
+msgstr ""
+
+#: ui/keyrequester.cpp:432
+#, kde-format
+msgid "Key Selection"
+msgstr ""
+
+#: ui/keyrequester.cpp:433
+#, kde-format
+msgid "Please select an (OpenPGP or S/MIME) key to use."
+msgstr "Alegeți o cheie OpenPGP sau S/MIME de utilizat."
+
+#: ui/keyselectioncombo.cpp:195
+#, kde-format
+msgctxt "Name <email> (validity, type, created: date)"
+msgid "%1 (%2, %3, created: %4)"
+msgstr ""
+
+#: ui/keyselectioncombo.cpp:196
+#, kde-format
+msgctxt "Name <email>"
+msgid "%1 <%2>"
+msgstr ""
+
+#: ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "OpenPGP"
+msgstr "OpenPGP"
+
+#: ui/keyselectioncombo.cpp:347
+#, kde-format
+msgid "Loading keys ..."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:98
+#, kde-format
+msgid "The key is not valid."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:106
+#, kde-format
+msgid "The key is expired."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:110
+#, kde-format
+msgid "The key is revoked."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:114
+#, kde-format
+msgid "The key is disabled."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:122
+#, kde-format
+msgid "The key is not designated for encryption."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:128
+#, kde-format
+msgid "The key is not designated for signing."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:134
+#, kde-format
+msgid "The key is not designated for certifying."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:140
+#, kde-format
+msgid "The key is not designated for authentication."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:148
+#, kde-format
+msgid "The key is not secret."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:163
+#, kde-format
+msgid "The key is not trusted enough."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:169
+#, kde-format
+msgid "The key can be used."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:230
+#, kde-format
+msgid "Key ID"
+msgstr "ID cheie"
+
+#: ui/keyselectiondialog.cpp:231
+#, kde-format
+msgid "User ID"
+msgstr "ID utilizator"
+
+#: ui/keyselectiondialog.cpp:279
+#, kde-format
+msgid "never"
+msgstr "niciodată"
+
+#: ui/keyselectiondialog.cpp:289 ui/keyselectiondialog.cpp:291
+#: ui/keyselectiondialog.cpp:300 ui/keyselectiondialog.cpp:302
+#, kde-format
+msgid "unknown"
+msgstr "necunoscut"
+
+#: ui/keyselectiondialog.cpp:289
+#, kde-format
+msgid "OpenPGP key for <b>%1</b>"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:291
+#, kde-format
+msgid "S/MIME key for <b>%1</b>"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:298
+#, kde-format
+msgctxt "Key creation date"
+msgid "Created"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:299
+#, kde-format
+msgctxt "Key Expiration date"
+msgid "Expiry"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:300
+#, kde-format
+msgctxt "Key fingerprint"
+msgid "Fingerprint"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:302
+#, kde-format
+msgctxt "Key issuer"
+msgid "Issuer"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:304
+#, kde-format
+msgctxt "Key status"
+msgid "Status"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:456
+#, kde-format
+msgid "Search for &External Certificates"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:470
+#, kde-format
+msgid "&Search for:"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:494
+#, kde-format
+msgid "&Remember choice"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:497
+#, kde-format
+msgid ""
+"<qt><p>If you check this box your choice will be stored and you will not be "
+"asked again.</p></qt>"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:509
+#, kde-format
+msgid "&Reread Keys"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:510
+#, kde-format
+msgid "&Start Certificate Manager"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:628
+#, kde-format
+msgid "No backends found for listing keys. Check your installation."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:644
+#, kde-format
+msgid "Could not start certificate manager; please check your installation."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:646
+#, kde-format
+msgid "Certificate Manager Error"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Checking selected keys..."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Fetching keys..."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:731
+#, kde-format
+msgid ""
+"<qt>One backend returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgid_plural ""
+"<qt>%1 backends returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#: ui/keyselectiondialog.cpp:736
+#, kde-format
+msgid "Key List Result"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:856
+#, kde-format
+msgid "Recheck Key"
+msgstr ""
+
+#: ui/messagebox.cpp:71
+#, kde-format
+msgid "Your system does not have support for GnuPG Audit Logs"
+msgstr ""
+
+#: ui/messagebox.cpp:72
+#, kde-format
+msgid "System Error"
+msgstr ""
+
+#: ui/messagebox.cpp:79
+#, kde-format
+msgid ""
+"An error occurred while trying to retrieve the GnuPG Audit Log:\n"
+"%1"
+msgstr ""
+
+#: ui/messagebox.cpp:81
+#, kde-format
+msgid "GnuPG Audit Log Error"
+msgstr ""
+
+#: ui/messagebox.cpp:88
+#, kde-format
+msgid "No GnuPG Audit Log available for this operation."
+msgstr ""
+
+#: ui/messagebox.cpp:89
+#, kde-format
+msgid "No GnuPG Audit Log"
+msgstr ""
+
+#: ui/messagebox.cpp:109 ui/messagebox.cpp:115
+#, kde-format
+msgid "GnuPG Audit Log Viewer"
+msgstr ""
+
+#: ui/messagebox.cpp:121
+#, kde-format
+msgid "Signing failed: %1"
+msgstr ""
+
+#: ui/messagebox.cpp:122
+#, kde-format
+msgid "Signing successful"
+msgstr ""
+
+#: ui/messagebox.cpp:133
+#, kde-format
+msgid "Encryption failed: %1"
+msgstr "Criptarea a eșuat: %1"
+
+#: ui/messagebox.cpp:134
+#, kde-format
+msgid "Encryption successful"
+msgstr ""
+
+#: ui/messagebox.cpp:155
+#, kde-format
+msgid "Signing Result"
+msgstr ""
+
+#: ui/messagebox.cpp:167
+#, kde-format
+msgid "Signing Error"
+msgstr ""
+
+#: ui/messagebox.cpp:179 ui/messagebox.cpp:203
+#, kde-format
+msgid "Encryption Result"
+msgstr ""
+
+#: ui/messagebox.cpp:191 ui/messagebox.cpp:215
+#, kde-format
+msgid "Encryption Error"
+msgstr ""
+
+#: ui/messagebox.cpp:263
+#, kde-format
+msgid "&Show Audit Log"
+msgstr ""
+
+#: ui/progressdialog.cpp:91
+#, kde-format
+msgid "%1: %2"
+msgstr ""
+
+#~ msgctxt "New X.509 Directory Server"
+#~ msgid "X.509"
+#~ msgstr "X.509"
+
+#~ msgctxt "New OpenPGP Directory Server"
+#~ msgid "OpenPGP"
+#~ msgstr "OpenPGP"
+
+#~ msgid "X.509"
+#~ msgstr "X.509"
+
+#~ msgid "General"
+#~ msgstr "General"
+
+#~ msgid "Chiasmus"
+#~ msgstr "Chiasmus"
+
+#~ msgid "Decryption failed: %1"
+#~ msgstr "Decriptarea a eșuat: %1"
+
+#~ msgid "GpgME"
+#~ msgstr "GpgME"
+
+#~ msgid "Generating DSA key..."
+#~ msgstr "Se generează cheia DSA..."
+
+#~ msgid "Generating ElGamal key..."
+#~ msgstr "Se generează cheia ElGamal..."
+
+#~ msgid "Searching for a large prime number..."
+#~ msgstr "Se caută un număr prim mare...."
+
+#~ msgid "Please wait..."
+#~ msgstr "Așteptați..."
+
+#~ msgctxt "progress info: \"%1 of %2\""
+#~ msgid "%1/%2"
+#~ msgstr "%1/%2"
+
+#~ msgid "&Server name:"
+#~ msgstr "Nume &server:"
+
+#~ msgid "389"
+#~ msgstr "389"
+
+#~ msgid "&User name (optional):"
+#~ msgstr "&Utilizator (opționa):"
+
+#~ msgid "Pass&word (optional):"
+#~ msgstr "&Parolă (opțional):"
+
+#~ msgid "&OK"
+#~ msgstr "&OK"
+
+#~ msgid "&Cancel"
+#~ msgstr "&Renunță"
+
+#~ msgid "&Port:"
+#~ msgstr "&Port:"
+
+#~ msgctxt "NAME OF TRANSLATORS"
+#~ msgid "Your names"
+#~ msgstr "Sergiu Bivol"
+
+#~ msgctxt "EMAIL OF TRANSLATORS"
+#~ msgid "Your emails"
+#~ msgstr "sergiu@ase.md"
--- /dev/null
+# translation of libkleopatra.po to Russian
+# Copyright (c) 2004, KDE Team.
+# Oleg Batalov <olegbatalov@mail.ru>, 2004.
+# Gregory Mokhin <mok@kde.ru>, 2004.
+# Nick Shaforostoff <shaforostoff@kde.ru>, 2008.
+# Andrey Cherepanov <skull@kde.ru>, 2005, 2009.
+# Alexander Potashev <aspotashev@gmail.com>, 2010, 2011, 2015, 2017.
+# Julia Dronova <juliette.tux@gmail.com>, 2012.
+# Alexander Lakhin <exclusion@gmail.com>, 2013.
+msgid ""
+msgstr ""
+"Project-Id-Version: libkleopatra\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2017-07-12 06:56+0200\n"
+"PO-Revision-Date: 2017-10-08 21:42+0300\n"
+"Last-Translator: Alexander Potashev <aspotashev@gmail.com>\n"
+"Language-Team: Russian <kde-russian@lists.kde.ru>\n"
+"Language: ru\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Lokalize 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"
+
+#: kleo/checksumdefinition.cpp:107
+#, kde-format
+msgid "Error in checksum definition %1: %2"
+msgstr "Ошибка в определении контрольной суммы %1: %2"
+
+#: kleo/checksumdefinition.cpp:157
+#, kde-format
+msgid "Cannot use both %f and | in '%1'"
+msgstr "Использовать и %f, и | в команде «%1» нельзя"
+
+#: kleo/checksumdefinition.cpp:167
+#, kde-format
+msgid "Quoting error in '%1' entry"
+msgstr "Ошибка цитирования в записи «%1»"
+
+#: kleo/checksumdefinition.cpp:170
+#, kde-format
+msgid "'%1' too complex (would need shell)"
+msgstr "Команда «%1» слишком сложна (потребуется оболочка)"
+
+#: kleo/checksumdefinition.cpp:174
+#, kde-format
+msgid "'%1' entry is empty/missing"
+msgstr "Запись «%1» пуста/отсутствует"
+
+#: kleo/checksumdefinition.cpp:183
+#, kde-format
+msgid "'%1' empty or not found"
+msgstr "«%1» пуст или отсутствует"
+
+#: kleo/checksumdefinition.cpp:222
+#, kde-format
+msgid "'id' entry is empty/missing"
+msgstr "Запись «id» пуста/отсутствует"
+
+#: kleo/checksumdefinition.cpp:225
+#, kde-format
+msgid "'output-file' entry is empty/missing"
+msgstr "Запись «output-file» пуста/отсутствует"
+
+#: kleo/checksumdefinition.cpp:228
+#, kde-format
+msgid "'file-patterns' entry is empty/missing"
+msgstr "Запись «file-patterns» пуста/отсутствует"
+
+#: kleo/checksumdefinition.cpp:395
+#, kde-format
+msgid "Caught unknown exception in group %1"
+msgstr "Обнаружено неизвестное исключение в группе %1"
+
+#: kleo/dn.cpp:507
+#, kde-format
+msgid "Common name"
+msgstr "Ф.И.О."
+
+#: kleo/dn.cpp:508
+#, kde-format
+msgid "Surname"
+msgstr "Фамилия"
+
+#: kleo/dn.cpp:509
+#, kde-format
+msgid "Given name"
+msgstr "Имя"
+
+#: kleo/dn.cpp:510
+#, kde-format
+msgid "Location"
+msgstr "Расположение"
+
+#: kleo/dn.cpp:511
+#, kde-format
+msgid "Title"
+msgstr "Должность"
+
+#: kleo/dn.cpp:512
+#, kde-format
+msgid "Organizational unit"
+msgstr "Отдел"
+
+#: kleo/dn.cpp:513
+#, kde-format
+msgid "Organization"
+msgstr "Организация"
+
+#: kleo/dn.cpp:514
+#, kde-format
+msgid "Postal code"
+msgstr "Почтовый индекс"
+
+#: kleo/dn.cpp:515
+#, kde-format
+msgid "Country code"
+msgstr "Код страны"
+
+#: kleo/dn.cpp:516
+#, kde-format
+msgid "State or province"
+msgstr "Область или регион"
+
+#: kleo/dn.cpp:517
+#, kde-format
+msgid "Domain component"
+msgstr "Компонент домена"
+
+#: kleo/dn.cpp:518
+#, kde-format
+msgid "Business category"
+msgstr "Категория бизнеса"
+
+#: kleo/dn.cpp:519
+#, kde-format
+msgid "Email address"
+msgstr "Адрес эл. почты"
+
+#: kleo/dn.cpp:520
+#, kde-format
+msgid "Mail address"
+msgstr "Почтовый адрес"
+
+#: kleo/dn.cpp:521
+#, kde-format
+msgid "Mobile phone number"
+msgstr "Мобильный"
+
+#: kleo/dn.cpp:522
+#, kde-format
+msgid "Telephone number"
+msgstr "Телефон"
+
+#: kleo/dn.cpp:523
+#, kde-format
+msgid "Fax number"
+msgstr "Факс"
+
+#: kleo/dn.cpp:524
+#, kde-format
+msgid "Street address"
+msgstr "Улица"
+
+#: kleo/dn.cpp:525
+#, kde-format
+msgid "Unique ID"
+msgstr "Уникальный идентификатор"
+
+#: kleo/enum.cpp:57
+#, kde-format
+msgid "Inline OpenPGP (deprecated)"
+msgstr "Встроенный OpenPGP (устаревший)"
+
+#: kleo/enum.cpp:62
+#, kde-format
+msgid "OpenPGP/MIME"
+msgstr "OpenPGP/MIME"
+
+#: kleo/enum.cpp:67 ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "S/MIME"
+msgstr "S/MIME"
+
+# BUGME: opaque -- непрозрачный. В чем здесь дело? --aspotashev
+#: kleo/enum.cpp:72
+#, kde-format
+msgid "S/MIME Opaque"
+msgstr "Прозрачный S/MIME"
+
+#: kleo/enum.cpp:104
+#, kde-format
+msgid "Any"
+msgstr "Любой"
+
+#: kleo/enum.cpp:177
+#, kde-format
+msgid "Never Encrypt"
+msgstr "Не шифровать"
+
+#: kleo/enum.cpp:179
+#, kde-format
+msgid "Always Encrypt"
+msgstr "Шифровать всегда"
+
+#: kleo/enum.cpp:181
+#, kde-format
+msgid "Always Encrypt If Possible"
+msgstr "Шифровать, если возможно"
+
+#: kleo/enum.cpp:183 kleo/enum.cpp:240
+#, kde-format
+msgid "Ask"
+msgstr "Спрашивать"
+
+#: kleo/enum.cpp:185 kleo/enum.cpp:242
+#, kde-format
+msgid "Ask Whenever Possible"
+msgstr "Спрашивать, если возможно"
+
+#: kleo/enum.cpp:187
+#, kde-kuit-format
+msgctxt "no specific preference"
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>нет</placeholder>"
+
+#: kleo/enum.cpp:234
+#, kde-format
+msgid "Never Sign"
+msgstr "Никогда не подписывать"
+
+#: kleo/enum.cpp:236
+#, kde-format
+msgid "Always Sign"
+msgstr "Подписывать всегда"
+
+#: kleo/enum.cpp:238
+#, kde-format
+msgid "Always Sign If Possible"
+msgstr "Подписывать, если возможно"
+
+#: kleo/enum.cpp:244
+#, kde-format
+msgctxt "no specific preference"
+msgid "<none>"
+msgstr "<нет>"
+
+#: kleo/keyfiltermanager.cpp:85
+#, kde-format
+msgid "All Certificates"
+msgstr "Все сертификаты"
+
+#: kleo/keyfiltermanager.cpp:100
+#, kde-format
+msgid "My Certificates"
+msgstr "Мои сертификаты"
+
+#: kleo/keyfiltermanager.cpp:118
+#, kde-format
+msgid "Trusted Certificates"
+msgstr "Доверенные сертификаты"
+
+#: kleo/keyfiltermanager.cpp:135
+#, fuzzy, kde-format
+#| msgid "Trusted Certificates"
+msgid "Fully Trusted Certificates"
+msgstr "Доверенные сертификаты"
+
+#: kleo/keyfiltermanager.cpp:152
+#, kde-format
+msgid "Other Certificates"
+msgstr "Прочие сертификаты"
+
+#: kleo/keyfiltermanager.cpp:166
+#, fuzzy, kde-format
+#| msgid "All Certificates"
+msgid "VS-compliant Certificates"
+msgstr "Все сертификаты"
+
+#: kleo/keyfiltermanager.cpp:184
+#, fuzzy, kde-format
+#| msgid "Trusted Certificates"
+msgid "Not validated Certificates"
+msgstr "Доверенные сертификаты"
+
+#: ui/auditlogviewer.cpp:49
+#, kde-format
+msgid "View GnuPG Audit Log"
+msgstr "Просмотр журнала аудита GnuPG"
+
+#: ui/auditlogviewer.cpp:53
+#, kde-format
+msgid "&Copy to Clipboard"
+msgstr "С&копировать в буфер обмена"
+
+#: ui/auditlogviewer.cpp:59
+#, kde-format
+msgid "&Save to Disk..."
+msgstr "&Сохранить на диск..."
+
+#: ui/auditlogviewer.cpp:95
+#, kde-format
+msgid "Choose File to Save GnuPG Audit Log to"
+msgstr "Выбор файла для сохранения журнала аудита"
+
+#: ui/auditlogviewer.cpp:118
+#, kde-format
+msgid "Could not save to file \"%1\": %2"
+msgstr "Невозможно сохранить в файл «%1»: %2"
+
+#: ui/auditlogviewer.cpp:120
+#, kde-format
+msgid "File Save Error"
+msgstr "Ошибка сохранения"
+
+#: ui/cryptoconfigdialog.cpp:44
+#, kde-format
+msgid "Configure GnuPG Backend"
+msgstr "Настроить модуль GnuPG"
+
+#: ui/cryptoconfigdialog.cpp:55
+#, kde-format
+msgid "&Reset"
+msgstr "Сб&рос"
+
+#: ui/cryptoconfigmodule.cpp:160
+#, kde-format
+msgid "GpgConf Error"
+msgstr "Ошибка GpgConf"
+
+#: ui/cryptoconfigmodule.cpp:216
+#, kde-format
+msgid ""
+"The gpgconf tool used to provide the information for this dialog does not "
+"seem to be installed properly. It did not return any components. Try running "
+"\"%1\" on the command line for more information."
+msgstr ""
+"Похоже, используемая программа «gpgconf» установлена неправильно, так как не "
+"вернула ни один компонент. Попробуйте запустить в командной строке «%1» "
+"вручную."
+
+#: ui/cryptoconfigmodule.cpp:496
+#, kde-format
+msgctxt ""
+"Translate this to 'yes' or 'no' (use the English words!) depending on "
+"whether your language uses Sentence style capitalisation in GUI labels (yes) "
+"or not (no). Context: We get some backend strings in that have the wrong "
+"capitalizaion (in English, at least) so we need to force the first character "
+"to upper-case. It is this behaviour you can control for your language with "
+"this translation."
+msgid "yes"
+msgstr "yes"
+
+#: ui/cryptoconfigmodule.cpp:546
+#, kde-format
+msgid "0 - None"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:547
+#, kde-format
+msgid "1 - Basic"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:548
+#, kde-format
+msgid "2 - Verbose"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:549
+#, kde-format
+msgid "3 - More Verbose"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:550
+#, kde-format
+msgid "4 - All"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:559
+#, kde-format
+msgid "Set the debugging level to"
+msgstr "Установить уровень отладки"
+
+#: ui/cryptoconfigmodule.cpp:787
+#, kde-format
+msgid "Show..."
+msgstr "Показать..."
+
+#: ui/cryptoconfigmodule.cpp:787 ui/cryptoconfigmodule.cpp:876
+#, kde-format
+msgid "Edit..."
+msgstr "Изменить..."
+
+#: ui/cryptoconfigmodule.cpp:841
+#, kde-format
+msgid "Configure LDAP Servers"
+msgstr "Настройка серверов LDAP"
+
+#: ui/cryptoconfigmodule.cpp:862
+#, fuzzy, kde-format
+#| msgid "No server configured yet"
+msgid "None configured"
+msgstr "Не настроен ни один сервер"
+
+#: ui/cryptoconfigmodule.cpp:864
+#, kde-format
+msgid "1 server configured"
+msgid_plural "%1 servers configured"
+msgstr[0] "Настроен %1 сервер"
+msgstr[1] "Настроено %1 сервера"
+msgstr[2] "Настроено %1 серверов"
+msgstr[3] "Настроен 1 сервер"
+
+#: ui/cryptoconfigmodule.cpp:879
+#, kde-format
+msgid "Use keyserver at"
+msgstr "Использовать сервер ключей"
+
+#: ui/cryptoconfigmodule.cpp:968
+#, kde-format
+msgid "Configure Keyservers"
+msgstr "Настроить сервера ключей"
+
+#: ui/directoryserviceswidget.cpp:67
+#, kde-format
+msgctxt "default server name, keep it a valid domain name, ie. no spaces"
+msgid "server"
+msgstr "server"
+
+#: ui/directoryserviceswidget.cpp:95
+#, kde-format
+msgid "hkp"
+msgstr "hkp"
+
+#: ui/directoryserviceswidget.cpp:96
+#, kde-format
+msgid "http"
+msgstr "http"
+
+#: ui/directoryserviceswidget.cpp:97
+#, kde-format
+msgid "https"
+msgstr "https"
+
+#: ui/directoryserviceswidget.cpp:98
+#, kde-format
+msgid "ftp"
+msgstr "ftp"
+
+#: ui/directoryserviceswidget.cpp:99
+#, kde-format
+msgid "ftps"
+msgstr "ftps"
+
+#: ui/directoryserviceswidget.cpp:100
+#, kde-format
+msgid "ldap"
+msgstr "ldap"
+
+#: ui/directoryserviceswidget.cpp:101
+#, kde-format
+msgid "ldaps"
+msgstr "ldaps"
+
+#: ui/directoryserviceswidget.cpp:588
+#, kde-format
+msgid "Server Name"
+msgstr "Адрес сервера"
+
+#: ui/directoryserviceswidget.cpp:589
+#, kde-format
+msgid "Server Port"
+msgstr "Порт сервера"
+
+#: ui/directoryserviceswidget.cpp:590
+#, kde-format
+msgid "Base DN"
+msgstr "Корневой DN"
+
+#: ui/directoryserviceswidget.cpp:591
+#, kde-format
+msgid "User Name"
+msgstr "Имя пользователя"
+
+#: ui/directoryserviceswidget.cpp:592
+#, kde-format
+msgid "Password"
+msgstr "Пароль"
+
+#: ui/directoryserviceswidget.cpp:614
+#, kde-format
+msgid "(read-only)"
+msgstr "(только для чтения)"
+
+#: ui/directoryserviceswidget.cpp:616
+#, kde-format
+msgctxt "amended tooltip; %1: original tooltip"
+msgid "%1 (read-only)"
+msgstr "%1 (только для чтения)"
+
+#: ui/directoryserviceswidget.cpp:739
+#, kde-format
+msgid ""
+"Enter the name or IP address of the server hosting the directory service."
+msgstr "Введите имя сервера каталога или его адрес IP."
+
+#: ui/directoryserviceswidget.cpp:741
+#, kde-format
+msgid ""
+"<b>(Optional, the default is fine in most cases)</b> Pick the port number "
+"the directory service is listening on."
+msgstr ""
+"<b>(необязательный параметр, значение по умолчанию подходит в большинстве "
+"случаев)</b> Введите порт сервера каталогов."
+
+#: ui/directoryserviceswidget.cpp:744
+#, kde-format
+msgid ""
+"<b>(Only for LDAP)</b> Enter the base DN for this LDAP server to limit "
+"searches to only that subtree of the directory."
+msgstr ""
+"<b>(только для LDAP)</b> Введите корневой DN сервера LDAP для поиска только "
+"в указанной ветке."
+
+#: ui/directoryserviceswidget.cpp:747
+#, kde-format
+msgid "<b>(Optional)</b> Enter your user name here, if needed."
+msgstr ""
+"<b>(необязательный параметр)</b> Введите имя пользователя, если оно "
+"используется."
+
+#: ui/directoryserviceswidget.cpp:749
+#, kde-format
+msgid ""
+"<b>(Optional, not recommended)</b> Enter your password here, if needed. Note "
+"that the password will be saved in the clear in a config file in your home "
+"directory."
+msgstr ""
+"<b>(необязательный параметр, не рекомендуется)</b> Введите пароль, если он "
+"используется. Этот пароль будет сохранён в конфигурационном файле "
+"незашифрованным, что небезопасно."
+
+#. i18n: ectx: property (windowTitle), widget (QWidget, DirectoryServicesWidget)
+#: ui/directoryserviceswidget.ui:14
+#, kde-format
+msgid "Directory Services Configuration"
+msgstr "Настройка службы каталога"
+
+#. i18n: ectx: property (text), widget (QLabel, pgpKSLabel)
+#: ui/directoryserviceswidget.ui:22
+#, fuzzy, kde-format
+#| msgid "OpenPGP Key Selection"
+msgid "OpenPGP Keyserver:"
+msgstr "Выбор ключа OpenPGP"
+
+#. i18n: ectx: property (title), widget (QGroupBox, x500LA)
+#: ui/directoryserviceswidget.ui:35
+#, fuzzy, kde-format
+#| msgid "Directory services:"
+msgid "X509 Directory services:"
+msgstr "Службы каталога:"
+
+#. i18n: ectx: property (whatsThis), widget (QTreeView, treeView)
+#: ui/directoryserviceswidget.ui:43
+#, fuzzy, kde-format
+#| msgid ""
+#| "This is a list of all directory services that are configured for use with "
+#| "X.509 and OpenPGP."
+msgid ""
+"This is a list of all directory services that are configured for use with "
+"X.509."
+msgstr "Список служб каталогов, настроенных для работы с X.509 и OpenPGP."
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:70
+#, kde-format
+msgid "Click to add a service"
+msgstr "Нажмите на кнопку для добавления новой службы каталога"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:73
+#, kde-format
+msgid ""
+"Click this button to create a new directory service entry as a clone of the "
+"currently selected one (or with default values, if no other is selected). "
+"You can then configure details in the table on the left hand."
+msgstr ""
+"Нажмите на эту кнопку для создания новой службы каталога как копии выбранной "
+"службы (или со значениями по умолчанию, если ничего не выбрано). Настроить "
+"службу можно на панели слева."
+
+#. i18n: ectx: property (text), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:76
+#, kde-format
+msgid "New"
+msgstr "Создать"
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:92
+#, kde-format
+msgid "Click to remove the currently selected service"
+msgstr "Нажмите на кнопку для удаления выбранной службы каталога"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:95
+#, kde-format
+msgid ""
+"Click this button to remove the currently selected directory service. The "
+"change will only take effect once you acknowledge the main configuration "
+"dialog."
+msgstr "Нажмите на эту кнопку для удаления выбранной службы каталога."
+
+#. i18n: ectx: property (text), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:98
+#, kde-format
+msgid "Delete"
+msgstr "Удалить"
+
+#. i18n: ectx: property (whatsThis), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:128
+#, kde-format
+msgid ""
+"Use this option to switch display of username and password information on or "
+"off in the above table."
+msgstr ""
+"Включите этот параметр для показа имени пользователя и пароля в таблице."
+
+#. i18n: ectx: property (text), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:131
+#, kde-format
+msgid "Show user and password information"
+msgstr "Показывать имя пользователя и пароль"
+
+#: ui/dnattributeorderconfigwidget.cpp:73
+#, kde-format
+msgid "Description"
+msgstr "Описание"
+
+#: ui/dnattributeorderconfigwidget.cpp:91
+#, kde-format
+msgid "Available attributes:"
+msgstr "Доступные атрибуты:"
+
+#: ui/dnattributeorderconfigwidget.cpp:92
+#, kde-format
+msgid "Current attribute order:"
+msgstr "Текущий порядок атрибутов:"
+
+#: ui/dnattributeorderconfigwidget.cpp:112
+#, kde-format
+msgid "All others"
+msgstr "Все остальные"
+
+#: ui/dnattributeorderconfigwidget.cpp:129
+#, kde-format
+msgid "Move to top"
+msgstr "Переместить наверх"
+
+#: ui/dnattributeorderconfigwidget.cpp:130
+#, kde-format
+msgid "Move one up"
+msgstr "Переместить выше"
+
+#: ui/dnattributeorderconfigwidget.cpp:131
+#, kde-format
+msgid "Remove from current attribute order"
+msgstr "Удалить текущий порядок атрибутов"
+
+#: ui/dnattributeorderconfigwidget.cpp:132
+#, kde-format
+msgid "Add to current attribute order"
+msgstr "Добавить в текущий порядок атрибутов"
+
+#: ui/dnattributeorderconfigwidget.cpp:133
+#, kde-format
+msgid "Move one down"
+msgstr "Переместить ниже"
+
+#: ui/dnattributeorderconfigwidget.cpp:134
+#, kde-format
+msgid "Move to bottom"
+msgstr "Переместить вниз"
+
+#: ui/keyapprovaldialog.cpp:87
+#, kde-kuit-format
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>нет</placeholder>"
+
+#: ui/keyapprovaldialog.cpp:88
+#, kde-format
+msgid "Never Encrypt with This Key"
+msgstr "Никогда не шифровать этим ключом"
+
+#: ui/keyapprovaldialog.cpp:89
+#, kde-format
+msgid "Always Encrypt with This Key"
+msgstr "Всегда шифровать этим ключом"
+
+#: ui/keyapprovaldialog.cpp:90
+#, kde-format
+msgid "Encrypt Whenever Encryption is Possible"
+msgstr "Шифровать, когда возможно"
+
+#: ui/keyapprovaldialog.cpp:91
+#, kde-format
+msgid "Always Ask"
+msgstr "Всегда спрашивать"
+
+#: ui/keyapprovaldialog.cpp:92
+#, kde-format
+msgid "Ask Whenever Encryption is Possible"
+msgstr "Спрашивать, когда шифрование возможно"
+
+#: ui/keyapprovaldialog.cpp:113
+#, kde-format
+msgid "Encryption Key Approval"
+msgstr "Одобрение ключа шифрования"
+
+#: ui/keyapprovaldialog.cpp:129
+#, kde-format
+msgid "The following keys will be used for encryption:"
+msgstr "Следующие ключи будут использоваться для шифрования:"
+
+#: ui/keyapprovaldialog.cpp:145
+#, kde-format
+msgid "Your keys:"
+msgstr "Собственные ключи:"
+
+#: ui/keyapprovaldialog.cpp:157
+#, kde-format
+msgid "Recipient:"
+msgstr "Получатель:"
+
+#: ui/keyapprovaldialog.cpp:162
+#, kde-format
+msgid "Encryption keys:"
+msgstr "Ключи шифрования:"
+
+#: ui/keyapprovaldialog.cpp:169
+#, kde-format
+msgid "Encryption preference:"
+msgstr "Параметры шифрования:"
+
+#: ui/keyrequester.cpp:118
+#, kde-format
+msgid "Clear"
+msgstr "Очистить"
+
+#: ui/keyrequester.cpp:121
+#, kde-format
+msgid "Change..."
+msgstr "Изменить..."
+
+#: ui/keyrequester.cpp:232 ui/keyselectiondialog.cpp:256
+#, kde-kuit-format
+msgid "<placeholder>unknown</placeholder>"
+msgstr "<placeholder>неизвестный</placeholder>"
+
+#: ui/keyrequester.cpp:246 ui/keyselectiondialog.cpp:657
+#, kde-format
+msgid ""
+"<qt><p>An error occurred while fetching the keys from the backend:</p><p><b>"
+"%1</b></p></qt>"
+msgstr ""
+"<qt><p>При получении ключей от модуля произошла ошибка:</p><p><b>%1</b></p></"
+"qt>"
+
+#: ui/keyrequester.cpp:251 ui/keyrequester.cpp:283 ui/keyrequester.cpp:306
+#: ui/keyselectiondialog.cpp:630 ui/keyselectiondialog.cpp:662
+#, kde-format
+msgid "Key Listing Failed"
+msgstr "Ошибка получения списка ключей"
+
+#: ui/keyrequester.cpp:281
+#, kde-format
+msgid ""
+"The OpenPGP backend does not support listing keys. Check your installation."
+msgstr ""
+"Модуль OpenPGP не поддерживает перечисление ключей. Проверьте установку."
+
+#: ui/keyrequester.cpp:304
+#, kde-format
+msgid ""
+"The S/MIME backend does not support listing keys. Check your installation."
+msgstr ""
+"Модуль S/MIME не поддерживает перечисление ключей. Проверьте установку."
+
+#: ui/keyrequester.cpp:426
+#, kde-format
+msgid "OpenPGP Key Selection"
+msgstr "Выбор ключа OpenPGP"
+
+#: ui/keyrequester.cpp:427
+#, kde-format
+msgid "Please select an OpenPGP key to use."
+msgstr "Выберите ключ OpenPGP."
+
+#: ui/keyrequester.cpp:429
+#, kde-format
+msgid "S/MIME Key Selection"
+msgstr "Выбор ключа S/MIME"
+
+#: ui/keyrequester.cpp:430
+#, kde-format
+msgid "Please select an S/MIME key to use."
+msgstr "Выберите ключ S/MIME."
+
+#: ui/keyrequester.cpp:432
+#, kde-format
+msgid "Key Selection"
+msgstr "Выбор ключа"
+
+#: ui/keyrequester.cpp:433
+#, kde-format
+msgid "Please select an (OpenPGP or S/MIME) key to use."
+msgstr "Выберите ключ OpenPGP или S/MIME."
+
+#: ui/keyselectioncombo.cpp:195
+#, kde-format
+msgctxt "Name <email> (validity, type, created: date)"
+msgid "%1 (%2, %3, created: %4)"
+msgstr ""
+
+#: ui/keyselectioncombo.cpp:196
+#, kde-format
+msgctxt "Name <email>"
+msgid "%1 <%2>"
+msgstr "%1 <%2>"
+
+#: ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "OpenPGP"
+msgstr "OpenPGP"
+
+#: ui/keyselectioncombo.cpp:347
+#, kde-format
+msgid "Loading keys ..."
+msgstr "Загрузка ключей..."
+
+#: ui/keyselectiondialog.cpp:98
+#, kde-format
+msgid "The key is not valid."
+msgstr "Ключ некорректный."
+
+#: ui/keyselectiondialog.cpp:106
+#, kde-format
+msgid "The key is expired."
+msgstr "Ключ просрочен."
+
+#: ui/keyselectiondialog.cpp:110
+#, kde-format
+msgid "The key is revoked."
+msgstr "Ключ отозван."
+
+#: ui/keyselectiondialog.cpp:114
+#, kde-format
+msgid "The key is disabled."
+msgstr "Ключ отключён."
+
+#: ui/keyselectiondialog.cpp:122
+#, kde-format
+msgid "The key is not designated for encryption."
+msgstr "Ключ не предназначен для шифрования."
+
+#: ui/keyselectiondialog.cpp:128
+#, kde-format
+msgid "The key is not designated for signing."
+msgstr "Ключ не предназначен для подписи."
+
+#: ui/keyselectiondialog.cpp:134
+#, kde-format
+msgid "The key is not designated for certifying."
+msgstr "Ключ не предназначен для сертификации (подписи других ключей)."
+
+#: ui/keyselectiondialog.cpp:140
+#, kde-format
+msgid "The key is not designated for authentication."
+msgstr "Ключ не предназначен для проверки подлинности."
+
+#: ui/keyselectiondialog.cpp:148
+#, kde-format
+msgid "The key is not secret."
+msgstr "Ключ не является закрытым."
+
+#: ui/keyselectiondialog.cpp:163
+#, kde-format
+msgid "The key is not trusted enough."
+msgstr "Недостаточный уровень доверия к ключу."
+
+#: ui/keyselectiondialog.cpp:169
+#, kde-format
+msgid "The key can be used."
+msgstr "Ключ может быть использован."
+
+#: ui/keyselectiondialog.cpp:230
+#, kde-format
+msgid "Key ID"
+msgstr "Идентификатор ключа"
+
+#: ui/keyselectiondialog.cpp:231
+#, kde-format
+msgid "User ID"
+msgstr "Идентификатор пользователя"
+
+#: ui/keyselectiondialog.cpp:279
+#, kde-format
+msgid "never"
+msgstr "никогда"
+
+#: ui/keyselectiondialog.cpp:289 ui/keyselectiondialog.cpp:291
+#: ui/keyselectiondialog.cpp:300 ui/keyselectiondialog.cpp:302
+#, kde-format
+msgid "unknown"
+msgstr "неизвестно"
+
+#: ui/keyselectiondialog.cpp:289
+#, kde-format
+msgid "OpenPGP key for <b>%1</b>"
+msgstr "Ключ OpenPGP для <b>%1</b>"
+
+#: ui/keyselectiondialog.cpp:291
+#, kde-format
+msgid "S/MIME key for <b>%1</b>"
+msgstr "Ключ S/MIME для <b>%1</b>"
+
+#: ui/keyselectiondialog.cpp:298
+#, kde-format
+msgctxt "Key creation date"
+msgid "Created"
+msgstr "Дата создания"
+
+#: ui/keyselectiondialog.cpp:299
+#, kde-format
+msgctxt "Key Expiration date"
+msgid "Expiry"
+msgstr "Срок годности"
+
+#: ui/keyselectiondialog.cpp:300
+#, kde-format
+msgctxt "Key fingerprint"
+msgid "Fingerprint"
+msgstr "Отпечаток"
+
+#: ui/keyselectiondialog.cpp:302
+#, kde-format
+msgctxt "Key issuer"
+msgid "Issuer"
+msgstr "Кем выпущен"
+
+#: ui/keyselectiondialog.cpp:304
+#, kde-format
+msgctxt "Key status"
+msgid "Status"
+msgstr "Состояние"
+
+#: ui/keyselectiondialog.cpp:456
+#, kde-format
+msgid "Search for &External Certificates"
+msgstr "Поиск в&нешних сертификатов"
+
+#: ui/keyselectiondialog.cpp:470
+#, kde-format
+msgid "&Search for:"
+msgstr "&Поиск:"
+
+#: ui/keyselectiondialog.cpp:494
+#, kde-format
+msgid "&Remember choice"
+msgstr "&Запомнить выбор"
+
+#: ui/keyselectiondialog.cpp:497
+#, kde-format
+msgid ""
+"<qt><p>If you check this box your choice will be stored and you will not be "
+"asked again.</p></qt>"
+msgstr ""
+"<qt><p>При включении этого параметра выбор будет сохранён и не будет "
+"запрашиваться каждый раз.</p></qt>"
+
+#: ui/keyselectiondialog.cpp:509
+#, kde-format
+msgid "&Reread Keys"
+msgstr "&Обновить ключи"
+
+#: ui/keyselectiondialog.cpp:510
+#, kde-format
+msgid "&Start Certificate Manager"
+msgstr "&Запустить диспетчер сертификатов"
+
+#: ui/keyselectiondialog.cpp:628
+#, kde-format
+msgid "No backends found for listing keys. Check your installation."
+msgstr "Не найден ни один модуль, перечисляющий ключи. Проверьте установку."
+
+#: ui/keyselectiondialog.cpp:644
+#, kde-format
+msgid "Could not start certificate manager; please check your installation."
+msgstr "Не запущен ни один диспетчер сертификатов — проверьте установку."
+
+#: ui/keyselectiondialog.cpp:646
+#, kde-format
+msgid "Certificate Manager Error"
+msgstr "Ошибка диспетчера сертификатов"
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Checking selected keys..."
+msgstr "Проверка выбранных ключей..."
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Fetching keys..."
+msgstr "Получение ключей..."
+
+#: ui/keyselectiondialog.cpp:731
+#, kde-format
+msgid ""
+"<qt>One backend returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgid_plural ""
+"<qt>%1 backends returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgstr[0] ""
+"<qt>%1 модуль вернул усечённый вывод. <p>Не все доступные ключи будут "
+"показаны.</p></qt>"
+msgstr[1] ""
+"<qt>%1 модуля вернули усечённый вывод. <p>Не все доступные ключи будут "
+"показаны.</p></qt>"
+msgstr[2] ""
+"<qt>%1 модулей вернули усечённый вывод. <p>Не все доступные ключи будут "
+"показаны.</p></qt>"
+msgstr[3] ""
+"<qt>1 модуль вернул усечённый вывод. <p>Не все доступные ключи будут "
+"показаны.</p></qt>"
+
+#: ui/keyselectiondialog.cpp:736
+#, kde-format
+msgid "Key List Result"
+msgstr "Результат списка ключей"
+
+#: ui/keyselectiondialog.cpp:856
+#, kde-format
+msgid "Recheck Key"
+msgstr "Перепроверить ключ"
+
+#: ui/messagebox.cpp:71
+#, kde-format
+msgid "Your system does not have support for GnuPG Audit Logs"
+msgstr "Данная система не поддерживает ведение журналов аудита GnuPG"
+
+#: ui/messagebox.cpp:72
+#, kde-format
+msgid "System Error"
+msgstr "Ошибка системы"
+
+#: ui/messagebox.cpp:79
+#, kde-format
+msgid ""
+"An error occurred while trying to retrieve the GnuPG Audit Log:\n"
+"%1"
+msgstr ""
+"Ошибка получения журнала аудита GnuPG:\n"
+"%1"
+
+#: ui/messagebox.cpp:81
+#, kde-format
+msgid "GnuPG Audit Log Error"
+msgstr "Ошибка журнала аудита GnuPG"
+
+#: ui/messagebox.cpp:88
+#, kde-format
+msgid "No GnuPG Audit Log available for this operation."
+msgstr "Журнал аудита GnuPG не найден."
+
+#: ui/messagebox.cpp:89
+#, kde-format
+msgid "No GnuPG Audit Log"
+msgstr "Журнал аудита GnuPG не найден"
+
+#: ui/messagebox.cpp:109 ui/messagebox.cpp:115
+#, kde-format
+msgid "GnuPG Audit Log Viewer"
+msgstr "Просмотр журнала аудита GnuPG"
+
+#: ui/messagebox.cpp:121
+#, kde-format
+msgid "Signing failed: %1"
+msgstr "Ошибка подписи: %1"
+
+#: ui/messagebox.cpp:122
+#, kde-format
+msgid "Signing successful"
+msgstr "Успешно подписано"
+
+#: ui/messagebox.cpp:133
+#, kde-format
+msgid "Encryption failed: %1"
+msgstr "Шифрование невозможно: %1"
+
+#: ui/messagebox.cpp:134
+#, kde-format
+msgid "Encryption successful"
+msgstr "Успешно зашифровано"
+
+#: ui/messagebox.cpp:155
+#, kde-format
+msgid "Signing Result"
+msgstr "Подпись"
+
+#: ui/messagebox.cpp:167
+#, kde-format
+msgid "Signing Error"
+msgstr "Ошибка подписи"
+
+#: ui/messagebox.cpp:179 ui/messagebox.cpp:203
+#, kde-format
+msgid "Encryption Result"
+msgstr "Шифрование"
+
+#: ui/messagebox.cpp:191 ui/messagebox.cpp:215
+#, kde-format
+msgid "Encryption Error"
+msgstr "Ошибка шифрования"
+
+#: ui/messagebox.cpp:263
+#, kde-format
+msgid "&Show Audit Log"
+msgstr "&Журнал аудита"
+
+#: ui/progressdialog.cpp:91
+#, kde-format
+msgid "%1: %2"
+msgstr "%1: %2"
+
+#~ msgctxt "New X.509 Directory Server"
+#~ msgid "X.509"
+#~ msgstr "X.509"
+
+#~ msgctxt "New OpenPGP Directory Server"
+#~ msgid "OpenPGP"
+#~ msgstr "OpenPGP"
+
+#~ msgid "Scheme"
+#~ msgstr "Протокол доступа"
+
+#~ msgid "X.509"
+#~ msgstr "X.509"
+
+#~ msgid ""
+#~ "Select the access scheme (scheme) that the directory service is available "
+#~ "through."
+#~ msgstr ""
+#~ "Выберите протокол доступа, который будет использован для служб каталога."
+
+#~ msgid ""
+#~ "Check this column if this directory service is providing S/MIME (X.509) "
+#~ "certificates."
+#~ msgstr ""
+#~ "Включите параметр, если служба каталогов предоставляет сертификаты S/MIME "
+#~ "(X.509)."
+
+#~ msgid ""
+#~ "Check this column if this directory service is providing OpenPGP "
+#~ "certificates."
+#~ msgstr ""
+#~ "Включите параметр, если служба каталогов предоставляет сертификаты "
+#~ "OpenPGP."
+
+#~ msgid "0 - None (no debugging at all)"
+#~ msgstr "0. Нет (не вести журнал вообще)"
+
+#~ msgid "1 - Basic (some basic debug messages)"
+#~ msgstr "1. Базовый (только основные отладочные сообщения)"
+
+#~ msgid "2 - Advanced (more verbose debug messages)"
+#~ msgstr "2. Расширенный (большинство отладочных сообщений)"
+
+#~ msgid "3 - Expert (even more detailed messages)"
+#~ msgstr "3. Экспертный (глубокий уровень детализации)"
+
+#~ msgid "4 - Guru (all of the debug messages you can get)"
+#~ msgstr "4. Гуру (все отладочные сообщения)"
+
+#~ msgid "General"
+#~ msgstr "Общие"
+
+#~ msgid "Chiasmus"
+#~ msgstr "Chiasmus"
+
+#~ msgid "Chiasmus command line tool"
+#~ msgstr "Программа Chiasmus"
+
+#~ msgid "Unsupported protocol \"%1\""
+#~ msgstr "Протокол «%1» не поддерживается"
+
+#~ msgid "File \"%1\" does not exist or is not executable."
+#~ msgstr "Файл «%1» не существует или не является исполняемым."
+
+#~ msgid "Output from chiasmus"
+#~ msgstr "Вывод программы chiasmus"
+
+#~ msgid "Decryption failed: %1"
+#~ msgstr "Ошибка расшифровки: %1"
+
+#~ msgid ""
+#~ "The following was received on stderr:\n"
+#~ "%1"
+#~ msgstr ""
+#~ "Ошибки:\n"
+#~ "%1"
+
+#~ msgid "Failed to load %1: %2"
+#~ msgstr "Ошибка загрузки %1:%2"
+
+#~ msgid "Library does not contain the symbol \"Chiasmus\"."
+#~ msgstr "Подключаемая библиотека не содержит функции «Chiasmus»."
+
+#~ msgid "Scanning directory %1..."
+#~ msgstr "Просмотр папки %1..."
+
+#~ msgid "GpgME"
+#~ msgstr "GpgME"
+
+#~ msgid "GPGME was compiled without support for %1."
+#~ msgstr "GPGME был собран без поддержки %1."
+
+#~ msgid "Engine %1 is not installed properly."
+#~ msgstr "Служба %1 установлена неправильно."
+
+#~ msgid "Engine %1 version %2 installed, but at least version %3 is required."
+#~ msgstr ""
+#~ "Установлена служба %1 версии %2, но для работы программы необходима "
+#~ "версия не ниже %3."
+
+#~ msgid "Unknown problem with engine for protocol %1."
+#~ msgstr "Неизвестная проблема в службе протокола %1."
+
+#~ msgid "program terminated unexpectedly"
+#~ msgstr "программа завершилась преждевременно"
+
+#~ msgid "program not found or cannot be started"
+#~ msgstr "программа не найдена и не может быть выполнена"
+
+#~ msgid "<qt>Failed to execute gpgconf:<p>%1</p></qt>"
+#~ msgstr "<qt>Невозможно запустить gpgconf:<p>%1</p></qt>"
+
+#~ msgid ""
+#~ "Could not start gpgconf.\n"
+#~ "Check that gpgconf is in the PATH and that it can be started."
+#~ msgstr ""
+#~ "Невозможно запустить gpgconf\n"
+#~ "Убедитесь, что gpgconf находится в каталоге, указанном в переменной среды "
+#~ "окружения PATH, и он может быть запущен."
+
+#~ msgid "Error from gpgconf while saving configuration: %1"
+#~ msgstr "Ошибка в gpgconf при сохранении конфигурации: %1"
+
+#~ msgid "Generating DSA key..."
+#~ msgstr "Создание ключа DSA..."
+
+#~ msgid "Generating ElGamal key..."
+#~ msgstr "Создание ключа ElGamal..."
+
+#~ msgid "Searching for a large prime number..."
+#~ msgstr "Поиск большого простого числа..."
+
+#~ msgid ""
+#~ "Waiting for new entropy from random number generator (you might want to "
+#~ "exercise the harddisks or move the mouse)..."
+#~ msgstr ""
+#~ "Ожидание новой энтропии из генератора случайных чисел (ускорить процесс "
+#~ "можно открывая файлы или перемещая мышь)..."
+
+#~ msgid "Please wait..."
+#~ msgstr "Подождите..."
+
+#~ msgid ""
+#~ "Starting gpg-agent (you should consider starting a global instance "
+#~ "instead)..."
+#~ msgstr ""
+#~ "Запуск gpg-agent (вместо этого необходимо использовать глобальный "
+#~ "экземпляр)..."
+
+#~ msgid "While scanning for %1 support in backend %2:"
+#~ msgstr "Проверка поддержки %1 модулем %2:"
+
+#~ msgctxt "progress info: \"%1 of %2\""
+#~ msgid "%1/%2"
+#~ msgstr "%1 из %2"
+
+#~ msgid ""
+#~ "OpenPGP key for %1\n"
+#~ "Created: %2\n"
+#~ "Expiry: %3\n"
+#~ "Fingerprint: %4"
+#~ msgstr ""
+#~ "Ключ OpenPGP %1\n"
+#~ "Создан: %2\n"
+#~ "Действителен до: %3\n"
+#~ "Отпечаток: %4"
+
+#~ msgid ""
+#~ "S/MIME key for %1\n"
+#~ "Created: %2\n"
+#~ "Expiry: %3\n"
+#~ "Fingerprint: %4\n"
+#~ "Issuer: %5"
+#~ msgstr ""
+#~ "Ключ S/MIME %1\n"
+#~ "Создан: %2\n"
+#~ "Действителен до: %3\n"
+#~ "Отпечаток: %4\n"
+#~ "Владелец: %5"
+
+#~ msgid "Copy Audit Log to Clipboard"
+#~ msgstr "Скопировать журнал аудита в буфер обмена"
+
+#~ msgid "Add or Change Directory Service"
+#~ msgstr "Добавить или изменить службу каталога"
+
+#~ msgid "&Server name:"
+#~ msgstr "&Сервер:"
+
+#~ msgid "389"
+#~ msgstr "389"
+
+#~ msgid "&User name (optional):"
+#~ msgstr "&Имя пользователя:"
+
+#~ msgid "Pass&word (optional):"
+#~ msgstr "&Пароль:"
+
+#~ msgid "&OK"
+#~ msgstr "&ОК"
+
+#~ msgid "&Cancel"
+#~ msgstr "О&тмена"
+
+#~ msgid "&Base DN:"
+#~ msgstr "&Корневой DN:"
+
+#~ msgid "&Port:"
+#~ msgstr "П&орт:"
+
+#~ msgctxt "NAME OF TRANSLATORS"
+#~ msgid "Your names"
+#~ msgstr "Олег Баталов,Андрей Черепанов"
+
+#~ msgctxt "EMAIL OF TRANSLATORS"
+#~ msgid "Your emails"
+#~ msgstr "olegbatalov@mail.ru,skull@kde.ru"
+
+#~ msgid "failed"
+#~ msgstr "неудачно"
+
+#~ msgctxt ""
+#~ "Items in Kleo::BackendConfigWidget listview (1: protocol; 2: "
+#~ "implementation name)"
+#~ msgid "%1 (%2)"
+#~ msgstr "%1 (%2)"
+
+#~ msgid "Available Backends"
+#~ msgstr "Доступные модули"
+
+#~ msgid "Confi&gure..."
+#~ msgstr "&Настроить..."
+
+#~ msgid "Rescan"
+#~ msgstr "Повторно сканировать"
+
+#~ msgid "The following problems where encountered during scanning:"
+#~ msgstr "Во время сканирование возникли следующие проблемы:"
+
+#~ msgctxt "@title:window Results of the scanning"
+#~ msgid "Scan Results"
+#~ msgstr "Отчёт о сканировании"
+
+#~ msgid "(Unknown Protocol)"
+#~ msgstr "(неизвестный протокол)"
+
+#~ msgid "Error while initializing plugin \"%1\""
+#~ msgstr "Ошибка инициализации модуля \"%1\""
+
+#~ msgid ""
+#~ "You need a passphrase to unlock the secret key for user:<br/> %1 (retry)"
+#~ msgstr ""
+#~ "Необходимо указать секретное слово для использования ключа пользователем:"
+#~ "<br/> %1 (повтор)"
+
+#~ msgid "You need a passphrase to unlock the secret key for user:<br/> %1"
+#~ msgstr ""
+#~ "Необходимо указать секретное слово для использования ключа пользователем:"
+#~ "<br/> %1"
+
+#~ msgid ""
+#~ "This dialog will reappear every time the passphrase is needed. For a more "
+#~ "secure solution that also allows caching the passphrase, use gpg-agent."
+#~ msgstr ""
+#~ "Этот диалог появляется каждый раз, когда необходимо указать секретное "
+#~ "слово. Если вы не хотите вводить его каждый раз, установите gpg-agent."
+
+#~ msgid "gpg-agent was found in %1, but does not appear to be running."
+#~ msgstr "gpg-agent был найден в %1, но он не является исполняемым файлом."
+
+#~ msgid "gpg-agent is part of gnupg-%1, which you can download from %2"
+#~ msgstr ""
+#~ "gpg-agent является частью пакета gnupg-%1, который можно загрузить с %2"
+
+#~ msgid "For information on how to set up gpg-agent, see %1"
+#~ msgstr "Информация о том, как настроить gpg-agent доступна по адресу %1"
+
+#~ msgid "Enter passphrase:"
+#~ msgstr "Введите секретное слово:"
+
+#~ msgid "Passphrase Dialog"
+#~ msgstr "Диалог секретного слова"
+
+#, fuzzy
+#~ msgid "Configure"
+#~ msgstr "&Настроить..."
+
+#~ msgid "Select Directory Services to Use Here"
+#~ msgstr "Выберите службу каталога"
+
+#~ msgid ""
+#~ "<qt>\n"
+#~ "<h1>X.500 Directory Services</h1>\n"
+#~ "You can use X.500 directory services to retrieve certificates and "
+#~ "certificate revocation lists that are not saved locally. Ask your local "
+#~ "administrator if you want to make use of this feature and are unsure "
+#~ "which directory service you can use.\n"
+#~ "<p>\n"
+#~ "If you do not use a directory service, you can still use local "
+#~ "certificates.\n"
+#~ "</qt>"
+#~ msgstr ""
+#~ "<qt>\n"
+#~ "<h1>Служба каталога X.500</h1>\n"
+#~ "Вы можете использовать службу каталога X.500 для получения сертификатов и "
+#~ "информации об их аннулировании. Обратитесь к вашему администратору если "
+#~ "вы хотите использовать эту службу и не знаете какую именно службу "
+#~ "каталогов вы можете использовать.\n"
+#~ "<p>\n"
+#~ "Если вы не используете службу каталога вы можете использовать локальные "
+#~ "сертификаты.\n"
+#~ "</qt>"
+
+#~ msgid "Port"
+#~ msgstr "Порт"
+
+#~ msgid ""
+#~ "<qt>\n"
+#~ "<h1>Add a Directory Service</h1>\n"
+#~ "By clicking this button, you can select a new directory service to be "
+#~ "used for retrieving certificates and CRLs. You will be asked for the "
+#~ "server name and an optional description.\n"
+#~ "</qt>"
+#~ msgstr ""
+#~ "<qt>\n"
+#~ "<h1>Добавить новую службу</h1>\n"
+#~ "При нажатии на эту кнопку вы можете указать данные о новом сервере службы "
+#~ "каталога, которая используется для получения сертификатов. Вам будет "
+#~ "предложено ввести адрес сервера и некоторые дополнительные параметры.\n"
+#~ "</qt>"
+
+#~ msgid "&Add Service..."
+#~ msgstr "&Добавить службу..."
+
+#~ msgid ""
+#~ "<qt>\n"
+#~ "<h1>Remove Directory Service</h1>\n"
+#~ "By clicking this button, you can remove the currently selected directory "
+#~ "service in the list above. You will have a chance to rethink your "
+#~ "decision before the entry is deleted from the list.\n"
+#~ "</qt>"
+#~ msgstr ""
+#~ "<qt>\n"
+#~ "<h1>Удалить службу каталога</h1>\n"
+#~ "При нажатии на эту кнопку будет удалена выбранная в списке служба "
+#~ "каталога. Хорошо обдумайте этот шаг, так как данные о службе будут "
+#~ "удалены.\n"
+#~ "</qt>"
+
+#~ msgid "&Remove Service"
+#~ msgstr "&Удалить службу"
+
+#~ msgid "<unnamed>"
+#~ msgstr "<безымянный>"
+
+#~ msgid "<none>"
+#~ msgstr "<нет>"
+
+#~ msgid "<unknown>"
+#~ msgstr "<неизвестно>"
+
+#~ msgid "Kpgp/gpg"
+#~ msgstr "Kpgp/gpg"
+
+#~ msgid "Kpgp/pgp v2"
+#~ msgstr "Kpgp/pgp v2"
+
+#~ msgid "Kpgp/pgp v5"
+#~ msgstr "Kpgp/pgp v5"
+
+#~ msgid "Kpgp/pgp v6"
+#~ msgstr "Kpgp/pgp v6"
+
+#~ msgid "This backend does not support S/MIME"
+#~ msgstr "Этот движок не поддерживает S/MIME"
+
+#~ msgid "Please enter your passphrase:"
+#~ msgstr "Введите секретное слово:"
--- /dev/null
+# translation of libkleopatra.po to Slovak
+# Pavol Cvengros <orpheus@hq.alert.sk>, 2003.
+# Stanislav Visnovsky <visnovsky@kde.org>, 2003, 2004.
+# Richard Fric <Richard.Fric@kdemail.net>, 2006, 2009.
+# Roman Paholík <wizzardsk@gmail.com>, 2012, 2014, 2016, 2017.
+msgid ""
+msgstr ""
+"Project-Id-Version: libkleopatra\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2017-07-12 06:56+0200\n"
+"PO-Revision-Date: 2017-07-27 21:24+0100\n"
+"Last-Translator: Roman Paholik <wizzardsk@gmail.com>\n"
+"Language-Team: Slovak <kde-sk@linux.sk>\n"
+"Language: sk\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Lokalize 2.0\n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
+
+#: kleo/checksumdefinition.cpp:107
+#, kde-format
+msgid "Error in checksum definition %1: %2"
+msgstr "Chyba v kontrolnom súčte definície %1: %2"
+
+#: kleo/checksumdefinition.cpp:157
+#, kde-format
+msgid "Cannot use both %f and | in '%1'"
+msgstr "Nedajú sa použiť obe %f a | v '%1'"
+
+#: kleo/checksumdefinition.cpp:167
+#, kde-format
+msgid "Quoting error in '%1' entry"
+msgstr "Citovaná chyba v položke '%1'"
+
+#: kleo/checksumdefinition.cpp:170
+#, kde-format
+msgid "'%1' too complex (would need shell)"
+msgstr "'%1' príliš zložitý (bolo by treba shell)"
+
+#: kleo/checksumdefinition.cpp:174
+#, kde-format
+msgid "'%1' entry is empty/missing"
+msgstr "'%1' položka je prázdna/chýbajúca"
+
+#: kleo/checksumdefinition.cpp:183
+#, kde-format
+msgid "'%1' empty or not found"
+msgstr "'%1' prázne alebo nenájdené"
+
+#: kleo/checksumdefinition.cpp:222
+#, kde-format
+msgid "'id' entry is empty/missing"
+msgstr "'id' položka je prázdna/chýbajúca"
+
+#: kleo/checksumdefinition.cpp:225
+#, kde-format
+msgid "'output-file' entry is empty/missing"
+msgstr "'output-file' položka je prázdna/chýbajúca"
+
+#: kleo/checksumdefinition.cpp:228
+#, kde-format
+msgid "'file-patterns' entry is empty/missing"
+msgstr "'file-patterns' položka je prázdna/chýbajúca"
+
+#: kleo/checksumdefinition.cpp:395
+#, kde-format
+msgid "Caught unknown exception in group %1"
+msgstr "Zachytená neznáma výnimka v skupine %1"
+
+#: kleo/dn.cpp:507
+#, kde-format
+msgid "Common name"
+msgstr "Obvyklé meno"
+
+#: kleo/dn.cpp:508
+#, kde-format
+msgid "Surname"
+msgstr "Priezvisko"
+
+#: kleo/dn.cpp:509
+#, kde-format
+msgid "Given name"
+msgstr "Krstné meno"
+
+#: kleo/dn.cpp:510
+#, kde-format
+msgid "Location"
+msgstr "Umiestnenie"
+
+#: kleo/dn.cpp:511
+#, kde-format
+msgid "Title"
+msgstr "Titul"
+
+#: kleo/dn.cpp:512
+#, kde-format
+msgid "Organizational unit"
+msgstr "Organizačná skupina"
+
+#: kleo/dn.cpp:513
+#, kde-format
+msgid "Organization"
+msgstr "Organizácia"
+
+#: kleo/dn.cpp:514
+#, kde-format
+msgid "Postal code"
+msgstr "PSČ"
+
+#: kleo/dn.cpp:515
+#, kde-format
+msgid "Country code"
+msgstr "Kód krajiny"
+
+#: kleo/dn.cpp:516
+#, kde-format
+msgid "State or province"
+msgstr "Štát alebo provincia"
+
+#: kleo/dn.cpp:517
+#, kde-format
+msgid "Domain component"
+msgstr "Komponent domény"
+
+#: kleo/dn.cpp:518
+#, kde-format
+msgid "Business category"
+msgstr "Firemná kategória"
+
+#: kleo/dn.cpp:519
+#, kde-format
+msgid "Email address"
+msgstr "E-mailová adresa"
+
+#: kleo/dn.cpp:520
+#, kde-format
+msgid "Mail address"
+msgstr "Poštová adresa"
+
+#: kleo/dn.cpp:521
+#, kde-format
+msgid "Mobile phone number"
+msgstr "Mobil"
+
+#: kleo/dn.cpp:522
+#, kde-format
+msgid "Telephone number"
+msgstr "Telefóne číslo"
+
+#: kleo/dn.cpp:523
+#, kde-format
+msgid "Fax number"
+msgstr "Číslo faxu"
+
+#: kleo/dn.cpp:524
+#, kde-format
+msgid "Street address"
+msgstr "Ulica"
+
+#: kleo/dn.cpp:525
+#, kde-format
+msgid "Unique ID"
+msgstr "Unikátne ID"
+
+#: kleo/enum.cpp:57
+#, kde-format
+msgid "Inline OpenPGP (deprecated)"
+msgstr "Vložené OpenPGP (zastaralé)"
+
+#: kleo/enum.cpp:62
+#, kde-format
+msgid "OpenPGP/MIME"
+msgstr "OpenPGP/MIME"
+
+#: kleo/enum.cpp:67 ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "S/MIME"
+msgstr "S/MIME"
+
+#: kleo/enum.cpp:72
+#, kde-format
+msgid "S/MIME Opaque"
+msgstr "S/MIME nepriehľadnosť"
+
+#: kleo/enum.cpp:104
+#, kde-format
+msgid "Any"
+msgstr "Ľubovoľné"
+
+#: kleo/enum.cpp:177
+#, kde-format
+msgid "Never Encrypt"
+msgstr "Nikdy nešifrovať"
+
+#: kleo/enum.cpp:179
+#, kde-format
+msgid "Always Encrypt"
+msgstr "Vždy šifrovať"
+
+#: kleo/enum.cpp:181
+#, kde-format
+msgid "Always Encrypt If Possible"
+msgstr "Vždy šifrovať, ak je to možné"
+
+#: kleo/enum.cpp:183 kleo/enum.cpp:240
+#, kde-format
+msgid "Ask"
+msgstr "Pýtať sa"
+
+#: kleo/enum.cpp:185 kleo/enum.cpp:242
+#, kde-format
+msgid "Ask Whenever Possible"
+msgstr "Pýtať sa, ak je to možné"
+
+#: kleo/enum.cpp:187
+#, kde-kuit-format
+msgctxt "no specific preference"
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>žiadne</placeholder>"
+
+#: kleo/enum.cpp:234
+#, kde-format
+msgid "Never Sign"
+msgstr "Nikdy nepodpisovať"
+
+#: kleo/enum.cpp:236
+#, kde-format
+msgid "Always Sign"
+msgstr "Vždy podpisovať"
+
+#: kleo/enum.cpp:238
+#, kde-format
+msgid "Always Sign If Possible"
+msgstr "Vždy podpisovať, ak je to možné"
+
+#: kleo/enum.cpp:244
+#, kde-format
+msgctxt "no specific preference"
+msgid "<none>"
+msgstr "<žiadne>"
+
+#: kleo/keyfiltermanager.cpp:85
+#, kde-format
+msgid "All Certificates"
+msgstr "Všetky certifikáty"
+
+#: kleo/keyfiltermanager.cpp:100
+#, kde-format
+msgid "My Certificates"
+msgstr "Moje certifikáty"
+
+#: kleo/keyfiltermanager.cpp:118
+#, kde-format
+msgid "Trusted Certificates"
+msgstr "Dôveryhodné certifikáty"
+
+#: kleo/keyfiltermanager.cpp:135
+#, kde-format
+msgid "Fully Trusted Certificates"
+msgstr "Plne dôveryhodné certifikáty"
+
+#: kleo/keyfiltermanager.cpp:152
+#, kde-format
+msgid "Other Certificates"
+msgstr "Ostatné certifikáty"
+
+#: kleo/keyfiltermanager.cpp:166
+#, kde-format
+msgid "VS-compliant Certificates"
+msgstr "VS certifikáty"
+
+#: kleo/keyfiltermanager.cpp:184
+#, kde-format
+msgid "Not validated Certificates"
+msgstr "Neskontrolované certifikáty"
+
+#: ui/auditlogviewer.cpp:49
+#, kde-format
+msgid "View GnuPG Audit Log"
+msgstr "Zobraziť záznam GnuPG Audit"
+
+#: ui/auditlogviewer.cpp:53
+#, kde-format
+msgid "&Copy to Clipboard"
+msgstr "&Kopírovať do schránky"
+
+#: ui/auditlogviewer.cpp:59
+#, kde-format
+msgid "&Save to Disk..."
+msgstr "Uložiť na disk..."
+
+#: ui/auditlogviewer.cpp:95
+#, kde-format
+msgid "Choose File to Save GnuPG Audit Log to"
+msgstr "Vybrať súbor pre uloženie záznamu GnuPG Audit"
+
+#: ui/auditlogviewer.cpp:118
+#, kde-format
+msgid "Could not save to file \"%1\": %2"
+msgstr "Nepodarilo sa uložiť do súboru \"%1\": %2"
+
+#: ui/auditlogviewer.cpp:120
+#, kde-format
+msgid "File Save Error"
+msgstr "Chyba ukladania súboru"
+
+#: ui/cryptoconfigdialog.cpp:44
+#, kde-format
+msgid "Configure GnuPG Backend"
+msgstr "Nastaviť GnuPG Backend"
+
+#: ui/cryptoconfigdialog.cpp:55
+#, kde-format
+msgid "&Reset"
+msgstr "&Vrátiť pôvodné"
+
+#: ui/cryptoconfigmodule.cpp:160
+#, kde-format
+msgid "GpgConf Error"
+msgstr "Chyba GpgConf"
+
+#: ui/cryptoconfigmodule.cpp:216
+#, kde-format
+msgid ""
+"The gpgconf tool used to provide the information for this dialog does not "
+"seem to be installed properly. It did not return any components. Try running "
+"\"%1\" on the command line for more information."
+msgstr ""
+"Nástroj gpgconf používaný na poskytovanie informácií pre tento dialóg vyzerá "
+"nesprávne nainštalovaný. Nevracia žiadne komponenty. Pre viac informácií "
+"skúste spustiť \"%1\" v príkazovom riadku."
+
+#: ui/cryptoconfigmodule.cpp:496
+#, kde-format
+msgctxt ""
+"Translate this to 'yes' or 'no' (use the English words!) depending on "
+"whether your language uses Sentence style capitalisation in GUI labels (yes) "
+"or not (no). Context: We get some backend strings in that have the wrong "
+"capitalizaion (in English, at least) so we need to force the first character "
+"to upper-case. It is this behaviour you can control for your language with "
+"this translation."
+msgid "yes"
+msgstr "yes"
+
+#: ui/cryptoconfigmodule.cpp:546
+#, kde-format
+msgid "0 - None"
+msgstr "0 - Žiadne"
+
+#: ui/cryptoconfigmodule.cpp:547
+#, kde-format
+msgid "1 - Basic"
+msgstr "1 - Základné"
+
+#: ui/cryptoconfigmodule.cpp:548
+#, kde-format
+msgid "2 - Verbose"
+msgstr "2 - Podrobné"
+
+#: ui/cryptoconfigmodule.cpp:549
+#, kde-format
+msgid "3 - More Verbose"
+msgstr "3 - Viac podrobné"
+
+#: ui/cryptoconfigmodule.cpp:550
+#, kde-format
+msgid "4 - All"
+msgstr "4 - Všetko"
+
+#: ui/cryptoconfigmodule.cpp:559
+#, kde-format
+msgid "Set the debugging level to"
+msgstr "Nastaviť úroveň ladenia na"
+
+#: ui/cryptoconfigmodule.cpp:787
+#, kde-format
+msgid "Show..."
+msgstr "Zobraziť..."
+
+#: ui/cryptoconfigmodule.cpp:787 ui/cryptoconfigmodule.cpp:876
+#, kde-format
+msgid "Edit..."
+msgstr "Upraviť..."
+
+#: ui/cryptoconfigmodule.cpp:841
+#, kde-format
+msgid "Configure LDAP Servers"
+msgstr "Nastaviť servery LDAP"
+
+#: ui/cryptoconfigmodule.cpp:862
+#, kde-format
+msgid "None configured"
+msgstr "Ešte nenastavené"
+
+#: ui/cryptoconfigmodule.cpp:864
+#, kde-format
+msgid "1 server configured"
+msgid_plural "%1 servers configured"
+msgstr[0] "Nastavený %1 server"
+msgstr[1] "Nastavené %1 servery"
+msgstr[2] "Nastavených %1 serverov"
+
+#: ui/cryptoconfigmodule.cpp:879
+#, kde-format
+msgid "Use keyserver at"
+msgstr "Použit server kľúčov v"
+
+#: ui/cryptoconfigmodule.cpp:968
+#, kde-format
+msgid "Configure Keyservers"
+msgstr "&Nastaviť servery kľúčov"
+
+#: ui/directoryserviceswidget.cpp:67
+#, kde-format
+msgctxt "default server name, keep it a valid domain name, ie. no spaces"
+msgid "server"
+msgstr "server"
+
+#: ui/directoryserviceswidget.cpp:95
+#, kde-format
+msgid "hkp"
+msgstr "hkp"
+
+#: ui/directoryserviceswidget.cpp:96
+#, kde-format
+msgid "http"
+msgstr "http"
+
+#: ui/directoryserviceswidget.cpp:97
+#, kde-format
+msgid "https"
+msgstr "https"
+
+#: ui/directoryserviceswidget.cpp:98
+#, kde-format
+msgid "ftp"
+msgstr "ftp"
+
+#: ui/directoryserviceswidget.cpp:99
+#, kde-format
+msgid "ftps"
+msgstr "ftps"
+
+#: ui/directoryserviceswidget.cpp:100
+#, kde-format
+msgid "ldap"
+msgstr "ldap"
+
+#: ui/directoryserviceswidget.cpp:101
+#, kde-format
+msgid "ldaps"
+msgstr "ldaps"
+
+#: ui/directoryserviceswidget.cpp:588
+#, kde-format
+msgid "Server Name"
+msgstr "Meno serveru"
+
+#: ui/directoryserviceswidget.cpp:589
+#, kde-format
+msgid "Server Port"
+msgstr "Port servera"
+
+#: ui/directoryserviceswidget.cpp:590
+#, kde-format
+msgid "Base DN"
+msgstr "Základné DN"
+
+#: ui/directoryserviceswidget.cpp:591
+#, kde-format
+msgid "User Name"
+msgstr "Meno užívateľa"
+
+#: ui/directoryserviceswidget.cpp:592
+#, kde-format
+msgid "Password"
+msgstr "Heslo"
+
+#: ui/directoryserviceswidget.cpp:614
+#, kde-format
+msgid "(read-only)"
+msgstr "(iba na čítanie)"
+
+#: ui/directoryserviceswidget.cpp:616
+#, kde-format
+msgctxt "amended tooltip; %1: original tooltip"
+msgid "%1 (read-only)"
+msgstr "%1 (iba na čítanie)"
+
+#: ui/directoryserviceswidget.cpp:739
+#, kde-format
+msgid ""
+"Enter the name or IP address of the server hosting the directory service."
+msgstr "Zadajte meno alebo IP adresu servera hosťujúceho adresárovú službu."
+
+#: ui/directoryserviceswidget.cpp:741
+#, kde-format
+msgid ""
+"<b>(Optional, the default is fine in most cases)</b> Pick the port number "
+"the directory service is listening on."
+msgstr ""
+"<b>(Nepovinné, predvolená hodnota je vo väčšine prípadov vyhovujúca)</b> "
+"Vyberte číslo portu, na ktorom počúva adresárová služba."
+
+#: ui/directoryserviceswidget.cpp:744
+#, kde-format
+msgid ""
+"<b>(Only for LDAP)</b> Enter the base DN for this LDAP server to limit "
+"searches to only that subtree of the directory."
+msgstr ""
+"<b>(Len preLDAP)</b> Zadajte base DN pre tento LDAP server kvôli obmedzeniu "
+"vyhľadávania na podstromy adresára."
+
+#: ui/directoryserviceswidget.cpp:747
+#, kde-format
+msgid "<b>(Optional)</b> Enter your user name here, if needed."
+msgstr ""
+"<b>(Nepovinnél)</b> V prípade potreby tu zadajte vaše používateľské meno."
+
+#: ui/directoryserviceswidget.cpp:749
+#, kde-format
+msgid ""
+"<b>(Optional, not recommended)</b> Enter your password here, if needed. Note "
+"that the password will be saved in the clear in a config file in your home "
+"directory."
+msgstr ""
+"<b>(Voliteľné, neodporučené)</b> V prípade potreby tu zadajte vaše heslo. "
+"Treba poznamenať, že heslo bude uložené voľne v konfiguračnom súbore vo "
+"vašom domovskom adresári."
+
+#. i18n: ectx: property (windowTitle), widget (QWidget, DirectoryServicesWidget)
+#: ui/directoryserviceswidget.ui:14
+#, kde-format
+msgid "Directory Services Configuration"
+msgstr "Nastavenie adresárových služieb"
+
+#. i18n: ectx: property (text), widget (QLabel, pgpKSLabel)
+#: ui/directoryserviceswidget.ui:22
+#, kde-format
+msgid "OpenPGP Keyserver:"
+msgstr "Server kľúčov OpenPGP:"
+
+#. i18n: ectx: property (title), widget (QGroupBox, x500LA)
+#: ui/directoryserviceswidget.ui:35
+#, kde-format
+msgid "X509 Directory services:"
+msgstr "Adresárové služby X509:"
+
+#. i18n: ectx: property (whatsThis), widget (QTreeView, treeView)
+#: ui/directoryserviceswidget.ui:43
+#, kde-format
+msgid ""
+"This is a list of all directory services that are configured for use with "
+"X.509."
+msgstr ""
+"Toto je zoznam všetkých adresárových služieb, ktoré sú nastavené pre "
+"použitie s X.509."
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:70
+#, kde-format
+msgid "Click to add a service"
+msgstr "Kliknutím pridajte službu"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:73
+#, kde-format
+msgid ""
+"Click this button to create a new directory service entry as a clone of the "
+"currently selected one (or with default values, if no other is selected). "
+"You can then configure details in the table on the left hand."
+msgstr ""
+"Kliknite na toto tlačidlo pre vytvorenie novej adresárovej služby ako klonu "
+"aktuálne vybranej (alebo s predvolenými hodnotami, ak nie je žiadna "
+"vybraná). Podrobnosti môžete potom nastaviť v tabuľke po ľavej ruke. "
+
+#. i18n: ectx: property (text), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:76
+#, kde-format
+msgid "New"
+msgstr "Nové"
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:92
+#, kde-format
+msgid "Click to remove the currently selected service"
+msgstr "Kliknutím odstránite momentálne označenú službu"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:95
+#, kde-format
+msgid ""
+"Click this button to remove the currently selected directory service. The "
+"change will only take effect once you acknowledge the main configuration "
+"dialog."
+msgstr ""
+"Kliknite na toto tlačidlo pre odstránenie aktuálne vybranej adresárovej "
+"služby. Zmena sa prejaví len čo potvrdíte hlavný konfiguračný dialóg."
+
+#. i18n: ectx: property (text), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:98
+#, kde-format
+msgid "Delete"
+msgstr "Odstrániť"
+
+#. i18n: ectx: property (whatsThis), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:128
+#, kde-format
+msgid ""
+"Use this option to switch display of username and password information on or "
+"off in the above table."
+msgstr ""
+"Použiť túto voľbu pre zapnutie alebo vypnutie zobrazovania informácií o "
+"používateľskom mene a hesle vo vyššie uvedenej tabuľke. "
+
+#. i18n: ectx: property (text), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:131
+#, kde-format
+msgid "Show user and password information"
+msgstr "Zobraziť informácie o používateľovi a hesle"
+
+#: ui/dnattributeorderconfigwidget.cpp:73
+#, kde-format
+msgid "Description"
+msgstr "Popis"
+
+#: ui/dnattributeorderconfigwidget.cpp:91
+#, kde-format
+msgid "Available attributes:"
+msgstr "Dostupné atribúty:"
+
+#: ui/dnattributeorderconfigwidget.cpp:92
+#, kde-format
+msgid "Current attribute order:"
+msgstr "Aktuálne poradie atribútov:"
+
+#: ui/dnattributeorderconfigwidget.cpp:112
+#, kde-format
+msgid "All others"
+msgstr "Všetky ostatné"
+
+#: ui/dnattributeorderconfigwidget.cpp:129
+#, kde-format
+msgid "Move to top"
+msgstr "Presunúť hore"
+
+#: ui/dnattributeorderconfigwidget.cpp:130
+#, kde-format
+msgid "Move one up"
+msgstr "Presunúť o jeden vyššie"
+
+#: ui/dnattributeorderconfigwidget.cpp:131
+#, kde-format
+msgid "Remove from current attribute order"
+msgstr "Odstrániť z aktuálneho poradia atribútov"
+
+#: ui/dnattributeorderconfigwidget.cpp:132
+#, kde-format
+msgid "Add to current attribute order"
+msgstr "Pridať do aktuálneho úpradoa atribútov"
+
+#: ui/dnattributeorderconfigwidget.cpp:133
+#, kde-format
+msgid "Move one down"
+msgstr "Presunúť o jeden nižšie"
+
+#: ui/dnattributeorderconfigwidget.cpp:134
+#, kde-format
+msgid "Move to bottom"
+msgstr "Presunúť dolu"
+
+#: ui/keyapprovaldialog.cpp:87
+#, kde-kuit-format
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>žiadne</placeholder>"
+
+#: ui/keyapprovaldialog.cpp:88
+#, kde-format
+msgid "Never Encrypt with This Key"
+msgstr "Nikdy týmto kľúčom nešifrovať"
+
+#: ui/keyapprovaldialog.cpp:89
+#, kde-format
+msgid "Always Encrypt with This Key"
+msgstr "Vždy šifrovať týmto kľúčom"
+
+#: ui/keyapprovaldialog.cpp:90
+#, kde-format
+msgid "Encrypt Whenever Encryption is Possible"
+msgstr "Šifrovať vždy, keď je šifrovanie k dispozícii"
+
+#: ui/keyapprovaldialog.cpp:91
+#, kde-format
+msgid "Always Ask"
+msgstr "Vždy sa pýtať"
+
+#: ui/keyapprovaldialog.cpp:92
+#, kde-format
+msgid "Ask Whenever Encryption is Possible"
+msgstr "Pýtať sa vždy, ak je možné šifrovanie"
+
+#: ui/keyapprovaldialog.cpp:113
+#, kde-format
+msgid "Encryption Key Approval"
+msgstr "Schválenie šifrovacieho kľúča"
+
+#: ui/keyapprovaldialog.cpp:129
+#, kde-format
+msgid "The following keys will be used for encryption:"
+msgstr "Pre šifrovanie sa použijú tieto kľúče:"
+
+#: ui/keyapprovaldialog.cpp:145
+#, kde-format
+msgid "Your keys:"
+msgstr "Váše kľúče:"
+
+#: ui/keyapprovaldialog.cpp:157
+#, kde-format
+msgid "Recipient:"
+msgstr "Adresát:"
+
+#: ui/keyapprovaldialog.cpp:162
+#, kde-format
+msgid "Encryption keys:"
+msgstr "Šifrovacie kľúče:"
+
+#: ui/keyapprovaldialog.cpp:169
+#, kde-format
+msgid "Encryption preference:"
+msgstr "Preferované šifrovanie:"
+
+#: ui/keyrequester.cpp:118
+#, kde-format
+msgid "Clear"
+msgstr "Vyčistiť"
+
+#: ui/keyrequester.cpp:121
+#, kde-format
+msgid "Change..."
+msgstr "Zmeniť..."
+
+#: ui/keyrequester.cpp:232 ui/keyselectiondialog.cpp:256
+#, kde-kuit-format
+msgid "<placeholder>unknown</placeholder>"
+msgstr "<placeholder>neznáme</placeholder>"
+
+#: ui/keyrequester.cpp:246 ui/keyselectiondialog.cpp:657
+#, kde-format
+msgid ""
+"<qt><p>An error occurred while fetching the keys from the backend:</p><p><b>"
+"%1</b></p></qt>"
+msgstr ""
+"<qt><p>Nastala chyba počas získavania kľúčov z backendu:</p><p><b>%1</b></"
+"p></qt>"
+
+#: ui/keyrequester.cpp:251 ui/keyrequester.cpp:283 ui/keyrequester.cpp:306
+#: ui/keyselectiondialog.cpp:630 ui/keyselectiondialog.cpp:662
+#, kde-format
+msgid "Key Listing Failed"
+msgstr "Výpis kľúčov zlyhal"
+
+#: ui/keyrequester.cpp:281
+#, kde-format
+msgid ""
+"The OpenPGP backend does not support listing keys. Check your installation."
+msgstr "Backend OpenPGP nepodporuje výpis kľúčov. Overte vašu inštaláciu."
+
+#: ui/keyrequester.cpp:304
+#, kde-format
+msgid ""
+"The S/MIME backend does not support listing keys. Check your installation."
+msgstr "Backend S/MIME nepodporuje výpis kľúčov. Overte vašu inštaláciu."
+
+#: ui/keyrequester.cpp:426
+#, kde-format
+msgid "OpenPGP Key Selection"
+msgstr "Výber OpenPGP kľúča"
+
+#: ui/keyrequester.cpp:427
+#, kde-format
+msgid "Please select an OpenPGP key to use."
+msgstr "Prosím, vyberte si jeden OpenPGP kľúč pre používanie."
+
+#: ui/keyrequester.cpp:429
+#, kde-format
+msgid "S/MIME Key Selection"
+msgstr "Výber kľúča S/MIME"
+
+#: ui/keyrequester.cpp:430
+#, kde-format
+msgid "Please select an S/MIME key to use."
+msgstr "Prosím, vyberte kľúč S/MIME, ktorý sa má použiť."
+
+#: ui/keyrequester.cpp:432
+#, kde-format
+msgid "Key Selection"
+msgstr "Výber kľúča"
+
+#: ui/keyrequester.cpp:433
+#, kde-format
+msgid "Please select an (OpenPGP or S/MIME) key to use."
+msgstr "Prosím, vyberte kľúč OpenPGP alebo S/MIME, ktorý sa má použiť."
+
+#: ui/keyselectioncombo.cpp:195
+#, kde-format
+msgctxt "Name <email> (validity, type, created: date)"
+msgid "%1 (%2, %3, created: %4)"
+msgstr "%1 (%2, %3, vytvorené: %4)"
+
+#: ui/keyselectioncombo.cpp:196
+#, kde-format
+msgctxt "Name <email>"
+msgid "%1 <%2>"
+msgstr "%1 <%2>"
+
+#: ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "OpenPGP"
+msgstr "OpenPGP"
+
+#: ui/keyselectioncombo.cpp:347
+#, kde-format
+msgid "Loading keys ..."
+msgstr "Získavam kľúče..."
+
+#: ui/keyselectiondialog.cpp:98
+#, kde-format
+msgid "The key is not valid."
+msgstr "Kľúč nie je platný."
+
+#: ui/keyselectiondialog.cpp:106
+#, kde-format
+msgid "The key is expired."
+msgstr "Kľúč stratil platnosť."
+
+#: ui/keyselectiondialog.cpp:110
+#, kde-format
+msgid "The key is revoked."
+msgstr "Kľuč je odvolaný."
+
+#: ui/keyselectiondialog.cpp:114
+#, kde-format
+msgid "The key is disabled."
+msgstr "Kľúč je zakázaný."
+
+#: ui/keyselectiondialog.cpp:122
+#, kde-format
+msgid "The key is not designated for encryption."
+msgstr "Kľúč nie je určený na šifrovanie."
+
+#: ui/keyselectiondialog.cpp:128
+#, kde-format
+msgid "The key is not designated for signing."
+msgstr "Kľúč nie je navrhnutý na podpisovanie."
+
+#: ui/keyselectiondialog.cpp:134
+#, kde-format
+msgid "The key is not designated for certifying."
+msgstr "Kľúč nie je navrhovaný na certifikáciu."
+
+#: ui/keyselectiondialog.cpp:140
+#, kde-format
+msgid "The key is not designated for authentication."
+msgstr "Kľúč nie je navrhnutý na overovanie pravosati."
+
+#: ui/keyselectiondialog.cpp:148
+#, kde-format
+msgid "The key is not secret."
+msgstr "Kľúč nie je tajný."
+
+#: ui/keyselectiondialog.cpp:163
+#, kde-format
+msgid "The key is not trusted enough."
+msgstr "Kľúč nie je dostatočne dôveryhodný."
+
+#: ui/keyselectiondialog.cpp:169
+#, kde-format
+msgid "The key can be used."
+msgstr "Kľúč nie je možné použiť."
+
+#: ui/keyselectiondialog.cpp:230
+#, kde-format
+msgid "Key ID"
+msgstr "ID kľúča"
+
+#: ui/keyselectiondialog.cpp:231
+#, kde-format
+msgid "User ID"
+msgstr "ID užívateľa"
+
+#: ui/keyselectiondialog.cpp:279
+#, kde-format
+msgid "never"
+msgstr "nikdy"
+
+#: ui/keyselectiondialog.cpp:289 ui/keyselectiondialog.cpp:291
+#: ui/keyselectiondialog.cpp:300 ui/keyselectiondialog.cpp:302
+#, kde-format
+msgid "unknown"
+msgstr "neznámy"
+
+#: ui/keyselectiondialog.cpp:289
+#, kde-format
+msgid "OpenPGP key for <b>%1</b>"
+msgstr "OpenPGP kľúč pre <b>%1</b>"
+
+#: ui/keyselectiondialog.cpp:291
+#, kde-format
+msgid "S/MIME key for <b>%1</b>"
+msgstr "S/MIME kľúč pre <b>%1</b>"
+
+#: ui/keyselectiondialog.cpp:298
+#, kde-format
+msgctxt "Key creation date"
+msgid "Created"
+msgstr "Vytvorené"
+
+#: ui/keyselectiondialog.cpp:299
+#, kde-format
+msgctxt "Key Expiration date"
+msgid "Expiry"
+msgstr "Vypršanie"
+
+#: ui/keyselectiondialog.cpp:300
+#, kde-format
+msgctxt "Key fingerprint"
+msgid "Fingerprint"
+msgstr "Odtlačok"
+
+#: ui/keyselectiondialog.cpp:302
+#, kde-format
+msgctxt "Key issuer"
+msgid "Issuer"
+msgstr "Vydavateľ"
+
+#: ui/keyselectiondialog.cpp:304
+#, kde-format
+msgctxt "Key status"
+msgid "Status"
+msgstr "Stav"
+
+#: ui/keyselectiondialog.cpp:456
+#, kde-format
+msgid "Search for &External Certificates"
+msgstr "Vyhľadať &Externé certifikáty"
+
+#: ui/keyselectiondialog.cpp:470
+#, kde-format
+msgid "&Search for:"
+msgstr "&Hľadať:"
+
+#: ui/keyselectiondialog.cpp:494
+#, kde-format
+msgid "&Remember choice"
+msgstr "Za&pamätať výber"
+
+#: ui/keyselectiondialog.cpp:497
+#, kde-format
+msgid ""
+"<qt><p>If you check this box your choice will be stored and you will not be "
+"asked again.</p></qt>"
+msgstr ""
+"<qt><p>Ak označíte túto voľbu, váš výber sa uloží a už ho nebudete musieť "
+"opakovať.</p></qt>"
+
+#: ui/keyselectiondialog.cpp:509
+#, kde-format
+msgid "&Reread Keys"
+msgstr "&Znovu načítať kľúč"
+
+#: ui/keyselectiondialog.cpp:510
+#, kde-format
+msgid "&Start Certificate Manager"
+msgstr "&Spustiť manažéra certifikátov"
+
+#: ui/keyselectiondialog.cpp:628
+#, kde-format
+msgid "No backends found for listing keys. Check your installation."
+msgstr ""
+"Pre zoznam kľúčov neboli nájdené nástroje. Prosím, overte si inštaláciu."
+
+#: ui/keyselectiondialog.cpp:644
+#, kde-format
+msgid "Could not start certificate manager; please check your installation."
+msgstr "Nemôžem spustiť správcu certifikátov. Prosím overte si inštaláciu."
+
+#: ui/keyselectiondialog.cpp:646
+#, kde-format
+msgid "Certificate Manager Error"
+msgstr "Chyba manažéra certifikátov"
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Checking selected keys..."
+msgstr "Kontrolujem vybrané kľúče..."
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Fetching keys..."
+msgstr "Získavam kľúče..."
+
+#: ui/keyselectiondialog.cpp:731
+#, kde-format
+msgid ""
+"<qt>One backend returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgid_plural ""
+"<qt>%1 backends returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgstr[0] ""
+"<qt>Jeden backend vrátil orezaný výstup.<p>Nebudú zobrazené všetky dostupné "
+"kľúče</p></qt>"
+msgstr[1] ""
+"<qt>%1 backendy vrátili orezaný výstup.<p>Nebudú zobrazené všetky dostupné "
+"kľúče.</p></qt>"
+msgstr[2] ""
+"<qt>%1 backendov vrátilo orezaný výstup.<p>Nebudú zobrazené všetky dostupné "
+"kľúče.</p></qt>"
+
+#: ui/keyselectiondialog.cpp:736
+#, kde-format
+msgid "Key List Result"
+msgstr "Výsledok zoznamu kľúčov"
+
+#: ui/keyselectiondialog.cpp:856
+#, kde-format
+msgid "Recheck Key"
+msgstr "Znovu overiť kľúč"
+
+#: ui/messagebox.cpp:71
+#, kde-format
+msgid "Your system does not have support for GnuPG Audit Logs"
+msgstr "Váš systém nemá podporu pre záznamy GnuPG Audit"
+
+#: ui/messagebox.cpp:72
+#, kde-format
+msgid "System Error"
+msgstr "Systémová chyba"
+
+#: ui/messagebox.cpp:79
+#, kde-format
+msgid ""
+"An error occurred while trying to retrieve the GnuPG Audit Log:\n"
+"%1"
+msgstr ""
+"Nastala chyba počas pokusu o získanie záznamu GnuPG Audit:\n"
+"%1"
+
+#: ui/messagebox.cpp:81
+#, kde-format
+msgid "GnuPG Audit Log Error"
+msgstr "Chyba záznamuGnuPG Audit"
+
+#: ui/messagebox.cpp:88
+#, kde-format
+msgid "No GnuPG Audit Log available for this operation."
+msgstr "Pre túto operáciu nie je dostupný záznam GnuPG Audit."
+
+#: ui/messagebox.cpp:89
+#, kde-format
+msgid "No GnuPG Audit Log"
+msgstr "Žiadny záznamGnuPG Audit"
+
+#: ui/messagebox.cpp:109 ui/messagebox.cpp:115
+#, kde-format
+msgid "GnuPG Audit Log Viewer"
+msgstr "Prehliadač záznamov GnuPG Audit"
+
+#: ui/messagebox.cpp:121
+#, kde-format
+msgid "Signing failed: %1"
+msgstr "Podpis zlyhal: %1"
+
+#: ui/messagebox.cpp:122
+#, kde-format
+msgid "Signing successful"
+msgstr "Podpis úspešný"
+
+#: ui/messagebox.cpp:133
+#, kde-format
+msgid "Encryption failed: %1"
+msgstr "Šifrovanie zlyhalo: %1"
+
+#: ui/messagebox.cpp:134
+#, kde-format
+msgid "Encryption successful"
+msgstr "Šifrovanie úspešné"
+
+#: ui/messagebox.cpp:155
+#, kde-format
+msgid "Signing Result"
+msgstr "Výsledok podpisu"
+
+#: ui/messagebox.cpp:167
+#, kde-format
+msgid "Signing Error"
+msgstr "Chyba podpisu"
+
+#: ui/messagebox.cpp:179 ui/messagebox.cpp:203
+#, kde-format
+msgid "Encryption Result"
+msgstr "Výsledok šifrovania"
+
+#: ui/messagebox.cpp:191 ui/messagebox.cpp:215
+#, kde-format
+msgid "Encryption Error"
+msgstr "Chyba šifrovania"
+
+#: ui/messagebox.cpp:263
+#, kde-format
+msgid "&Show Audit Log"
+msgstr "&Zobraziť záznam Audit"
+
+#: ui/progressdialog.cpp:91
+#, kde-format
+msgid "%1: %2"
+msgstr "%1: %2"
+
+#~ msgctxt "New X.509 Directory Server"
+#~ msgid "X.509"
+#~ msgstr "X.509"
+
+#~ msgctxt "New OpenPGP Directory Server"
+#~ msgid "OpenPGP"
+#~ msgstr "OpenPGP"
+
+#~ msgid "Scheme"
+#~ msgstr "Schéma"
+
+#~ msgid "X.509"
+#~ msgstr "X.509"
+
+#~ msgid ""
+#~ "Select the access scheme (scheme) that the directory service is available "
+#~ "through."
+#~ msgstr ""
+#~ "Vybrať prístupovú schému (schému), cez ktorú je dostupná adresárová "
+#~ "služba."
+
+#~ msgid ""
+#~ "Check this column if this directory service is providing S/MIME (X.509) "
+#~ "certificates."
+#~ msgstr ""
+#~ "Zaškrtnúť tento stĺpec, ak táto adresárová služba poskytuje certifikáty S/"
+#~ "MIME (X.509)."
+
+#~ msgid ""
+#~ "Check this column if this directory service is providing OpenPGP "
+#~ "certificates."
+#~ msgstr ""
+#~ "Zaškrtnúť tento stĺpec, ak táto adresárová služba poskytuje certifikáty "
+#~ "OpenPGP."
+
+#~ msgid "0 - None (no debugging at all)"
+#~ msgstr "0 - None (žiadne ladenie)"
+
+#~ msgid "1 - Basic (some basic debug messages)"
+#~ msgstr "1 - Basic (niektoré základné ladiace správy)"
+
+#~ msgid "2 - Advanced (more verbose debug messages)"
+#~ msgstr "2 - Advanced (podrobnejšie ladiace správy)"
+
+#~ msgid "3 - Expert (even more detailed messages)"
+#~ msgstr "3 - Expert (ešte podrobnejšie správy)"
+
+#~ msgid "4 - Guru (all of the debug messages you can get)"
+#~ msgstr "4 - Guru (všetky ladiace správy, ktoré možete získať)"
+
+#~ msgid "General"
+#~ msgstr "Všeobecne"
+
+#~ msgid "Chiasmus"
+#~ msgstr "Chiasmus"
+
+#~ msgid "Chiasmus command line tool"
+#~ msgstr "Chiasmus nástroj príkazového riadkul"
+
+#~ msgid "Unsupported protocol \"%1\""
+#~ msgstr "Nepodporovaný protokol \"%1\""
+
+#~ msgid "File \"%1\" does not exist or is not executable."
+#~ msgstr "Súbor \"%1\" neexistuje alebo sa nedá spustiť."
+
+#~ msgid "Output from chiasmus"
+#~ msgstr "Výstup z chiasmus"
+
+#~ msgid "Decryption failed: %1"
+#~ msgstr "Dešifrovanie zlyhalo: %1"
+
+#~ msgid ""
+#~ "The following was received on stderr:\n"
+#~ "%1"
+#~ msgstr ""
+#~ "Na stderr prišlo nasledujúce:\n"
+#~ "%1"
+
+#~ msgid "Failed to load %1: %2"
+#~ msgstr "Načítanie zlyhalo %1: %2"
+
+#~ msgid "Library does not contain the symbol \"Chiasmus\"."
+#~ msgstr "Knižnica neobsahuje symbol \"Chiasmus\"."
+
+#~ msgid "Scanning directory %1..."
+#~ msgstr "Prehľadáva sa priečinok %1..."
+
+#~ msgid "GpgME"
+#~ msgstr "GpgME"
+
+#~ msgid "GPGME was compiled without support for %1."
+#~ msgstr "GPGME neobsahuje podporu pre %1."
+
+#~ msgid "Engine %1 is not installed properly."
+#~ msgstr "Nástroj %1 nie je správne nainštalovaný."
+
+#~ msgid "Engine %1 version %2 installed, but at least version %3 is required."
+#~ msgstr ""
+#~ "Nainštalovaný nástroj %1 verzie %2, ale požadovaná je verzia aspoň %3."
+
+#~ msgid "Unknown problem with engine for protocol %1."
+#~ msgstr "Pre protokol %1 sa vyskytol neznámy problém s nástrojom."
+
+#~ msgid "program terminated unexpectedly"
+#~ msgstr "program neočakávane skončil"
+
+#~ msgid "program not found or cannot be started"
+#~ msgstr "program sa nanašiel alebo sa ho nepodarilo spustiť"
+
+#~ msgid "<qt>Failed to execute gpgconf:<p>%1</p></qt>"
+#~ msgstr "<qt>Zlyhalo spustenie gpgconf:<p>%1</p></qt>"
+
+#~ msgid ""
+#~ "Could not start gpgconf.\n"
+#~ "Check that gpgconf is in the PATH and that it can be started."
+#~ msgstr ""
+#~ "Nepodarilo sa spustiť gpgconf\n"
+#~ "Overte, či je gpgconf v PATH a či je možné ho spustiť."
+
+#~ msgid "Error from gpgconf while saving configuration: %1"
+#~ msgstr "Chyba z gpgconf počas ukladania nastavenia: %1"
+
+#~ msgid "Generating DSA key..."
+#~ msgstr "Generujem kľúč DSA..."
+
+#~ msgid "Generating ElGamal key..."
+#~ msgstr "Generujem kľúč EIGamal..."
+
+#~ msgid "Searching for a large prime number..."
+#~ msgstr "Hľadanie veľkého prvočísla..."
+
+#~ msgid ""
+#~ "Waiting for new entropy from random number generator (you might want to "
+#~ "exercise the harddisks or move the mouse)..."
+#~ msgstr ""
+#~ "Čakanie na novú entropiu z generátora náhodných čísel (možno budete "
+#~ "chcieť používať pevné disky alebo hýbať myšou)..."
+
+#~ msgid "Please wait..."
+#~ msgstr "Prosím, čakajte..."
+
+#~ msgid ""
+#~ "Starting gpg-agent (you should consider starting a global instance "
+#~ "instead)..."
+#~ msgstr ""
+#~ "Spúšťam gpg-agent (mali by ste zvážiť spúšťanie globálneho procesu)..."
+
+#~ msgid "While scanning for %1 support in backend %2:"
+#~ msgstr "Počas hľadania podpory pre %1 v backend %2:"
+
+#~ msgctxt "progress info: \"%1 of %2\""
+#~ msgid "%1/%2"
+#~ msgstr "%1/%2"
+
+#~ msgid ""
+#~ "OpenPGP key for %1\n"
+#~ "Created: %2\n"
+#~ "Expiry: %3\n"
+#~ "Fingerprint: %4"
+#~ msgstr ""
+#~ "Kľúč OpenPGP pre %1\n"
+#~ "Vytvorený: %2\n"
+#~ "Platnosť do: %3\n"
+#~ "Fingerprint: %4"
+
+#~ msgid ""
+#~ "S/MIME key for %1\n"
+#~ "Created: %2\n"
+#~ "Expiry: %3\n"
+#~ "Fingerprint: %4\n"
+#~ "Issuer: %5"
+#~ msgstr ""
+#~ "Kľúč S/MIME pre %1\n"
+#~ "Vytvorený: %2\n"
+#~ "Platnosť do: %3\n"
+#~ "Fingerprint: %4\n"
+#~ "Vydal: %5"
+
+#~ msgid "Copy Audit Log to Clipboard"
+#~ msgstr "Skopírovať záznam Audit do schránky."
--- /dev/null
+# translation of libkleopatra.po to Slovenian
+# Translation of libkleopatra.po to Slovenian
+# $Id: libkleopatra.po 1493420 2017-07-18 03:51:51Z scripty $
+# $Source$
+# Gregor Rakar <gregor.rakar@kiss.si>, 2004, 2005.
+# Andrej Vernekar <andrej.vernekar@moj.net>, 2004, 2005, 2009.
+# Jure Repinc <jlp@holodeck1.com>, 2006, 2013.
+# Andrej Mernik <andrejm@ubuntu.si>, 2014, 2016, 2017.
+msgid ""
+msgstr ""
+"Project-Id-Version: libkleopatra\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2017-07-12 06:56+0200\n"
+"PO-Revision-Date: 2017-07-17 20:08+0100\n"
+"Last-Translator: Andrej Mernik <andrejm@ubuntu.si>\n"
+"Language-Team: Slovenian <lugos-slo@lugos.si>\n"
+"Language: sl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Lokalize 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"
+
+#: kleo/checksumdefinition.cpp:107
+#, kde-format
+msgid "Error in checksum definition %1: %2"
+msgstr "Napaka v določilu %1 nadzorne vsote: %2"
+
+#: kleo/checksumdefinition.cpp:157
+#, kde-format
+msgid "Cannot use both %f and | in '%1'"
+msgstr "V »%1« ni mogoče hkrati uporabiti %f in |"
+
+#: kleo/checksumdefinition.cpp:167
+#, kde-format
+msgid "Quoting error in '%1' entry"
+msgstr "Napaka navajanja v vnosu »%1«"
+
+#: kleo/checksumdefinition.cpp:170
+#, kde-format
+msgid "'%1' too complex (would need shell)"
+msgstr "»%1« je preveč zapleten (potrebna bi bila lupina)"
+
+#: kleo/checksumdefinition.cpp:174
+#, kde-format
+msgid "'%1' entry is empty/missing"
+msgstr "Vnos »%1« je prazen ali pa manjka"
+
+#: kleo/checksumdefinition.cpp:183
+#, kde-format
+msgid "'%1' empty or not found"
+msgstr "»%1« je prazen ali ni bil najden"
+
+#: kleo/checksumdefinition.cpp:222
+#, kde-format
+msgid "'id' entry is empty/missing"
+msgstr "Vnos »id« je prazen ali pa manjka"
+
+#: kleo/checksumdefinition.cpp:225
+#, kde-format
+msgid "'output-file' entry is empty/missing"
+msgstr "Vnos »output-file« je prazen ali pa manjka"
+
+#: kleo/checksumdefinition.cpp:228
+#, kde-format
+msgid "'file-patterns' entry is empty/missing"
+msgstr "Vnos »file-patterns« je prazen ali pa manjka"
+
+#: kleo/checksumdefinition.cpp:395
+#, kde-format
+msgid "Caught unknown exception in group %1"
+msgstr "Ujeta neznana izjema v skupini %1"
+
+#: kleo/dn.cpp:507
+#, kde-format
+msgid "Common name"
+msgstr "Splošno ime"
+
+#: kleo/dn.cpp:508
+#, kde-format
+msgid "Surname"
+msgstr "Priimek"
+
+#: kleo/dn.cpp:509
+#, kde-format
+msgid "Given name"
+msgstr "Dano ime"
+
+#: kleo/dn.cpp:510
+#, kde-format
+msgid "Location"
+msgstr "Kraj"
+
+#: kleo/dn.cpp:511
+#, kde-format
+msgid "Title"
+msgstr "Naziv"
+
+#: kleo/dn.cpp:512
+#, kde-format
+msgid "Organizational unit"
+msgstr "Organizacijska enota"
+
+#: kleo/dn.cpp:513
+#, kde-format
+msgid "Organization"
+msgstr "Organizacija"
+
+#: kleo/dn.cpp:514
+#, kde-format
+msgid "Postal code"
+msgstr "Poštna številka"
+
+#: kleo/dn.cpp:515
+#, kde-format
+msgid "Country code"
+msgstr "Koda države"
+
+#: kleo/dn.cpp:516
+#, kde-format
+msgid "State or province"
+msgstr "Dežela ali pokrajina"
+
+#: kleo/dn.cpp:517
+#, kde-format
+msgid "Domain component"
+msgstr "Sestavni del domene"
+
+#: kleo/dn.cpp:518
+#, kde-format
+msgid "Business category"
+msgstr "Poslovna kategorija"
+
+#: kleo/dn.cpp:519
+#, kde-format
+msgid "Email address"
+msgstr "E-poštni naslov"
+
+#: kleo/dn.cpp:520
+#, kde-format
+msgid "Mail address"
+msgstr "Poštni naslov"
+
+#: kleo/dn.cpp:521
+#, kde-format
+msgid "Mobile phone number"
+msgstr "Številka prenosnega telefona"
+
+#: kleo/dn.cpp:522
+#, kde-format
+msgid "Telephone number"
+msgstr "Telefonska številka"
+
+#: kleo/dn.cpp:523
+#, kde-format
+msgid "Fax number"
+msgstr "Številka faksa"
+
+#: kleo/dn.cpp:524
+#, kde-format
+msgid "Street address"
+msgstr "Ulični naslov"
+
+#: kleo/dn.cpp:525
+#, kde-format
+msgid "Unique ID"
+msgstr "Edinstven ID"
+
+#: kleo/enum.cpp:57
+#, kde-format
+msgid "Inline OpenPGP (deprecated)"
+msgstr "Znotrajvrstični OpenPGP (opuščeno)"
+
+#: kleo/enum.cpp:62
+#, kde-format
+msgid "OpenPGP/MIME"
+msgstr "OpenPGP/MIME"
+
+#: kleo/enum.cpp:67 ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "S/MIME"
+msgstr "S/MIME"
+
+#: kleo/enum.cpp:72
+#, kde-format
+msgid "S/MIME Opaque"
+msgstr "S/MIME Opaque"
+
+#: kleo/enum.cpp:104
+#, kde-format
+msgid "Any"
+msgstr "Katerikoli"
+
+#: kleo/enum.cpp:177
+#, kde-format
+msgid "Never Encrypt"
+msgstr "Nikoli ne šifriraj"
+
+#: kleo/enum.cpp:179
+#, kde-format
+msgid "Always Encrypt"
+msgstr "Vedno šifriraj"
+
+#: kleo/enum.cpp:181
+#, kde-format
+msgid "Always Encrypt If Possible"
+msgstr "Vedno šifriraj, če je mogoče"
+
+#: kleo/enum.cpp:183 kleo/enum.cpp:240
+#, kde-format
+msgid "Ask"
+msgstr "Vprašaj"
+
+#: kleo/enum.cpp:185 kleo/enum.cpp:242
+#, kde-format
+msgid "Ask Whenever Possible"
+msgstr "Vprašaj, vedno ko je mogoče"
+
+#: kleo/enum.cpp:187
+#, kde-kuit-format
+msgctxt "no specific preference"
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>brez</placeholder>"
+
+#: kleo/enum.cpp:234
+#, kde-format
+msgid "Never Sign"
+msgstr "Nikoli ne podpiši"
+
+#: kleo/enum.cpp:236
+#, kde-format
+msgid "Always Sign"
+msgstr "Vedno podpiši"
+
+#: kleo/enum.cpp:238
+#, kde-format
+msgid "Always Sign If Possible"
+msgstr "Vedno podpiši, če je mogoče"
+
+#: kleo/enum.cpp:244
+#, kde-format
+msgctxt "no specific preference"
+msgid "<none>"
+msgstr "<brez>"
+
+#: kleo/keyfiltermanager.cpp:85
+#, kde-format
+msgid "All Certificates"
+msgstr "Vsa potrdila"
+
+#: kleo/keyfiltermanager.cpp:100
+#, kde-format
+msgid "My Certificates"
+msgstr "Moja potrdila"
+
+#: kleo/keyfiltermanager.cpp:118
+#, kde-format
+msgid "Trusted Certificates"
+msgstr "Zaupanja vredna potrdila"
+
+#: kleo/keyfiltermanager.cpp:135
+#, kde-format
+msgid "Fully Trusted Certificates"
+msgstr "Potrdila, ki jim polno zaupate"
+
+#: kleo/keyfiltermanager.cpp:152
+#, kde-format
+msgid "Other Certificates"
+msgstr "Druga potrdila"
+
+#: kleo/keyfiltermanager.cpp:166
+#, fuzzy, kde-format
+#| msgid "All Certificates"
+msgid "VS-compliant Certificates"
+msgstr "Vsa potrdila"
+
+#: kleo/keyfiltermanager.cpp:184
+#, kde-format
+msgid "Not validated Certificates"
+msgstr "Nepotrjena potrdila"
+
+#: ui/auditlogviewer.cpp:49
+#, kde-format
+msgid "View GnuPG Audit Log"
+msgstr "Ogled dnevnika presoje varnosti GnuPG"
+
+#: ui/auditlogviewer.cpp:53
+#, kde-format
+msgid "&Copy to Clipboard"
+msgstr "&Kopiraj v odložišče"
+
+#: ui/auditlogviewer.cpp:59
+#, kde-format
+msgid "&Save to Disk..."
+msgstr "&Shrani na disk ..."
+
+#: ui/auditlogviewer.cpp:95
+#, kde-format
+msgid "Choose File to Save GnuPG Audit Log to"
+msgstr "Izberite datoteko za shranitev dnevnika presoje varnosti GnuPG"
+
+#: ui/auditlogviewer.cpp:118
+#, kde-format
+msgid "Could not save to file \"%1\": %2"
+msgstr "Ni bilo mogoče shraniti v datoteko »%1«: %2"
+
+#: ui/auditlogviewer.cpp:120
+#, kde-format
+msgid "File Save Error"
+msgstr "Napaka med shranjevanjem datoteke"
+
+#: ui/cryptoconfigdialog.cpp:44
+#, kde-format
+msgid "Configure GnuPG Backend"
+msgstr "Nastavi zaledje GnuPG"
+
+#: ui/cryptoconfigdialog.cpp:55
+#, kde-format
+msgid "&Reset"
+msgstr "Ponas&tavi"
+
+#: ui/cryptoconfigmodule.cpp:160
+#, kde-format
+msgid "GpgConf Error"
+msgstr "Napaka GpgConf"
+
+#: ui/cryptoconfigmodule.cpp:216
+#, kde-format
+msgid ""
+"The gpgconf tool used to provide the information for this dialog does not "
+"seem to be installed properly. It did not return any components. Try running "
+"\"%1\" on the command line for more information."
+msgstr ""
+"Videti je, da orodje gpgconf, ki je potrebno za pridobivanje podatkov za to "
+"pogovorno okno, ni pravilno nameščeno. Vrnilo ni nobenega sestavnega dela. "
+"Za več podrobnosti poskusite iz ukazne vrstice zagnati »%1«."
+
+#: ui/cryptoconfigmodule.cpp:496
+#, kde-format
+msgctxt ""
+"Translate this to 'yes' or 'no' (use the English words!) depending on "
+"whether your language uses Sentence style capitalisation in GUI labels (yes) "
+"or not (no). Context: We get some backend strings in that have the wrong "
+"capitalizaion (in English, at least) so we need to force the first character "
+"to upper-case. It is this behaviour you can control for your language with "
+"this translation."
+msgid "yes"
+msgstr "yes"
+
+#: ui/cryptoconfigmodule.cpp:546
+#, kde-format
+msgid "0 - None"
+msgstr "0 - brez"
+
+#: ui/cryptoconfigmodule.cpp:547
+#, kde-format
+msgid "1 - Basic"
+msgstr "1 - osnovno"
+
+#: ui/cryptoconfigmodule.cpp:548
+#, kde-format
+msgid "2 - Verbose"
+msgstr "2 - podrobni izpis"
+
+#: ui/cryptoconfigmodule.cpp:549
+#, kde-format
+msgid "3 - More Verbose"
+msgstr "3 - bolj podrobni izpis"
+
+#: ui/cryptoconfigmodule.cpp:550
+#, kde-format
+msgid "4 - All"
+msgstr "4 - vse"
+
+#: ui/cryptoconfigmodule.cpp:559
+#, kde-format
+msgid "Set the debugging level to"
+msgstr "Stopnjo razhroščevanja nastavi na"
+
+#: ui/cryptoconfigmodule.cpp:787
+#, kde-format
+msgid "Show..."
+msgstr "Pokaži ..."
+
+#: ui/cryptoconfigmodule.cpp:787 ui/cryptoconfigmodule.cpp:876
+#, kde-format
+msgid "Edit..."
+msgstr "Uredi ..."
+
+#: ui/cryptoconfigmodule.cpp:841
+#, kde-format
+msgid "Configure LDAP Servers"
+msgstr "Nastavi strežnike LDAP"
+
+#: ui/cryptoconfigmodule.cpp:862
+#, kde-format
+msgid "None configured"
+msgstr "Ni nastavljenih"
+
+#: ui/cryptoconfigmodule.cpp:864
+#, kde-format
+msgid "1 server configured"
+msgid_plural "%1 servers configured"
+msgstr[0] "%1 nastavljenih strežnikov"
+msgstr[1] "%1 nastavljen strežnik"
+msgstr[2] "%1 nastavljena strežnika"
+msgstr[3] "%1 nastavljeni strežniki"
+
+#: ui/cryptoconfigmodule.cpp:879
+#, kde-format
+msgid "Use keyserver at"
+msgstr "Uporabi strežnik s ključi na"
+
+#: ui/cryptoconfigmodule.cpp:968
+#, kde-format
+msgid "Configure Keyservers"
+msgstr "Nastavi strežnike s ključi"
+
+#: ui/directoryserviceswidget.cpp:67
+#, kde-format
+msgctxt "default server name, keep it a valid domain name, ie. no spaces"
+msgid "server"
+msgstr "strežnik"
+
+#: ui/directoryserviceswidget.cpp:95
+#, kde-format
+msgid "hkp"
+msgstr "hkp"
+
+#: ui/directoryserviceswidget.cpp:96
+#, kde-format
+msgid "http"
+msgstr "http"
+
+#: ui/directoryserviceswidget.cpp:97
+#, kde-format
+msgid "https"
+msgstr "https"
+
+#: ui/directoryserviceswidget.cpp:98
+#, kde-format
+msgid "ftp"
+msgstr "ftp"
+
+#: ui/directoryserviceswidget.cpp:99
+#, kde-format
+msgid "ftps"
+msgstr "ftps"
+
+#: ui/directoryserviceswidget.cpp:100
+#, kde-format
+msgid "ldap"
+msgstr "ldap"
+
+#: ui/directoryserviceswidget.cpp:101
+#, kde-format
+msgid "ldaps"
+msgstr "ldaps"
+
+#: ui/directoryserviceswidget.cpp:588
+#, kde-format
+msgid "Server Name"
+msgstr "Ime strežnika"
+
+#: ui/directoryserviceswidget.cpp:589
+#, kde-format
+msgid "Server Port"
+msgstr "Vrata strežnika"
+
+#: ui/directoryserviceswidget.cpp:590
+#, kde-format
+msgid "Base DN"
+msgstr "Osnovni DN"
+
+#: ui/directoryserviceswidget.cpp:591
+#, kde-format
+msgid "User Name"
+msgstr "Uporabniško ime"
+
+#: ui/directoryserviceswidget.cpp:592
+#, kde-format
+msgid "Password"
+msgstr "Geslo"
+
+#: ui/directoryserviceswidget.cpp:614
+#, kde-format
+msgid "(read-only)"
+msgstr "(samo za branje)"
+
+#: ui/directoryserviceswidget.cpp:616
+#, kde-format
+msgctxt "amended tooltip; %1: original tooltip"
+msgid "%1 (read-only)"
+msgstr "%1 (samo za branje)"
+
+#: ui/directoryserviceswidget.cpp:739
+#, kde-format
+msgid ""
+"Enter the name or IP address of the server hosting the directory service."
+msgstr "Vnesite ime ali naslov IP strežnika, ki gosti imeniško storitev."
+
+#: ui/directoryserviceswidget.cpp:741
+#, kde-format
+msgid ""
+"<b>(Optional, the default is fine in most cases)</b> Pick the port number "
+"the directory service is listening on."
+msgstr ""
+"<b>(izbirno, privzeta vrednost je običajno v redu)</b> Izberite številko "
+"vrat, na katerih posluša imeniška storitev."
+
+#: ui/directoryserviceswidget.cpp:744
+#, kde-format
+msgid ""
+"<b>(Only for LDAP)</b> Enter the base DN for this LDAP server to limit "
+"searches to only that subtree of the directory."
+msgstr ""
+"<b>(samo za LDAP)</b> Vnesite osnovni DN za ta strežnik LDAP in tako omejite "
+"iskanje na poddrevo imenika."
+
+#: ui/directoryserviceswidget.cpp:747
+#, kde-format
+msgid "<b>(Optional)</b> Enter your user name here, if needed."
+msgstr "<b>(izbirno)</b> Sem po potrebi vnesite uporabniško ime."
+
+#: ui/directoryserviceswidget.cpp:749
+#, kde-format
+msgid ""
+"<b>(Optional, not recommended)</b> Enter your password here, if needed. Note "
+"that the password will be saved in the clear in a config file in your home "
+"directory."
+msgstr ""
+"<b>(izbirno, ni priporočeno)</b> Sem po potrebi vnesite svoje geslo. "
+"Zapomnite si, da bo geslo v nastavitveno datoteko shranjeno nešifrirano."
+
+#. i18n: ectx: property (windowTitle), widget (QWidget, DirectoryServicesWidget)
+#: ui/directoryserviceswidget.ui:14
+#, kde-format
+msgid "Directory Services Configuration"
+msgstr "Nastavitve imeniških storitev"
+
+#. i18n: ectx: property (text), widget (QLabel, pgpKSLabel)
+#: ui/directoryserviceswidget.ui:22
+#, kde-format
+msgid "OpenPGP Keyserver:"
+msgstr "Strežnik s ključi OpenPGP:"
+
+#. i18n: ectx: property (title), widget (QGroupBox, x500LA)
+#: ui/directoryserviceswidget.ui:35
+#, kde-format
+msgid "X509 Directory services:"
+msgstr "Imeniške storitve X509:"
+
+#. i18n: ectx: property (whatsThis), widget (QTreeView, treeView)
+#: ui/directoryserviceswidget.ui:43
+#, kde-format
+msgid ""
+"This is a list of all directory services that are configured for use with "
+"X.509."
+msgstr ""
+"To je seznam vseh imeniških storitev, ki so nastavljene za uporabo z X.509."
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:70
+#, kde-format
+msgid "Click to add a service"
+msgstr "Kliknite za dodajanje storitve"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:73
+#, kde-format
+msgid ""
+"Click this button to create a new directory service entry as a clone of the "
+"currently selected one (or with default values, if no other is selected). "
+"You can then configure details in the table on the left hand."
+msgstr ""
+"Kliknite ta gumb, da ustvarite vnos nove imeniške storitve, ki je dvojnik "
+"trenutno izbrane. Če ni izbrana nobena, se uporabijo privzete vrednosti. "
+"Podrobnosti lahko kasneje nastavite v razpredelnici na levi."
+
+#. i18n: ectx: property (text), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:76
+#, kde-format
+msgid "New"
+msgstr "Novo"
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:92
+#, kde-format
+msgid "Click to remove the currently selected service"
+msgstr "Kliknite za odstranitev trenutno izbrane storitve"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:95
+#, kde-format
+msgid ""
+"Click this button to remove the currently selected directory service. The "
+"change will only take effect once you acknowledge the main configuration "
+"dialog."
+msgstr ""
+"Kliknite ta gumb, da odstranite trenutno izbrano imeniško storitev. "
+"Sprememba bo stopila v veljavo, ko potrdite spremembe v glavnem "
+"nastavitvenem oknu."
+
+#. i18n: ectx: property (text), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:98
+#, kde-format
+msgid "Delete"
+msgstr "Izbriši"
+
+#. i18n: ectx: property (whatsThis), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:128
+#, kde-format
+msgid ""
+"Use this option to switch display of username and password information on or "
+"off in the above table."
+msgstr ""
+"Uporabite to možnost za preklop prikaza uporabniških imen in gesel v gornji "
+"razpredelnici."
+
+#. i18n: ectx: property (text), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:131
+#, kde-format
+msgid "Show user and password information"
+msgstr "Prikaži podatke o uporabniku in geslu"
+
+#: ui/dnattributeorderconfigwidget.cpp:73
+#, kde-format
+msgid "Description"
+msgstr "Opis"
+
+#: ui/dnattributeorderconfigwidget.cpp:91
+#, kde-format
+msgid "Available attributes:"
+msgstr "Razpoložljivi atributi:"
+
+#: ui/dnattributeorderconfigwidget.cpp:92
+#, kde-format
+msgid "Current attribute order:"
+msgstr "Trenutni vrstni red atributov:"
+
+#: ui/dnattributeorderconfigwidget.cpp:112
+#, kde-format
+msgid "All others"
+msgstr "Vsi ostali"
+
+#: ui/dnattributeorderconfigwidget.cpp:129
+#, kde-format
+msgid "Move to top"
+msgstr "Premakni na vrh"
+
+#: ui/dnattributeorderconfigwidget.cpp:130
+#, kde-format
+msgid "Move one up"
+msgstr "Premakni eno gor"
+
+#: ui/dnattributeorderconfigwidget.cpp:131
+#, kde-format
+msgid "Remove from current attribute order"
+msgstr "Odstrani iz trenutnega vrstnega reda atributov"
+
+#: ui/dnattributeorderconfigwidget.cpp:132
+#, kde-format
+msgid "Add to current attribute order"
+msgstr "Dodaj k trenutnemu vrstnemu redu atributov"
+
+#: ui/dnattributeorderconfigwidget.cpp:133
+#, kde-format
+msgid "Move one down"
+msgstr "Premakni eno dol"
+
+#: ui/dnattributeorderconfigwidget.cpp:134
+#, kde-format
+msgid "Move to bottom"
+msgstr "Premakni na dno"
+
+#: ui/keyapprovaldialog.cpp:87
+#, kde-kuit-format
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>brez</placeholder>"
+
+#: ui/keyapprovaldialog.cpp:88
+#, kde-format
+msgid "Never Encrypt with This Key"
+msgstr "Nikoli ne šifriraj s tem ključem"
+
+#: ui/keyapprovaldialog.cpp:89
+#, kde-format
+msgid "Always Encrypt with This Key"
+msgstr "Vedno šifriraj s tem ključem"
+
+#: ui/keyapprovaldialog.cpp:90
+#, kde-format
+msgid "Encrypt Whenever Encryption is Possible"
+msgstr "Šifriraj kadarkoli je šifriranje mogoče"
+
+#: ui/keyapprovaldialog.cpp:91
+#, kde-format
+msgid "Always Ask"
+msgstr "Vedno vprašaj"
+
+#: ui/keyapprovaldialog.cpp:92
+#, kde-format
+msgid "Ask Whenever Encryption is Possible"
+msgstr "Vprašaj kadarkoli je šifriranje mogoče"
+
+#: ui/keyapprovaldialog.cpp:113
+#, kde-format
+msgid "Encryption Key Approval"
+msgstr "Odobritev ključa za šifriranje"
+
+#: ui/keyapprovaldialog.cpp:129
+#, kde-format
+msgid "The following keys will be used for encryption:"
+msgstr "Za šifriranje bodo uporabljeni naslednji ključi:"
+
+#: ui/keyapprovaldialog.cpp:145
+#, kde-format
+msgid "Your keys:"
+msgstr "Vaši ključi:"
+
+#: ui/keyapprovaldialog.cpp:157
+#, kde-format
+msgid "Recipient:"
+msgstr "Prejemnik:"
+
+#: ui/keyapprovaldialog.cpp:162
+#, kde-format
+msgid "Encryption keys:"
+msgstr "Šifrirni ključi:"
+
+#: ui/keyapprovaldialog.cpp:169
+#, kde-format
+msgid "Encryption preference:"
+msgstr "Možnosti šifriranja:"
+
+#: ui/keyrequester.cpp:118
+#, kde-format
+msgid "Clear"
+msgstr "Počisti"
+
+#: ui/keyrequester.cpp:121
+#, kde-format
+msgid "Change..."
+msgstr "Spremeni ..."
+
+#: ui/keyrequester.cpp:232 ui/keyselectiondialog.cpp:256
+#, kde-kuit-format
+msgid "<placeholder>unknown</placeholder>"
+msgstr "<placeholder>neznano</placeholder>"
+
+#: ui/keyrequester.cpp:246 ui/keyselectiondialog.cpp:657
+#, kde-format
+msgid ""
+"<qt><p>An error occurred while fetching the keys from the backend:</p><p><b>"
+"%1</b></p></qt>"
+msgstr ""
+"<qt><p>Med pridobivanjem ključev z zaledja je prišlo do napake:</p><p><b>%1</"
+"b></p></qt>"
+
+#: ui/keyrequester.cpp:251 ui/keyrequester.cpp:283 ui/keyrequester.cpp:306
+#: ui/keyselectiondialog.cpp:630 ui/keyselectiondialog.cpp:662
+#, kde-format
+msgid "Key Listing Failed"
+msgstr "Izpisovanje ključev ni uspelo"
+
+#: ui/keyrequester.cpp:281
+#, kde-format
+msgid ""
+"The OpenPGP backend does not support listing keys. Check your installation."
+msgstr "Zaledje OpenPGP ne podpira izpisovanja ključev. Preverite namestitev."
+
+#: ui/keyrequester.cpp:304
+#, kde-format
+msgid ""
+"The S/MIME backend does not support listing keys. Check your installation."
+msgstr "Zaledje S/MIME ne podpira izpisovanja ključev. Preverite namestitev."
+
+#: ui/keyrequester.cpp:426
+#, kde-format
+msgid "OpenPGP Key Selection"
+msgstr "Izbira ključa OpenPGP"
+
+#: ui/keyrequester.cpp:427
+#, kde-format
+msgid "Please select an OpenPGP key to use."
+msgstr "Izberite ključ OpenPGP, ki naj se uporablja."
+
+#: ui/keyrequester.cpp:429
+#, kde-format
+msgid "S/MIME Key Selection"
+msgstr "Izbira ključa S/MIME"
+
+#: ui/keyrequester.cpp:430
+#, kde-format
+msgid "Please select an S/MIME key to use."
+msgstr "Izberite ključ S/MIME, ki naj se uporablja."
+
+#: ui/keyrequester.cpp:432
+#, kde-format
+msgid "Key Selection"
+msgstr "Izbira ključev"
+
+#: ui/keyrequester.cpp:433
+#, kde-format
+msgid "Please select an (OpenPGP or S/MIME) key to use."
+msgstr "Izberite ključ (OpenPGP ali S/MIME), ki naj se uporablja."
+
+#: ui/keyselectioncombo.cpp:195
+#, kde-format
+msgctxt "Name <email> (validity, type, created: date)"
+msgid "%1 (%2, %3, created: %4)"
+msgstr "%1 (%2, %3, ustvarjeno: %4)"
+
+#: ui/keyselectioncombo.cpp:196
+#, kde-format
+msgctxt "Name <email>"
+msgid "%1 <%2>"
+msgstr "%1 <%2>"
+
+#: ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "OpenPGP"
+msgstr "OpenPGP"
+
+#: ui/keyselectioncombo.cpp:347
+#, kde-format
+msgid "Loading keys ..."
+msgstr "Nalaganje ključev ..."
+
+#: ui/keyselectiondialog.cpp:98
+#, kde-format
+msgid "The key is not valid."
+msgstr "Ključ ni veljaven."
+
+#: ui/keyselectiondialog.cpp:106
+#, kde-format
+msgid "The key is expired."
+msgstr "Ključ je potekel."
+
+#: ui/keyselectiondialog.cpp:110
+#, kde-format
+msgid "The key is revoked."
+msgstr "Ključ je preklican."
+
+#: ui/keyselectiondialog.cpp:114
+#, kde-format
+msgid "The key is disabled."
+msgstr "Ključ je onemogočen."
+
+#: ui/keyselectiondialog.cpp:122
+#, kde-format
+msgid "The key is not designated for encryption."
+msgstr "Ključ ni označen za šifriranje."
+
+#: ui/keyselectiondialog.cpp:128
+#, kde-format
+msgid "The key is not designated for signing."
+msgstr "Ključ ni označen za podpisovanje."
+
+#: ui/keyselectiondialog.cpp:134
+#, kde-format
+msgid "The key is not designated for certifying."
+msgstr "Ključ ni označen za potrjevanje potrdil."
+
+#: ui/keyselectiondialog.cpp:140
+#, kde-format
+msgid "The key is not designated for authentication."
+msgstr "Ključ ni označen za overitev."
+
+#: ui/keyselectiondialog.cpp:148
+#, kde-format
+msgid "The key is not secret."
+msgstr "Ključ ni tajen."
+
+#: ui/keyselectiondialog.cpp:163
+#, kde-format
+msgid "The key is not trusted enough."
+msgstr "Ključu ni zaupano dovolj."
+
+#: ui/keyselectiondialog.cpp:169
+#, kde-format
+msgid "The key can be used."
+msgstr "Ključ lahko uporabite."
+
+#: ui/keyselectiondialog.cpp:230
+#, kde-format
+msgid "Key ID"
+msgstr "ID ključa"
+
+#: ui/keyselectiondialog.cpp:231
+#, kde-format
+msgid "User ID"
+msgstr "ID uporabnika"
+
+#: ui/keyselectiondialog.cpp:279
+#, kde-format
+msgid "never"
+msgstr "nikoli"
+
+#: ui/keyselectiondialog.cpp:289 ui/keyselectiondialog.cpp:291
+#: ui/keyselectiondialog.cpp:300 ui/keyselectiondialog.cpp:302
+#, kde-format
+msgid "unknown"
+msgstr "neznano"
+
+#: ui/keyselectiondialog.cpp:289
+#, kde-format
+msgid "OpenPGP key for <b>%1</b>"
+msgstr "Ključ OpenPGP za <b>%1</b>"
+
+#: ui/keyselectiondialog.cpp:291
+#, kde-format
+msgid "S/MIME key for <b>%1</b>"
+msgstr "Ključ S/MIME za <b>%1</b>"
+
+#: ui/keyselectiondialog.cpp:298
+#, kde-format
+msgctxt "Key creation date"
+msgid "Created"
+msgstr "Ustvarjen"
+
+#: ui/keyselectiondialog.cpp:299
+#, kde-format
+msgctxt "Key Expiration date"
+msgid "Expiry"
+msgstr "Preteče"
+
+#: ui/keyselectiondialog.cpp:300
+#, kde-format
+msgctxt "Key fingerprint"
+msgid "Fingerprint"
+msgstr "Prstni odtis"
+
+#: ui/keyselectiondialog.cpp:302
+#, kde-format
+msgctxt "Key issuer"
+msgid "Issuer"
+msgstr "Izdajatelj"
+
+#: ui/keyselectiondialog.cpp:304
+#, kde-format
+msgctxt "Key status"
+msgid "Status"
+msgstr "Stanje"
+
+#: ui/keyselectiondialog.cpp:456
+#, kde-format
+msgid "Search for &External Certificates"
+msgstr "Poišči &zunanja potrdila"
+
+#: ui/keyselectiondialog.cpp:470
+#, kde-format
+msgid "&Search for:"
+msgstr "Po&išči:"
+
+#: ui/keyselectiondialog.cpp:494
+#, kde-format
+msgid "&Remember choice"
+msgstr "Zapomni si izbi&ro"
+
+#: ui/keyselectiondialog.cpp:497
+#, kde-format
+msgid ""
+"<qt><p>If you check this box your choice will be stored and you will not be "
+"asked again.</p></qt>"
+msgstr ""
+"<qt><p>Če označite to polje, bo vaša izbira shranjena in ne boste več "
+"vprašani znova.</p></qt>"
+
+#: ui/keyselectiondialog.cpp:509
+#, kde-format
+msgid "&Reread Keys"
+msgstr "&Znova preberi ključe"
+
+#: ui/keyselectiondialog.cpp:510
+#, kde-format
+msgid "&Start Certificate Manager"
+msgstr "Z&aženi upravljalnika potrdil"
+
+#: ui/keyselectiondialog.cpp:628
+#, kde-format
+msgid "No backends found for listing keys. Check your installation."
+msgstr "Ni najdenih zaledij za izpisovanje ključev. Preverite namestitev."
+
+#: ui/keyselectiondialog.cpp:644
+#, kde-format
+msgid "Could not start certificate manager; please check your installation."
+msgstr "Ni bilo mogoče zagnati upravljalnika potrdil. Preverite namestitev."
+
+#: ui/keyselectiondialog.cpp:646
+#, kde-format
+msgid "Certificate Manager Error"
+msgstr "Napaka upravljalnika potrdil"
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Checking selected keys..."
+msgstr "Preverjanje izbranih ključev ..."
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Fetching keys..."
+msgstr "Pridobivanje ključev ..."
+
+#: ui/keyselectiondialog.cpp:731
+#, kde-format
+msgid ""
+"<qt>One backend returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgid_plural ""
+"<qt>%1 backends returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgstr[0] ""
+"<qt>%1 zaledij je vrnilo skrajšan izpis.<p>Vsi razpoložljivi ključi niso "
+"prikazani.</p></qt>"
+msgstr[1] ""
+"<qt>%1 zaledje je vrnilo skrajšan izpis.<p>Vsi razpoložljivi ključi niso "
+"prikazani.</p></qt>"
+msgstr[2] ""
+"<qt>%1 zaledji sta vrnili skrajšan izpis.<p>Vsi razpoložljivi ključi niso "
+"prikazani.</p></qt>"
+msgstr[3] ""
+"<qt>%1 zaledja so vrnila skrajšan izpis.<p>Vsi razpoložljivi ključi niso "
+"prikazani.</p></qt>"
+
+#: ui/keyselectiondialog.cpp:736
+#, kde-format
+msgid "Key List Result"
+msgstr "Rezultati izpisovanja ključev"
+
+#: ui/keyselectiondialog.cpp:856
+#, kde-format
+msgid "Recheck Key"
+msgstr "Znova preveri ključ"
+
+#: ui/messagebox.cpp:71
+#, kde-format
+msgid "Your system does not have support for GnuPG Audit Logs"
+msgstr "Vaš sistem ne podpira dnevnikov presoje varnosti GnuPG"
+
+#: ui/messagebox.cpp:72
+#, kde-format
+msgid "System Error"
+msgstr "Sistemska napaka"
+
+#: ui/messagebox.cpp:79
+#, kde-format
+msgid ""
+"An error occurred while trying to retrieve the GnuPG Audit Log:\n"
+"%1"
+msgstr ""
+"Med pridobivanjem dnevnika presoje varnosti GnuPG je prišlo do napake:\n"
+"%1"
+
+#: ui/messagebox.cpp:81
+#, kde-format
+msgid "GnuPG Audit Log Error"
+msgstr "Napaka dnevnika presoje varnosti GnuPG"
+
+#: ui/messagebox.cpp:88
+#, kde-format
+msgid "No GnuPG Audit Log available for this operation."
+msgstr "Za to dejanje ni na voljo dnevnika presoje varnosti GnuPG."
+
+#: ui/messagebox.cpp:89
+#, kde-format
+msgid "No GnuPG Audit Log"
+msgstr "Ni dnevnika presoje varnosti GnuPG"
+
+#: ui/messagebox.cpp:109 ui/messagebox.cpp:115
+#, kde-format
+msgid "GnuPG Audit Log Viewer"
+msgstr "Pregledovalnik dnevnika presoje varnosti GnuPG"
+
+#: ui/messagebox.cpp:121
+#, kde-format
+msgid "Signing failed: %1"
+msgstr "Podpisovanje ni uspelo: %1"
+
+#: ui/messagebox.cpp:122
+#, kde-format
+msgid "Signing successful"
+msgstr "Podpisovanje je bilo uspešno"
+
+#: ui/messagebox.cpp:133
+#, kde-format
+msgid "Encryption failed: %1"
+msgstr "Šifriranje ni uspelo: %1"
+
+#: ui/messagebox.cpp:134
+#, kde-format
+msgid "Encryption successful"
+msgstr "Šifriranje je bilo uspešno"
+
+#: ui/messagebox.cpp:155
+#, kde-format
+msgid "Signing Result"
+msgstr "Rezultat podpisovanja"
+
+#: ui/messagebox.cpp:167
+#, kde-format
+msgid "Signing Error"
+msgstr "Napaka med podpisovanjem"
+
+#: ui/messagebox.cpp:179 ui/messagebox.cpp:203
+#, kde-format
+msgid "Encryption Result"
+msgstr "Rezultat šifriranja"
+
+#: ui/messagebox.cpp:191 ui/messagebox.cpp:215
+#, kde-format
+msgid "Encryption Error"
+msgstr "Napaka šifriranja"
+
+#: ui/messagebox.cpp:263
+#, kde-format
+msgid "&Show Audit Log"
+msgstr "Pokaži dnevnik pre&soje varnosti"
+
+#: ui/progressdialog.cpp:91
+#, kde-format
+msgid "%1: %2"
+msgstr "%1: %2"
+
+#~ msgctxt "New X.509 Directory Server"
+#~ msgid "X.509"
+#~ msgstr "X.509"
+
+#~ msgctxt "New OpenPGP Directory Server"
+#~ msgid "OpenPGP"
+#~ msgstr "OpenPGP"
+
+#~ msgid "Scheme"
+#~ msgstr "Shema"
+
+#~ msgid "X.509"
+#~ msgstr "X.509"
+
+#~ msgid ""
+#~ "Select the access scheme (scheme) that the directory service is available "
+#~ "through."
+#~ msgstr ""
+#~ "Izberite dostopno shemo, preko katere je na voljo imeniška storitev."
+
+#~ msgid ""
+#~ "Check this column if this directory service is providing S/MIME (X.509) "
+#~ "certificates."
+#~ msgstr ""
+#~ "Označite ta stolpec, če imeniška storitev zagotavlja potrdila S/MIME "
+#~ "(X.509)."
+
+#~ msgid ""
+#~ "Check this column if this directory service is providing OpenPGP "
+#~ "certificates."
+#~ msgstr ""
+#~ "Označite ta stolpec, če imeniška storitev zagotavlja potrdila OpenPGP."
+
+#~ msgid "0 - None (no debugging at all)"
+#~ msgstr "0 – Brez (brez vsakršnega razhroščevanja)"
+
+#~ msgid "1 - Basic (some basic debug messages)"
+#~ msgstr "1 – Osnovno (nekatera osnovna sporočila razhroščevanja)"
+
+#~ msgid "2 - Advanced (more verbose debug messages)"
+#~ msgstr "2 – Napredno (bolj podrobna sporočila razhroščevanja)"
+
+#~ msgid "3 - Expert (even more detailed messages)"
+#~ msgstr "3 – Strokovnjak (še bolj podrobna sporočila)"
+
+#~ msgid "4 - Guru (all of the debug messages you can get)"
+#~ msgstr "4 – Guru (vsa sporočila, ki se jih da dobiti pri razhroščevanju)"
+
+#~ msgid "General"
+#~ msgstr "Splošno"
+
+#~ msgid "Chiasmus"
+#~ msgstr "Chiasmus"
+
+#~ msgid "Chiasmus command line tool"
+#~ msgstr "Orodje Chiasmus za ukazno vrstico"
+
+#~ msgid "Unsupported protocol \"%1\""
+#~ msgstr "Nepodprt protokol »%1«"
+
+#~ msgid "File \"%1\" does not exist or is not executable."
+#~ msgstr "Datoteka »%1« ne obstaja ali pa ni izvedljiva."
+
+#~ msgid "Output from chiasmus"
+#~ msgstr "Izhod ukaza chiasmus"
+
+#~ msgid "Decryption failed: %1"
+#~ msgstr "Odšifriranje ni uspelo: %1"
+
+#~ msgid ""
+#~ "The following was received on stderr:\n"
+#~ "%1"
+#~ msgstr ""
+#~ "Na stderr je bilo prejeto naslednje:\n"
+#~ "%1"
+
+#~ msgid "Failed to load %1: %2"
+#~ msgstr "Nalaganje %1 ni uspelo: %2"
+
+#~ msgid "Library does not contain the symbol \"Chiasmus\"."
+#~ msgstr "Knjižnica ne vsebuje simbola »Chiasmus«."
+
+#~ msgid "Scanning directory %1..."
+#~ msgstr "Preiskovanje imenika %1 ..."
+
+#~ msgid "GpgME"
+#~ msgstr "GpgME"
+
+#~ msgid "GPGME was compiled without support for %1."
+#~ msgstr "GPGME je bil preveden brez podpore za %1."
+
+#~ msgid "Engine %1 is not installed properly."
+#~ msgstr "Pogon %1 ni pravilno nameščen."
+
+#~ msgid "Engine %1 version %2 installed, but at least version %3 is required."
+#~ msgstr ""
+#~ "Pogon %1 različice %2 je nameščen, vendar je zahtevana vsaj različica %3."
+
+#~ msgid "Unknown problem with engine for protocol %1."
+#~ msgstr "Neznana težava s pogonom za protokol %1."
+
+#~ msgid "program terminated unexpectedly"
+#~ msgstr "program se je nepričakovano končal"
+
+#~ msgid "program not found or cannot be started"
+#~ msgstr "program ni bil najden ali ne more biti zagnan"
+
+#~ msgid "<qt>Failed to execute gpgconf:<p>%1</p></qt>"
+#~ msgstr "<qt>Izvajanje gpgconf ni uspelo: <p>%1</p></qt>"
+
+#~ msgid ""
+#~ "Could not start gpgconf.\n"
+#~ "Check that gpgconf is in the PATH and that it can be started."
+#~ msgstr ""
+#~ "Ni bilo mogoče zagnati gpgconf.\n"
+#~ "Preverite, če je gpgconf v spremenljivki PATH in ga je mogoče zagnati."
+
+#~ msgid "Error from gpgconf while saving configuration: %1"
+#~ msgstr "Napaka programa gpgconf med shranjevanjem nastavitev: %1"
+
+#~ msgid "Generating DSA key..."
+#~ msgstr "Ustvarjanje ključa DSA ..."
+
+#~ msgid "Generating ElGamal key..."
+#~ msgstr "Ustvarjanje ključa ElGamal ..."
+
+#~ msgid "Searching for a large prime number..."
+#~ msgstr "Iskanje velikega praštevila ..."
+
+#~ msgid ""
+#~ "Waiting for new entropy from random number generator (you might want to "
+#~ "exercise the harddisks or move the mouse)..."
+#~ msgstr ""
+#~ "Čakanje na novo entropijo iz ustvarjalnika naključnih števil (morda boste "
+#~ "želeli pisati/brati iz diskov ali premakniti miško) ..."
+
+#~ msgid "Please wait..."
+#~ msgstr "Počakajte ..."
+
+#~ msgid ""
+#~ "Starting gpg-agent (you should consider starting a global instance "
+#~ "instead)..."
+#~ msgstr ""
+#~ "Začenjanje gpg-agent (pomislite o zaganjanju globalnega primerka) ..."
+
+#~ msgid "While scanning for %1 support in backend %2:"
+#~ msgstr "Med preiskovanjem podpore za %1 v zaledju %2:"
+
+#~ msgctxt "progress info: \"%1 of %2\""
+#~ msgid "%1/%2"
+#~ msgstr "%1/%2"
+
+#~ msgid ""
+#~ "OpenPGP key for %1\n"
+#~ "Created: %2\n"
+#~ "Expiry: %3\n"
+#~ "Fingerprint: %4"
+#~ msgstr ""
+#~ "Ključ OpenPGP za %1\n"
+#~ "Ustvarjen: %2\n"
+#~ "Preteče: %3\n"
+#~ "Prstni odtis: %4"
+
+#~ msgid ""
+#~ "S/MIME key for %1\n"
+#~ "Created: %2\n"
+#~ "Expiry: %3\n"
+#~ "Fingerprint: %4\n"
+#~ "Issuer: %5"
+#~ msgstr ""
+#~ "Ključ S/MIME za %1\n"
+#~ "Ustvarjen: %2\n"
+#~ "Preteče: %3\n"
+#~ "Prstni odtis: %4\n"
+#~ "Izdajatelj: %5"
+
+#~ msgid "Copy Audit Log to Clipboard"
+#~ msgstr "Dnevnik presoje varnosti kopiraj v odložišče"
+
+#~ msgid "Add or Change Directory Service"
+#~ msgstr "Dodaj ali spremeni imeniško storitev"
+
+#~ msgid "&Server name:"
+#~ msgstr "Ime &strežnika:"
+
+#~ msgid "389"
+#~ msgstr "389"
+
+#~ msgid "&User name (optional):"
+#~ msgstr "&Uporabniško ime (ni obvezno):"
+
+#~ msgid "Pass&word (optional):"
+#~ msgstr "&Geslo (ni obvezno):"
+
+#~ msgid "&OK"
+#~ msgstr "&V redu"
+
+#~ msgid "&Cancel"
+#~ msgstr "&Prekliči"
+
+#~ msgid "&Base DN:"
+#~ msgstr "&Osnovni DN:"
+
+#~ msgid "&Port:"
+#~ msgstr "&Vrata:"
--- /dev/null
+# Translation of libkleopatra.po into Serbian.
+# Nikola Kotur <kotnik@ns-linux.org>, 2004.
+# Chusslove Illich <caslav.ilic@gmx.net>, 2004, 2005, 2011, 2014.
+# Slobodan Simic <slsimic@gmail.com>, 2005.
+msgid ""
+msgstr ""
+"Project-Id-Version: libkleopatra\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2017-07-12 06:56+0200\n"
+"PO-Revision-Date: 2014-11-30 11:17+0100\n"
+"Last-Translator: Chusslove Illich <caslav.ilic@gmx.net>\n"
+"Language-Team: Serbian <kde-i18n-sr@kde.org>\n"
+"Language: sr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.10.2\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"
+
+#: kleo/checksumdefinition.cpp:107
+#, kde-format
+msgid "Error in checksum definition %1: %2"
+msgstr "Грешка у дефиницији контролне суме %1: %2"
+
+#: kleo/checksumdefinition.cpp:157
+#, kde-format
+msgid "Cannot use both %f and | in '%1'"
+msgstr "Не може да стоји и %f и | у „%1“."
+
+#: kleo/checksumdefinition.cpp:167
+#, kde-format
+msgid "Quoting error in '%1' entry"
+msgstr "Лоши наводници у уносу „%1“."
+
+#: kleo/checksumdefinition.cpp:170
+#, kde-format
+msgid "'%1' too complex (would need shell)"
+msgstr "„%1“ је превише сложена (захтевала би шкољку)"
+
+#: kleo/checksumdefinition.cpp:174
+#, kde-format
+msgid "'%1' entry is empty/missing"
+msgstr "Унос „%1“ празан или недостаје."
+
+#: kleo/checksumdefinition.cpp:183
+#, kde-format
+msgid "'%1' empty or not found"
+msgstr "„%1“ празан или недостаје."
+
+# literal-segment: id
+#: kleo/checksumdefinition.cpp:222
+#, kde-format
+msgid "'id' entry is empty/missing"
+msgstr "Унос „id“ празан или недостаје."
+
+# literal-segment: output-file
+#: kleo/checksumdefinition.cpp:225
+#, kde-format
+msgid "'output-file' entry is empty/missing"
+msgstr "Унос „output-file“ празан или недостаје."
+
+# literal-segment: file-patterns
+#: kleo/checksumdefinition.cpp:228
+#, kde-format
+msgid "'file-patterns' entry is empty/missing"
+msgstr "Унос „file-patterns“ празан или недостаје."
+
+#: kleo/checksumdefinition.cpp:395
+#, kde-format
+msgid "Caught unknown exception in group %1"
+msgstr "Ухваћен непознати изузетак у групи %1."
+
+#: kleo/dn.cpp:507
+#, kde-format
+msgid "Common name"
+msgstr "Уобичајено име"
+
+#: kleo/dn.cpp:508
+#, kde-format
+msgid "Surname"
+msgstr "Презиме"
+
+#: kleo/dn.cpp:509
+#, kde-format
+msgid "Given name"
+msgstr "Име"
+
+#: kleo/dn.cpp:510
+#, kde-format
+msgid "Location"
+msgstr "Локација"
+
+#: kleo/dn.cpp:511
+#, kde-format
+msgid "Title"
+msgstr "Титула"
+
+#: kleo/dn.cpp:512
+#, kde-format
+msgid "Organizational unit"
+msgstr "Организациона јединица"
+
+#: kleo/dn.cpp:513
+#, kde-format
+msgid "Organization"
+msgstr "Организација"
+
+#: kleo/dn.cpp:514
+#, kde-format
+msgid "Postal code"
+msgstr "Поштански број"
+
+#: kleo/dn.cpp:515
+#, kde-format
+msgid "Country code"
+msgstr "Кôд државе"
+
+#: kleo/dn.cpp:516
+#, kde-format
+msgid "State or province"
+msgstr "Држава или провинција"
+
+#: kleo/dn.cpp:517
+#, kde-format
+msgid "Domain component"
+msgstr "Компонента домена"
+
+#: kleo/dn.cpp:518
+#, kde-format
+msgid "Business category"
+msgstr "Пословна категорија"
+
+#: kleo/dn.cpp:519
+#, kde-format
+msgid "Email address"
+msgstr "Адреса е‑поште"
+
+#: kleo/dn.cpp:520
+#, kde-format
+msgid "Mail address"
+msgstr "Поштанска адреса"
+
+#: kleo/dn.cpp:521
+#, kde-format
+msgid "Mobile phone number"
+msgstr "Број мобилног телефона"
+
+#: kleo/dn.cpp:522
+#, kde-format
+msgid "Telephone number"
+msgstr "Број телефона"
+
+#: kleo/dn.cpp:523
+#, kde-format
+msgid "Fax number"
+msgstr "Број факса"
+
+#: kleo/dn.cpp:524
+#, kde-format
+msgid "Street address"
+msgstr "Адреса"
+
+#: kleo/dn.cpp:525
+#, kde-format
+msgid "Unique ID"
+msgstr "Јединствени ид."
+
+#: kleo/enum.cpp:57
+#, kde-format
+msgid "Inline OpenPGP (deprecated)"
+msgstr "Уткани опенПГП (застарело)"
+
+#: kleo/enum.cpp:62
+#, kde-format
+msgid "OpenPGP/MIME"
+msgstr "ОпенПГП/МИМЕ"
+
+#: kleo/enum.cpp:67 ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "S/MIME"
+msgstr "С/МИМЕ"
+
+#: kleo/enum.cpp:72
+#, kde-format
+msgid "S/MIME Opaque"
+msgstr "С/МИМЕ непрозирно"
+
+#: kleo/enum.cpp:104
+#, kde-format
+msgid "Any"
+msgstr "Било који"
+
+#: kleo/enum.cpp:177
+#, kde-format
+msgid "Never Encrypt"
+msgstr "Никад не шифруј"
+
+#: kleo/enum.cpp:179
+#, kde-format
+msgid "Always Encrypt"
+msgstr "Увек шифруј"
+
+#: kleo/enum.cpp:181
+#, kde-format
+msgid "Always Encrypt If Possible"
+msgstr "Увек шифруј ако је могуће"
+
+#: kleo/enum.cpp:183 kleo/enum.cpp:240
+#, kde-format
+msgid "Ask"
+msgstr "Питај"
+
+#: kleo/enum.cpp:185 kleo/enum.cpp:242
+#, kde-format
+msgid "Ask Whenever Possible"
+msgstr "Питај када је могуће"
+
+#: kleo/enum.cpp:187
+#, kde-kuit-format
+msgctxt "no specific preference"
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>ниједно</placeholder>"
+
+#: kleo/enum.cpp:234
+#, kde-format
+msgid "Never Sign"
+msgstr "Никад не потписуј"
+
+#: kleo/enum.cpp:236
+#, kde-format
+msgid "Always Sign"
+msgstr "Увек потписуј"
+
+#: kleo/enum.cpp:238
+#, kde-format
+msgid "Always Sign If Possible"
+msgstr "Увек потписуј ако је могуће"
+
+#: kleo/enum.cpp:244
+#, kde-format
+msgctxt "no specific preference"
+msgid "<none>"
+msgstr "<placeholder>ниједно</placeholder>"
+
+#: kleo/keyfiltermanager.cpp:85
+#, kde-format
+msgid "All Certificates"
+msgstr "Сви сертификати"
+
+#: kleo/keyfiltermanager.cpp:100
+#, kde-format
+msgid "My Certificates"
+msgstr "Моји сертификати"
+
+#: kleo/keyfiltermanager.cpp:118
+#, kde-format
+msgid "Trusted Certificates"
+msgstr "Поуздани сертификати"
+
+#: kleo/keyfiltermanager.cpp:135
+#, fuzzy, kde-format
+#| msgid "Trusted Certificates"
+msgid "Fully Trusted Certificates"
+msgstr "Поуздани сертификати"
+
+#: kleo/keyfiltermanager.cpp:152
+#, kde-format
+msgid "Other Certificates"
+msgstr "Други сертификати"
+
+#: kleo/keyfiltermanager.cpp:166
+#, fuzzy, kde-format
+#| msgid "All Certificates"
+msgid "VS-compliant Certificates"
+msgstr "Сви сертификати"
+
+#: kleo/keyfiltermanager.cpp:184
+#, fuzzy, kde-format
+#| msgid "Trusted Certificates"
+msgid "Not validated Certificates"
+msgstr "Поуздани сертификати"
+
+#: ui/auditlogviewer.cpp:49
+#, kde-format
+msgid "View GnuPG Audit Log"
+msgstr "Прикажи ГнуПГ‑ов дневник ревизије"
+
+#: ui/auditlogviewer.cpp:53
+#, kde-format
+msgid "&Copy to Clipboard"
+msgstr "&Копирај у клипборд"
+
+#: ui/auditlogviewer.cpp:59
+#, kde-format
+msgid "&Save to Disk..."
+msgstr "&Сачувај на диск..."
+
+# >> @title:window
+#: ui/auditlogviewer.cpp:95
+#, kde-format
+msgid "Choose File to Save GnuPG Audit Log to"
+msgstr "Избор фајла за уписивање ГнуПГ‑овог дневника ревизије"
+
+#: ui/auditlogviewer.cpp:118
+#, kde-format
+msgid "Could not save to file \"%1\": %2"
+msgstr "Не могу да сачувам у фајл <filename>%1</filename>: %2"
+
+#: ui/auditlogviewer.cpp:120
+#, kde-format
+msgid "File Save Error"
+msgstr "Грешка при уписивању фајла"
+
+# >> @title:window
+#: ui/cryptoconfigdialog.cpp:44
+#, kde-format
+msgid "Configure GnuPG Backend"
+msgstr "Подешавање позадине ГнуПГ‑а"
+
+#: ui/cryptoconfigdialog.cpp:55
+#, kde-format
+msgid "&Reset"
+msgstr "&Ресетуј"
+
+#: ui/cryptoconfigmodule.cpp:160
+#, kde-format
+msgid "GpgConf Error"
+msgstr "Грешка <command>gpgconf</command>"
+
+#: ui/cryptoconfigmodule.cpp:216
+#, kde-format
+msgid ""
+"The gpgconf tool used to provide the information for this dialog does not "
+"seem to be installed properly. It did not return any components. Try running "
+"\"%1\" on the command line for more information."
+msgstr ""
+"Алатка <command>gpgconf</command>, која пружа податке у овом дијалогу, "
+"изгледа да није правилно инсталирана. Није вратила ниједну компоненту. "
+"Покушајте да извршите „%1“ у командној линији за више информација."
+
+#: ui/cryptoconfigmodule.cpp:496
+#, kde-format
+msgctxt ""
+"Translate this to 'yes' or 'no' (use the English words!) depending on "
+"whether your language uses Sentence style capitalisation in GUI labels (yes) "
+"or not (no). Context: We get some backend strings in that have the wrong "
+"capitalizaion (in English, at least) so we need to force the first character "
+"to upper-case. It is this behaviour you can control for your language with "
+"this translation."
+msgid "yes"
+msgstr "yes"
+
+#: ui/cryptoconfigmodule.cpp:546
+#, kde-format
+msgid "0 - None"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:547
+#, kde-format
+msgid "1 - Basic"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:548
+#, kde-format
+msgid "2 - Verbose"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:549
+#, kde-format
+msgid "3 - More Verbose"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:550
+#, kde-format
+msgid "4 - All"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:559
+#, kde-format
+msgid "Set the debugging level to"
+msgstr "Ниво откривања грешака је"
+
+#: ui/cryptoconfigmodule.cpp:787
+#, kde-format
+msgid "Show..."
+msgstr "Прикажи..."
+
+#: ui/cryptoconfigmodule.cpp:787 ui/cryptoconfigmodule.cpp:876
+#, kde-format
+msgid "Edit..."
+msgstr "Уреди..."
+
+#: ui/cryptoconfigmodule.cpp:841
+#, kde-format
+msgid "Configure LDAP Servers"
+msgstr "Подеси ЛДАП сервере"
+
+#: ui/cryptoconfigmodule.cpp:862
+#, fuzzy, kde-format
+#| msgid "No server configured yet"
+msgid "None configured"
+msgstr "Ниједан сервер још није подешен"
+
+#: ui/cryptoconfigmodule.cpp:864
+#, kde-format
+msgid "1 server configured"
+msgid_plural "%1 servers configured"
+msgstr[0] "%1 подешен сервер"
+msgstr[1] "%1 подешена сервера"
+msgstr[2] "%1 подешених сервера"
+msgstr[3] "%1 подешен сервер"
+
+#: ui/cryptoconfigmodule.cpp:879
+#, kde-format
+msgid "Use keyserver at"
+msgstr "Сервер кључева на"
+
+# >> @title:window
+#: ui/cryptoconfigmodule.cpp:968
+#, kde-format
+msgid "Configure Keyservers"
+msgstr "Подешавање сервера кључева"
+
+# literal-segment: server
+#: ui/directoryserviceswidget.cpp:67
+#, kde-format
+msgctxt "default server name, keep it a valid domain name, ie. no spaces"
+msgid "server"
+msgstr "server"
+
+# >> @item address prefix for protocol
+#: ui/directoryserviceswidget.cpp:95
+#, kde-format
+msgid "hkp"
+msgstr "hkp"
+
+# >> @item address prefix for protocol
+#: ui/directoryserviceswidget.cpp:96
+#, kde-format
+msgid "http"
+msgstr "http"
+
+# >> @item address prefix for protocol
+#: ui/directoryserviceswidget.cpp:97
+#, kde-format
+msgid "https"
+msgstr "https"
+
+# >> @item address prefix for protocol
+#: ui/directoryserviceswidget.cpp:98
+#, kde-format
+msgid "ftp"
+msgstr "ftp"
+
+# >> @item address prefix for protocol
+#: ui/directoryserviceswidget.cpp:99
+#, kde-format
+msgid "ftps"
+msgstr "ftps"
+
+# >> @item address prefix for protocol
+#: ui/directoryserviceswidget.cpp:100
+#, kde-format
+msgid "ldap"
+msgstr "ldap"
+
+# >> @item address prefix for protocol
+#: ui/directoryserviceswidget.cpp:101
+#, kde-format
+msgid "ldaps"
+msgstr "ldaps"
+
+# >> @title:column
+#: ui/directoryserviceswidget.cpp:588
+#, kde-format
+msgid "Server Name"
+msgstr "име сервера"
+
+# >> @title:column
+#: ui/directoryserviceswidget.cpp:589
+#, kde-format
+msgid "Server Port"
+msgstr "порт сервера"
+
+# >> @title:column
+#: ui/directoryserviceswidget.cpp:590
+#, kde-format
+msgid "Base DN"
+msgstr "базни ДН"
+
+# >> @title:column
+#: ui/directoryserviceswidget.cpp:591
+#, kde-format
+msgid "User Name"
+msgstr "корисничко име"
+
+# >> @title:column
+#: ui/directoryserviceswidget.cpp:592
+#, kde-format
+msgid "Password"
+msgstr "лозинка"
+
+#: ui/directoryserviceswidget.cpp:614
+#, kde-format
+msgid "(read-only)"
+msgstr "(само за читање)"
+
+#: ui/directoryserviceswidget.cpp:616
+#, kde-format
+msgctxt "amended tooltip; %1: original tooltip"
+msgid "%1 (read-only)"
+msgstr "%1 (само за читање)"
+
+# switch-rule: t-directory > t-directory2
+#: ui/directoryserviceswidget.cpp:739
+#, kde-format
+msgid ""
+"Enter the name or IP address of the server hosting the directory service."
+msgstr "Унесите име или ИП адресу сервера који удомљује именички сервис."
+
+# switch-rule: t-directory > t-directory2
+#: ui/directoryserviceswidget.cpp:741
+#, kde-format
+msgid ""
+"<b>(Optional, the default is fine in most cases)</b> Pick the port number "
+"the directory service is listening on."
+msgstr ""
+"<b>(Опционо, најчешће одговара подразумевано.)</b> Изаберите број порта на "
+"којем именички сервис слуша."
+
+# switch-rule: t-directory > t-directory2
+#: ui/directoryserviceswidget.cpp:744
+#, kde-format
+msgid ""
+"<b>(Only for LDAP)</b> Enter the base DN for this LDAP server to limit "
+"searches to only that subtree of the directory."
+msgstr ""
+"<b>(Само за ЛДАП.)</b> Унесите базни ДН за овај ЛДАП сервер да ограничите "
+"претраге само на то подстабло именика."
+
+#: ui/directoryserviceswidget.cpp:747
+#, kde-format
+msgid "<b>(Optional)</b> Enter your user name here, if needed."
+msgstr "<b>(Опционо.)</b> Унесите своје корисничко име, ако је потребно."
+
+#: ui/directoryserviceswidget.cpp:749
+#, kde-format
+msgid ""
+"<b>(Optional, not recommended)</b> Enter your password here, if needed. Note "
+"that the password will be saved in the clear in a config file in your home "
+"directory."
+msgstr ""
+"<b>(Опционо, не препоручује се.)</b> Унесите своју лозинку, ако је потребна. "
+"Пазите, биће сачувана као чист текст у поставном фајлу у вашој домаћој "
+"фасцикли."
+
+# switch-rule: t-directory > t-directory2
+#. i18n: ectx: property (windowTitle), widget (QWidget, DirectoryServicesWidget)
+#: ui/directoryserviceswidget.ui:14
+#, kde-format
+msgid "Directory Services Configuration"
+msgstr "Подешавање именичких сервиса"
+
+#. i18n: ectx: property (text), widget (QLabel, pgpKSLabel)
+#: ui/directoryserviceswidget.ui:22
+#, fuzzy, kde-format
+#| msgid "OpenPGP Key Selection"
+msgid "OpenPGP Keyserver:"
+msgstr "Избор опенПГП кључа"
+
+# switch-rule: t-directory > t-directory2
+#. i18n: ectx: property (title), widget (QGroupBox, x500LA)
+#: ui/directoryserviceswidget.ui:35
+#, fuzzy, kde-format
+#| msgid "Directory services:"
+msgid "X509 Directory services:"
+msgstr "Именички сервиси:"
+
+# switch-rule: t-directory > t-directory2
+#. i18n: ectx: property (whatsThis), widget (QTreeView, treeView)
+#: ui/directoryserviceswidget.ui:43
+#, fuzzy, kde-format
+#| msgid ""
+#| "This is a list of all directory services that are configured for use with "
+#| "X.509 and OpenPGP."
+msgid ""
+"This is a list of all directory services that are configured for use with "
+"X.509."
+msgstr ""
+"Ово је списак свих именичких сервиса који су подешени за коришћење са "
+"Икс.509 и опенПГП‑ом."
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:70
+#, kde-format
+msgid "Click to add a service"
+msgstr "Кликните да додате сервис."
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:73
+#, kde-format
+msgid ""
+"Click this button to create a new directory service entry as a clone of the "
+"currently selected one (or with default values, if no other is selected). "
+"You can then configure details in the table on the left hand."
+msgstr ""
+"Кликните на ово дугме да направите нови именички сервис као копију тренутно "
+"изабраног (или са подразумеваним вредностима, ако ниједан није изабран). "
+"Затим можете подесити детаље у табели лево."
+
+# >> New service
+#. i18n: ectx: property (text), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:76
+#, kde-format
+msgid "New"
+msgstr "Нови"
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:92
+#, kde-format
+msgid "Click to remove the currently selected service"
+msgstr "Кликните да уклоните тренутно изабрани сервис"
+
+# switch-rule: t-directory > t-directory2
+#. i18n: ectx: property (whatsThis), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:95
+#, kde-format
+msgid ""
+"Click this button to remove the currently selected directory service. The "
+"change will only take effect once you acknowledge the main configuration "
+"dialog."
+msgstr ""
+"Кликните на ово дугме да уклоните тренутно изабрани именички сервис. Измена "
+"ће ступити на снагу тек кад је потврдите у главном дијалогу за подешавање."
+
+#. i18n: ectx: property (text), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:98
+#, kde-format
+msgid "Delete"
+msgstr "Обриши"
+
+#. i18n: ectx: property (whatsThis), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:128
+#, kde-format
+msgid ""
+"Use this option to switch display of username and password information on or "
+"off in the above table."
+msgstr ""
+"Употребите ову опцију да укључите или искључите податке о корисничком имену "
+"и лозинки у горњој табели."
+
+#. i18n: ectx: property (text), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:131
+#, kde-format
+msgid "Show user and password information"
+msgstr "Подаци о кориснику и лозинки"
+
+# >> @title:column
+#: ui/dnattributeorderconfigwidget.cpp:73
+#, kde-format
+msgid "Description"
+msgstr "опис"
+
+#: ui/dnattributeorderconfigwidget.cpp:91
+#, kde-format
+msgid "Available attributes:"
+msgstr "Доступни атрибути:"
+
+#: ui/dnattributeorderconfigwidget.cpp:92
+#, kde-format
+msgid "Current attribute order:"
+msgstr "Тренутни редослед атрибута:"
+
+# >> @item
+#: ui/dnattributeorderconfigwidget.cpp:112
+#, kde-format
+msgid "All others"
+msgstr "сви други"
+
+#: ui/dnattributeorderconfigwidget.cpp:129
+#, kde-format
+msgid "Move to top"
+msgstr "Помери на врх"
+
+#: ui/dnattributeorderconfigwidget.cpp:130
+#, kde-format
+msgid "Move one up"
+msgstr "Помери једном нагоре"
+
+#: ui/dnattributeorderconfigwidget.cpp:131
+#, kde-format
+msgid "Remove from current attribute order"
+msgstr "Уклони из тренутног редоследа атрибута"
+
+#: ui/dnattributeorderconfigwidget.cpp:132
+#, kde-format
+msgid "Add to current attribute order"
+msgstr "Додај у тренутни редослед атрибута"
+
+#: ui/dnattributeorderconfigwidget.cpp:133
+#, kde-format
+msgid "Move one down"
+msgstr "Помери једном надоле"
+
+#: ui/dnattributeorderconfigwidget.cpp:134
+#, kde-format
+msgid "Move to bottom"
+msgstr "Помери на дно"
+
+#: ui/keyapprovaldialog.cpp:87
+#, kde-kuit-format
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>ниједно</placeholder>"
+
+#: ui/keyapprovaldialog.cpp:88
+#, kde-format
+msgid "Never Encrypt with This Key"
+msgstr "Никад не шифруј овим кључем"
+
+#: ui/keyapprovaldialog.cpp:89
+#, kde-format
+msgid "Always Encrypt with This Key"
+msgstr "Увек шифруј овим кључем"
+
+#: ui/keyapprovaldialog.cpp:90
+#, kde-format
+msgid "Encrypt Whenever Encryption is Possible"
+msgstr "Шифруј кад год је шифровање могуће"
+
+#: ui/keyapprovaldialog.cpp:91
+#, kde-format
+msgid "Always Ask"
+msgstr "Увек питај"
+
+#: ui/keyapprovaldialog.cpp:92
+#, kde-format
+msgid "Ask Whenever Encryption is Possible"
+msgstr "Питај кад год је шифровање могуће"
+
+#: ui/keyapprovaldialog.cpp:113
+#, kde-format
+msgid "Encryption Key Approval"
+msgstr "Одобрење кључа за шифровање"
+
+#: ui/keyapprovaldialog.cpp:129
+#, kde-format
+msgid "The following keys will be used for encryption:"
+msgstr "Следећи кључеви ће бити коришћени за шифровање:"
+
+#: ui/keyapprovaldialog.cpp:145
+#, kde-format
+msgid "Your keys:"
+msgstr "Ваши кључеви:"
+
+#: ui/keyapprovaldialog.cpp:157
+#, kde-format
+msgid "Recipient:"
+msgstr "Прималац:"
+
+#: ui/keyapprovaldialog.cpp:162
+#, kde-format
+msgid "Encryption keys:"
+msgstr "Кључеви за шифровање:"
+
+#: ui/keyapprovaldialog.cpp:169
+#, kde-format
+msgid "Encryption preference:"
+msgstr "Пожељно шифровање:"
+
+#: ui/keyrequester.cpp:118
+#, kde-format
+msgid "Clear"
+msgstr "Очисти"
+
+#: ui/keyrequester.cpp:121
+#, kde-format
+msgid "Change..."
+msgstr "Промени..."
+
+#: ui/keyrequester.cpp:232 ui/keyselectiondialog.cpp:256
+#, kde-kuit-format
+msgid "<placeholder>unknown</placeholder>"
+msgstr "<placeholder>непознат</placeholder>"
+
+#: ui/keyrequester.cpp:246 ui/keyselectiondialog.cpp:657
+#, kde-format
+msgid ""
+"<qt><p>An error occurred while fetching the keys from the backend:</p><p><b>"
+"%1</b></p></qt>"
+msgstr ""
+"<qt><p>Грешка при добављању кључева из позадине:</p><p><b>%1</b></p></qt>"
+
+#: ui/keyrequester.cpp:251 ui/keyrequester.cpp:283 ui/keyrequester.cpp:306
+#: ui/keyselectiondialog.cpp:630 ui/keyselectiondialog.cpp:662
+#, kde-format
+msgid "Key Listing Failed"
+msgstr "Набрајање кључева није успело"
+
+#: ui/keyrequester.cpp:281
+#, kde-format
+msgid ""
+"The OpenPGP backend does not support listing keys. Check your installation."
+msgstr ""
+"Позадина за опенПГП не подржава набрајање кључева. Проверите инсталацију."
+
+#: ui/keyrequester.cpp:304
+#, kde-format
+msgid ""
+"The S/MIME backend does not support listing keys. Check your installation."
+msgstr ""
+"Позадина за С/МИМЕ не подржава набрајање кључева. Проверите инсталацију."
+
+#: ui/keyrequester.cpp:426
+#, kde-format
+msgid "OpenPGP Key Selection"
+msgstr "Избор опенПГП кључа"
+
+#: ui/keyrequester.cpp:427
+#, kde-format
+msgid "Please select an OpenPGP key to use."
+msgstr "Изаберите жељени опенПГП кључ."
+
+#: ui/keyrequester.cpp:429
+#, kde-format
+msgid "S/MIME Key Selection"
+msgstr "Избор С/МИМЕ кључа"
+
+#: ui/keyrequester.cpp:430
+#, kde-format
+msgid "Please select an S/MIME key to use."
+msgstr "Изаберите жељени С/МИМЕ кључ."
+
+#: ui/keyrequester.cpp:432
+#, kde-format
+msgid "Key Selection"
+msgstr "Избор кључа"
+
+#: ui/keyrequester.cpp:433
+#, kde-format
+msgid "Please select an (OpenPGP or S/MIME) key to use."
+msgstr "Изаберите жељени опенПГП или С/МИМЕ кључ."
+
+#: ui/keyselectioncombo.cpp:195
+#, kde-format
+msgctxt "Name <email> (validity, type, created: date)"
+msgid "%1 (%2, %3, created: %4)"
+msgstr ""
+
+#: ui/keyselectioncombo.cpp:196
+#, kde-format
+msgctxt "Name <email>"
+msgid "%1 <%2>"
+msgstr ""
+
+# >> @title:column
+#: ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "OpenPGP"
+msgstr "опенПГП"
+
+#: ui/keyselectioncombo.cpp:347
+#, fuzzy, kde-format
+#| msgid "Fetching keys..."
+msgid "Loading keys ..."
+msgstr "Добављам кључеве..."
+
+#: ui/keyselectiondialog.cpp:98
+#, kde-format
+msgid "The key is not valid."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:106
+#, kde-format
+msgid "The key is expired."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:110
+#, kde-format
+msgid "The key is revoked."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:114
+#, kde-format
+msgid "The key is disabled."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:122
+#, fuzzy, kde-format
+#| msgid "The following keys will be used for encryption:"
+msgid "The key is not designated for encryption."
+msgstr "Следећи кључеви ће бити коришћени за шифровање:"
+
+#: ui/keyselectiondialog.cpp:128
+#, kde-format
+msgid "The key is not designated for signing."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:134
+#, kde-format
+msgid "The key is not designated for certifying."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:140
+#, kde-format
+msgid "The key is not designated for authentication."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:148
+#, kde-format
+msgid "The key is not secret."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:163
+#, kde-format
+msgid "The key is not trusted enough."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:169
+#, kde-format
+msgid "The key can be used."
+msgstr ""
+
+# >> @title:column
+#: ui/keyselectiondialog.cpp:230
+#, kde-format
+msgid "Key ID"
+msgstr "ИД кључа"
+
+# >> @title:column
+#: ui/keyselectiondialog.cpp:231
+#, kde-format
+msgid "User ID"
+msgstr "ИД корисника"
+
+#: ui/keyselectiondialog.cpp:279
+#, kde-format
+msgid "never"
+msgstr "никад"
+
+#: ui/keyselectiondialog.cpp:289 ui/keyselectiondialog.cpp:291
+#: ui/keyselectiondialog.cpp:300 ui/keyselectiondialog.cpp:302
+#, kde-format
+msgid "unknown"
+msgstr "непознат"
+
+#: ui/keyselectiondialog.cpp:289
+#, kde-format
+msgid "OpenPGP key for <b>%1</b>"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:291
+#, kde-format
+msgid "S/MIME key for <b>%1</b>"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:298
+#, kde-format
+msgctxt "Key creation date"
+msgid "Created"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:299
+#, kde-format
+msgctxt "Key Expiration date"
+msgid "Expiry"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:300
+#, kde-format
+msgctxt "Key fingerprint"
+msgid "Fingerprint"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:302
+#, kde-format
+msgctxt "Key issuer"
+msgid "Issuer"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:304
+#, kde-format
+msgctxt "Key status"
+msgid "Status"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:456
+#, kde-format
+msgid "Search for &External Certificates"
+msgstr "Потражи &спољашње сертификате"
+
+#: ui/keyselectiondialog.cpp:470
+#, kde-format
+msgid "&Search for:"
+msgstr "&Потражи:"
+
+#: ui/keyselectiondialog.cpp:494
+#, kde-format
+msgid "&Remember choice"
+msgstr "&Запамти избор"
+
+#: ui/keyselectiondialog.cpp:497
+#, kde-format
+msgid ""
+"<qt><p>If you check this box your choice will be stored and you will not be "
+"asked again.</p></qt>"
+msgstr ""
+"<qt><p>Ако попуните ову кућицу, ваш избор ће бити запамћен и нећете поново "
+"бити питани.</p></qt>"
+
+#: ui/keyselectiondialog.cpp:509
+#, kde-format
+msgid "&Reread Keys"
+msgstr "&Поново прочитај кључеве"
+
+#: ui/keyselectiondialog.cpp:510
+#, kde-format
+msgid "&Start Certificate Manager"
+msgstr "Покрени &менаџер сертификата"
+
+#: ui/keyselectiondialog.cpp:628
+#, kde-format
+msgid "No backends found for listing keys. Check your installation."
+msgstr ""
+"Није нађена ниједна позадина за набрајање кључева. Проверите инсталацију."
+
+#: ui/keyselectiondialog.cpp:644
+#, kde-format
+msgid "Could not start certificate manager; please check your installation."
+msgstr "Не могу да покренем менаџер сертификата. Проверите инсталацију."
+
+#: ui/keyselectiondialog.cpp:646
+#, kde-format
+msgid "Certificate Manager Error"
+msgstr "Грешка менаџера сертификата"
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Checking selected keys..."
+msgstr "Проверавам изабране кључеве..."
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Fetching keys..."
+msgstr "Добављам кључеве..."
+
+#: ui/keyselectiondialog.cpp:731
+#, kde-format
+msgid ""
+"<qt>One backend returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgid_plural ""
+"<qt>%1 backends returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgstr[0] ""
+"<qt>%1 позадина је вратила одсечени излаз.<p>Нису приказани сви доступни "
+"кључеви.</p></qt>"
+msgstr[1] ""
+"<qt>%1 позадине су вратиле одсечени излаз.<p>Нису приказани сви доступни "
+"кључеви.</p></qt>"
+msgstr[2] ""
+"<qt>%1 позадина је вратило одсечени излаз.<p>Нису приказани сви доступни "
+"кључеви.</p></qt>"
+msgstr[3] ""
+"<qt>Позадина је вратила одсечени излаз.<p>Нису приказани сви доступни "
+"кључеви.</p></qt>"
+
+#: ui/keyselectiondialog.cpp:736
+#, kde-format
+msgid "Key List Result"
+msgstr "Резултат набрајања кључева"
+
+#: ui/keyselectiondialog.cpp:856
+#, kde-format
+msgid "Recheck Key"
+msgstr "Поново провери кључ"
+
+#: ui/messagebox.cpp:71
+#, kde-format
+msgid "Your system does not have support for GnuPG Audit Logs"
+msgstr "Систем нема подршку за ГнуПГ‑ове дневнике ревизија."
+
+#: ui/messagebox.cpp:72
+#, kde-format
+msgid "System Error"
+msgstr "Системска грешка"
+
+#: ui/messagebox.cpp:79
+#, kde-format
+msgid ""
+"An error occurred while trying to retrieve the GnuPG Audit Log:\n"
+"%1"
+msgstr ""
+"Грешка при покушају добављања ГнуПГ‑овог дневника ревизије:\n"
+"%1"
+
+#: ui/messagebox.cpp:81
+#, kde-format
+msgid "GnuPG Audit Log Error"
+msgstr "Грешка ГнуПГ‑овог дневника ревизије"
+
+#: ui/messagebox.cpp:88
+#, kde-format
+msgid "No GnuPG Audit Log available for this operation."
+msgstr "ГнуПГ‑ов дневник ревизије није доступан за овај поступак."
+
+#: ui/messagebox.cpp:89
+#, kde-format
+msgid "No GnuPG Audit Log"
+msgstr "Нема ГнуПГ‑овог дневника ревизије"
+
+#: ui/messagebox.cpp:109 ui/messagebox.cpp:115
+#, kde-format
+msgid "GnuPG Audit Log Viewer"
+msgstr "Приказивач ГнуПГ‑овог дневника ревизије"
+
+#: ui/messagebox.cpp:121
+#, kde-format
+msgid "Signing failed: %1"
+msgstr "Потписивање није успело: %1"
+
+#: ui/messagebox.cpp:122
+#, kde-format
+msgid "Signing successful"
+msgstr "Потписивање успешно"
+
+#: ui/messagebox.cpp:133
+#, kde-format
+msgid "Encryption failed: %1"
+msgstr "Шифровање није успело: %1"
+
+#: ui/messagebox.cpp:134
+#, kde-format
+msgid "Encryption successful"
+msgstr "Шифровање успешно"
+
+#: ui/messagebox.cpp:155
+#, kde-format
+msgid "Signing Result"
+msgstr "Резултат потписивања"
+
+#: ui/messagebox.cpp:167
+#, kde-format
+msgid "Signing Error"
+msgstr "Грешка при потписивању"
+
+#: ui/messagebox.cpp:179 ui/messagebox.cpp:203
+#, kde-format
+msgid "Encryption Result"
+msgstr "Резултат шифровања"
+
+#: ui/messagebox.cpp:191 ui/messagebox.cpp:215
+#, kde-format
+msgid "Encryption Error"
+msgstr "Грешка при шифровању"
+
+#: ui/messagebox.cpp:263
+#, kde-format
+msgid "&Show Audit Log"
+msgstr "&Прикажи дневник ревизије"
+
+#: ui/progressdialog.cpp:91
+#, kde-format
+msgid "%1: %2"
+msgstr "%1: %2"
--- /dev/null
+# translation of libkleopatra.po to Swedish
+# Stefan Asserhäll <stefan.asserhall@bredband.net>, 2004, 2007, 2008, 2009, 2010.
+# Stefan Asserhall <stefan.asserhall@bredband.net>, 2005, 2014, 2016, 2017.
+msgid ""
+msgstr ""
+"Project-Id-Version: libkleopatra\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2017-07-12 06:56+0200\n"
+"PO-Revision-Date: 2017-07-12 18:36+0100\n"
+"Last-Translator: Stefan Asserhäll <stefan.asserhall@bredband.net>\n"
+"Language-Team: Swedish <kde-i18n-doc@kde.org>\n"
+"Language: sv\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Lokalize 2.0\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+
+#: kleo/checksumdefinition.cpp:107
+#, kde-format
+msgid "Error in checksum definition %1: %2"
+msgstr "Fel i definition av checksumma %1: %2"
+
+#: kleo/checksumdefinition.cpp:157
+#, kde-format
+msgid "Cannot use both %f and | in '%1'"
+msgstr "Kan inte använda både %f och | i '%1'"
+
+#: kleo/checksumdefinition.cpp:167
+#, kde-format
+msgid "Quoting error in '%1' entry"
+msgstr "Citeringsfel i posten '%1'"
+
+#: kleo/checksumdefinition.cpp:170
+#, kde-format
+msgid "'%1' too complex (would need shell)"
+msgstr "'%1' för komplicerat (skulle kräva skal)"
+
+#: kleo/checksumdefinition.cpp:174
+#, kde-format
+msgid "'%1' entry is empty/missing"
+msgstr "Posten '%1' är tom eller saknas"
+
+#: kleo/checksumdefinition.cpp:183
+#, kde-format
+msgid "'%1' empty or not found"
+msgstr "'%1' tomt eller hittades inte"
+
+#: kleo/checksumdefinition.cpp:222
+#, kde-format
+msgid "'id' entry is empty/missing"
+msgstr "Posten 'id' är tom eller saknas"
+
+#: kleo/checksumdefinition.cpp:225
+#, kde-format
+msgid "'output-file' entry is empty/missing"
+msgstr "Posten 'output-file' är tom eller saknas"
+
+#: kleo/checksumdefinition.cpp:228
+#, kde-format
+msgid "'file-patterns' entry is empty/missing"
+msgstr "Posten 'file-patterns' är tom eller saknas"
+
+#: kleo/checksumdefinition.cpp:395
+#, kde-format
+msgid "Caught unknown exception in group %1"
+msgstr "Fångade okänt undantag i grupp %1"
+
+#: kleo/dn.cpp:507
+#, kde-format
+msgid "Common name"
+msgstr "Vanligt namn"
+
+#: kleo/dn.cpp:508
+#, kde-format
+msgid "Surname"
+msgstr "Efternamn"
+
+#: kleo/dn.cpp:509
+#, kde-format
+msgid "Given name"
+msgstr "Förnamn"
+
+#: kleo/dn.cpp:510
+#, kde-format
+msgid "Location"
+msgstr "Plats"
+
+#: kleo/dn.cpp:511
+#, kde-format
+msgid "Title"
+msgstr "Titel"
+
+#: kleo/dn.cpp:512
+#, kde-format
+msgid "Organizational unit"
+msgstr "Enhet i organisation"
+
+#: kleo/dn.cpp:513
+#, kde-format
+msgid "Organization"
+msgstr "Organisation"
+
+#: kleo/dn.cpp:514
+#, kde-format
+msgid "Postal code"
+msgstr "Postnummer"
+
+#: kleo/dn.cpp:515
+#, kde-format
+msgid "Country code"
+msgstr "Landskod"
+
+#: kleo/dn.cpp:516
+#, kde-format
+msgid "State or province"
+msgstr "Delstat eller provins"
+
+#: kleo/dn.cpp:517
+#, kde-format
+msgid "Domain component"
+msgstr "Domänkomponent"
+
+#: kleo/dn.cpp:518
+#, kde-format
+msgid "Business category"
+msgstr "Affärskategori"
+
+#: kleo/dn.cpp:519
+#, kde-format
+msgid "Email address"
+msgstr "E-postadress"
+
+#: kleo/dn.cpp:520
+#, kde-format
+msgid "Mail address"
+msgstr "Brevadress"
+
+#: kleo/dn.cpp:521
+#, kde-format
+msgid "Mobile phone number"
+msgstr "Mobiltelefonnummer"
+
+#: kleo/dn.cpp:522
+#, kde-format
+msgid "Telephone number"
+msgstr "Telefonnummer"
+
+#: kleo/dn.cpp:523
+#, kde-format
+msgid "Fax number"
+msgstr "Telefaxnummer"
+
+#: kleo/dn.cpp:524
+#, kde-format
+msgid "Street address"
+msgstr "Gatuadress"
+
+#: kleo/dn.cpp:525
+#, kde-format
+msgid "Unique ID"
+msgstr "Unik identifikation"
+
+#: kleo/enum.cpp:57
+#, kde-format
+msgid "Inline OpenPGP (deprecated)"
+msgstr "OpenPGP på plats (avråds från)"
+
+#: kleo/enum.cpp:62
+#, kde-format
+msgid "OpenPGP/MIME"
+msgstr "OpenPGP/MIME"
+
+#: kleo/enum.cpp:67 ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "S/MIME"
+msgstr "S/MIME"
+
+#: kleo/enum.cpp:72
+#, kde-format
+msgid "S/MIME Opaque"
+msgstr "S/MIME ogenomskinligt"
+
+#: kleo/enum.cpp:104
+#, kde-format
+msgid "Any"
+msgstr "Vilket som helst"
+
+#: kleo/enum.cpp:177
+#, kde-format
+msgid "Never Encrypt"
+msgstr "Kryptera aldrig"
+
+#: kleo/enum.cpp:179
+#, kde-format
+msgid "Always Encrypt"
+msgstr "Kryptera alltid"
+
+#: kleo/enum.cpp:181
+#, kde-format
+msgid "Always Encrypt If Possible"
+msgstr "Kryptera alltid om möjligt"
+
+#: kleo/enum.cpp:183 kleo/enum.cpp:240
+#, kde-format
+msgid "Ask"
+msgstr "Fråga"
+
+#: kleo/enum.cpp:185 kleo/enum.cpp:242
+#, kde-format
+msgid "Ask Whenever Possible"
+msgstr "Fråga om möjligt"
+
+#: kleo/enum.cpp:187
+#, kde-kuit-format
+msgctxt "no specific preference"
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>ingen</placeholder>"
+
+#: kleo/enum.cpp:234
+#, kde-format
+msgid "Never Sign"
+msgstr "Signera aldrig"
+
+#: kleo/enum.cpp:236
+#, kde-format
+msgid "Always Sign"
+msgstr "Signera alltid"
+
+#: kleo/enum.cpp:238
+#, kde-format
+msgid "Always Sign If Possible"
+msgstr "Signera alltid om möjligt"
+
+#: kleo/enum.cpp:244
+#, kde-format
+msgctxt "no specific preference"
+msgid "<none>"
+msgstr "<ingen>"
+
+#: kleo/keyfiltermanager.cpp:85
+#, kde-format
+msgid "All Certificates"
+msgstr "Alla certifikat"
+
+#: kleo/keyfiltermanager.cpp:100
+#, kde-format
+msgid "My Certificates"
+msgstr "Mina certifikat"
+
+#: kleo/keyfiltermanager.cpp:118
+#, kde-format
+msgid "Trusted Certificates"
+msgstr "Pålitliga certifikat"
+
+#: kleo/keyfiltermanager.cpp:135
+#, kde-format
+msgid "Fully Trusted Certificates"
+msgstr "Helt pålitliga certifikat"
+
+#: kleo/keyfiltermanager.cpp:152
+#, kde-format
+msgid "Other Certificates"
+msgstr "Andra certifikat"
+
+#: kleo/keyfiltermanager.cpp:166
+#, kde-format
+msgid "VS-compliant Certificates"
+msgstr "VS-kompatibla certifikat"
+
+#: kleo/keyfiltermanager.cpp:184
+#, kde-format
+msgid "Not validated Certificates"
+msgstr "Ej validerade certifikat"
+
+#: ui/auditlogviewer.cpp:49
+#, kde-format
+msgid "View GnuPG Audit Log"
+msgstr "Visa GnuPG-övervakningslogg"
+
+#: ui/auditlogviewer.cpp:53
+#, kde-format
+msgid "&Copy to Clipboard"
+msgstr "&Kopiera till klippbordet"
+
+#: ui/auditlogviewer.cpp:59
+#, kde-format
+msgid "&Save to Disk..."
+msgstr "&Spara på hårddisk..."
+
+#: ui/auditlogviewer.cpp:95
+#, kde-format
+msgid "Choose File to Save GnuPG Audit Log to"
+msgstr "Välj fil att spara GnuPG-övervakningslogg i"
+
+#: ui/auditlogviewer.cpp:118
+#, kde-format
+msgid "Could not save to file \"%1\": %2"
+msgstr "Kunde inte spara till filen \"%1\": %2"
+
+#: ui/auditlogviewer.cpp:120
+#, kde-format
+msgid "File Save Error"
+msgstr "Fel vid spara fil"
+
+#: ui/cryptoconfigdialog.cpp:44
+#, kde-format
+msgid "Configure GnuPG Backend"
+msgstr "Anpassa GnuPG-gränssnitt"
+
+#: ui/cryptoconfigdialog.cpp:55
+#, kde-format
+msgid "&Reset"
+msgstr "Åte&rställ"
+
+#: ui/cryptoconfigmodule.cpp:160
+#, kde-format
+msgid "GpgConf Error"
+msgstr "Fel i Gpgconf"
+
+#: ui/cryptoconfigmodule.cpp:216
+#, kde-format
+msgid ""
+"The gpgconf tool used to provide the information for this dialog does not "
+"seem to be installed properly. It did not return any components. Try running "
+"\"%1\" on the command line for more information."
+msgstr ""
+"Verktyget gpgconf som används för att tillhandahålla informationen i "
+"dialogrutan verkar inte vara riktigt installerat. Det returnerade inte några "
+"komponenter. Försök köra \"%1\" på kommandoraden för ytterligare information."
+
+#: ui/cryptoconfigmodule.cpp:496
+#, kde-format
+msgctxt ""
+"Translate this to 'yes' or 'no' (use the English words!) depending on "
+"whether your language uses Sentence style capitalisation in GUI labels (yes) "
+"or not (no). Context: We get some backend strings in that have the wrong "
+"capitalizaion (in English, at least) so we need to force the first character "
+"to upper-case. It is this behaviour you can control for your language with "
+"this translation."
+msgid "yes"
+msgstr "yes"
+
+#: ui/cryptoconfigmodule.cpp:546
+#, kde-format
+msgid "0 - None"
+msgstr "0 - Inget"
+
+#: ui/cryptoconfigmodule.cpp:547
+#, kde-format
+msgid "1 - Basic"
+msgstr "1 - Enkelt"
+
+#: ui/cryptoconfigmodule.cpp:548
+#, kde-format
+msgid "2 - Verbose"
+msgstr "2 - Detaljerat"
+
+#: ui/cryptoconfigmodule.cpp:549
+#, kde-format
+msgid "3 - More Verbose"
+msgstr "3 - Mer detaljerat"
+
+#: ui/cryptoconfigmodule.cpp:550
+#, kde-format
+msgid "4 - All"
+msgstr "4 - Allt"
+
+#: ui/cryptoconfigmodule.cpp:559
+#, kde-format
+msgid "Set the debugging level to"
+msgstr "Ställ in avlusningsnivån till "
+
+#: ui/cryptoconfigmodule.cpp:787
+#, kde-format
+msgid "Show..."
+msgstr "Visa..."
+
+#: ui/cryptoconfigmodule.cpp:787 ui/cryptoconfigmodule.cpp:876
+#, kde-format
+msgid "Edit..."
+msgstr "Redigera..."
+
+#: ui/cryptoconfigmodule.cpp:841
+#, kde-format
+msgid "Configure LDAP Servers"
+msgstr "Anpassa LDAP-servrar"
+
+#: ui/cryptoconfigmodule.cpp:862
+#, kde-format
+msgid "None configured"
+msgstr "Ingen inställd"
+
+#: ui/cryptoconfigmodule.cpp:864
+#, kde-format
+msgid "1 server configured"
+msgid_plural "%1 servers configured"
+msgstr[0] "1 server inställd"
+msgstr[1] "%1 servrar inställda"
+
+#: ui/cryptoconfigmodule.cpp:879
+#, kde-format
+msgid "Use keyserver at"
+msgstr "Använd nyckelserver på"
+
+#: ui/cryptoconfigmodule.cpp:968
+#, kde-format
+msgid "Configure Keyservers"
+msgstr "Anpassa nyckelservrar"
+
+#: ui/directoryserviceswidget.cpp:67
+#, kde-format
+msgctxt "default server name, keep it a valid domain name, ie. no spaces"
+msgid "server"
+msgstr "server"
+
+#: ui/directoryserviceswidget.cpp:95
+#, kde-format
+msgid "hkp"
+msgstr "hkp"
+
+#: ui/directoryserviceswidget.cpp:96
+#, kde-format
+msgid "http"
+msgstr "http"
+
+#: ui/directoryserviceswidget.cpp:97
+#, kde-format
+msgid "https"
+msgstr "https"
+
+#: ui/directoryserviceswidget.cpp:98
+#, kde-format
+msgid "ftp"
+msgstr "ftp"
+
+#: ui/directoryserviceswidget.cpp:99
+#, kde-format
+msgid "ftps"
+msgstr "ftps"
+
+#: ui/directoryserviceswidget.cpp:100
+#, kde-format
+msgid "ldap"
+msgstr "ldap"
+
+#: ui/directoryserviceswidget.cpp:101
+#, kde-format
+msgid "ldaps"
+msgstr "ldaps"
+
+#: ui/directoryserviceswidget.cpp:588
+#, kde-format
+msgid "Server Name"
+msgstr "Servernamn"
+
+#: ui/directoryserviceswidget.cpp:589
+#, kde-format
+msgid "Server Port"
+msgstr "Serverport"
+
+#: ui/directoryserviceswidget.cpp:590
+#, kde-format
+msgid "Base DN"
+msgstr "Basdomännamn"
+
+#: ui/directoryserviceswidget.cpp:591
+#, kde-format
+msgid "User Name"
+msgstr "Användar-id"
+
+#: ui/directoryserviceswidget.cpp:592
+#, kde-format
+msgid "Password"
+msgstr "Lösenord"
+
+#: ui/directoryserviceswidget.cpp:614
+#, kde-format
+msgid "(read-only)"
+msgstr "(skrivskyddat)"
+
+#: ui/directoryserviceswidget.cpp:616
+#, kde-format
+msgctxt "amended tooltip; %1: original tooltip"
+msgid "%1 (read-only)"
+msgstr "%1 (skrivskyddat)"
+
+#: ui/directoryserviceswidget.cpp:739
+#, kde-format
+msgid ""
+"Enter the name or IP address of the server hosting the directory service."
+msgstr ""
+"Skriv in namn eller IP-adress för servern som är värd för katalogtjänsten."
+
+#: ui/directoryserviceswidget.cpp:741
+#, kde-format
+msgid ""
+"<b>(Optional, the default is fine in most cases)</b> Pick the port number "
+"the directory service is listening on."
+msgstr ""
+"<b>(Valfri, standardvärdet är bra i de flesta fall)</b> Välj portnummer som "
+"katalogtjänsten lyssnar på."
+
+#: ui/directoryserviceswidget.cpp:744
+#, kde-format
+msgid ""
+"<b>(Only for LDAP)</b> Enter the base DN for this LDAP server to limit "
+"searches to only that subtree of the directory."
+msgstr ""
+"<b>(Bara för LDAP)</b> Skriv in basdomännamn för LDAP-servern för att "
+"begränsa sökningar till bara dessa underkataloger i katalogen."
+
+#: ui/directoryserviceswidget.cpp:747
+#, kde-format
+msgid "<b>(Optional)</b> Enter your user name here, if needed."
+msgstr "<b>(Valfri)</b> Skriv in användarnamn här, om det behövs."
+
+#: ui/directoryserviceswidget.cpp:749
+#, kde-format
+msgid ""
+"<b>(Optional, not recommended)</b> Enter your password here, if needed. Note "
+"that the password will be saved in the clear in a config file in your home "
+"directory."
+msgstr ""
+"<b>(Valfri, rekommenderas inte)</b> Skriv in ditt lösenord här. om det "
+"behövs. Observera att lösenordet sparas som klartext i en inställningsfil i "
+"din hemkatalog."
+
+#. i18n: ectx: property (windowTitle), widget (QWidget, DirectoryServicesWidget)
+#: ui/directoryserviceswidget.ui:14
+#, kde-format
+msgid "Directory Services Configuration"
+msgstr "Inställning av katalogtjänster"
+
+#. i18n: ectx: property (text), widget (QLabel, pgpKSLabel)
+#: ui/directoryserviceswidget.ui:22
+#, kde-format
+msgid "OpenPGP Keyserver:"
+msgstr "OpenPGP-nyckelserver:"
+
+#. i18n: ectx: property (title), widget (QGroupBox, x500LA)
+#: ui/directoryserviceswidget.ui:35
+#, kde-format
+msgid "X509 Directory services:"
+msgstr "X509-katalogtjänster:"
+
+#. i18n: ectx: property (whatsThis), widget (QTreeView, treeView)
+#: ui/directoryserviceswidget.ui:43
+#, kde-format
+msgid ""
+"This is a list of all directory services that are configured for use with "
+"X.509."
+msgstr ""
+"Det här är en lista med alla katalogtjänster som är inställda för användning "
+"med X.509."
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:70
+#, kde-format
+msgid "Click to add a service"
+msgstr "Klicka för att lägga till en tjänst"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:73
+#, kde-format
+msgid ""
+"Click this button to create a new directory service entry as a clone of the "
+"currently selected one (or with default values, if no other is selected). "
+"You can then configure details in the table on the left hand."
+msgstr ""
+"Klicka på knappen för att skapa en ny post med en katalogtjänst som är en "
+"kopia av den som för närvarande är markerad (eller med standardvärden, om "
+"ingen annan är markerad). Därefter kan du ställa in detaljinformation i "
+"tabellen till vänster."
+
+#. i18n: ectx: property (text), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:76
+#, kde-format
+msgid "New"
+msgstr "Ny"
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:92
+#, kde-format
+msgid "Click to remove the currently selected service"
+msgstr "Klicka för att ta bort tjänsten som för närvarande är markerad"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:95
+#, kde-format
+msgid ""
+"Click this button to remove the currently selected directory service. The "
+"change will only take effect once you acknowledge the main configuration "
+"dialog."
+msgstr ""
+"Klicka på knappen för att ta bort katalogtjänsten som för närvarande är "
+"vald. Ändringen får ingen effekt förrän du bekräftar den huvudsakliga "
+"inställningsdialogrutan."
+
+#. i18n: ectx: property (text), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:98
+#, kde-format
+msgid "Delete"
+msgstr "Ta bort"
+
+#. i18n: ectx: property (whatsThis), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:128
+#, kde-format
+msgid ""
+"Use this option to switch display of username and password information on or "
+"off in the above table."
+msgstr ""
+"Använd alternativet för att stänga av eller sätta på visning av användarnamn "
+"och lösenord i tabellen ovan."
+
+#. i18n: ectx: property (text), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:131
+#, kde-format
+msgid "Show user and password information"
+msgstr "Visa användare och lösenordsinformation"
+
+#: ui/dnattributeorderconfigwidget.cpp:73
+#, kde-format
+msgid "Description"
+msgstr "Beskrivning"
+
+#: ui/dnattributeorderconfigwidget.cpp:91
+#, kde-format
+msgid "Available attributes:"
+msgstr "Tillgängliga egenskaper:"
+
+#: ui/dnattributeorderconfigwidget.cpp:92
+#, kde-format
+msgid "Current attribute order:"
+msgstr "Nuvarande egenskapsordning:"
+
+#: ui/dnattributeorderconfigwidget.cpp:112
+#, kde-format
+msgid "All others"
+msgstr "Alla andra"
+
+#: ui/dnattributeorderconfigwidget.cpp:129
+#, kde-format
+msgid "Move to top"
+msgstr "Flytta längst upp"
+
+#: ui/dnattributeorderconfigwidget.cpp:130
+#, kde-format
+msgid "Move one up"
+msgstr "Flytta upp ett steg"
+
+#: ui/dnattributeorderconfigwidget.cpp:131
+#, kde-format
+msgid "Remove from current attribute order"
+msgstr "Ta bort från nuvarande egenskapsordning"
+
+#: ui/dnattributeorderconfigwidget.cpp:132
+#, kde-format
+msgid "Add to current attribute order"
+msgstr "Lägg till i nuvarande egenskapsordning"
+
+#: ui/dnattributeorderconfigwidget.cpp:133
+#, kde-format
+msgid "Move one down"
+msgstr "Flytta ner ett steg"
+
+#: ui/dnattributeorderconfigwidget.cpp:134
+#, kde-format
+msgid "Move to bottom"
+msgstr "Flytta längst ner"
+
+#: ui/keyapprovaldialog.cpp:87
+#, kde-kuit-format
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>ingen</placeholder>"
+
+#: ui/keyapprovaldialog.cpp:88
+#, kde-format
+msgid "Never Encrypt with This Key"
+msgstr "Kryptera aldrig med den här nyckeln"
+
+#: ui/keyapprovaldialog.cpp:89
+#, kde-format
+msgid "Always Encrypt with This Key"
+msgstr "Kryptera alltid med den här nyckeln"
+
+#: ui/keyapprovaldialog.cpp:90
+#, kde-format
+msgid "Encrypt Whenever Encryption is Possible"
+msgstr "Kryptera så snart kryptering är möjlig"
+
+#: ui/keyapprovaldialog.cpp:91
+#, kde-format
+msgid "Always Ask"
+msgstr "Fråga alltid"
+
+#: ui/keyapprovaldialog.cpp:92
+#, kde-format
+msgid "Ask Whenever Encryption is Possible"
+msgstr "Fråga så snart kryptering är möjlig"
+
+#: ui/keyapprovaldialog.cpp:113
+#, kde-format
+msgid "Encryption Key Approval"
+msgstr "Godkänn krypteringsnyckel"
+
+#: ui/keyapprovaldialog.cpp:129
+#, kde-format
+msgid "The following keys will be used for encryption:"
+msgstr "Följande nycklar kommer att användas för kryptering:"
+
+#: ui/keyapprovaldialog.cpp:145
+#, kde-format
+msgid "Your keys:"
+msgstr "Dina nycklar:"
+
+#: ui/keyapprovaldialog.cpp:157
+#, kde-format
+msgid "Recipient:"
+msgstr "Mottagare:"
+
+#: ui/keyapprovaldialog.cpp:162
+#, kde-format
+msgid "Encryption keys:"
+msgstr "Krypteringsnycklar:"
+
+#: ui/keyapprovaldialog.cpp:169
+#, kde-format
+msgid "Encryption preference:"
+msgstr "Krypteringsinställning:"
+
+#: ui/keyrequester.cpp:118
+#, kde-format
+msgid "Clear"
+msgstr "Rensa"
+
+#: ui/keyrequester.cpp:121
+#, kde-format
+msgid "Change..."
+msgstr "Ändra..."
+
+#: ui/keyrequester.cpp:232 ui/keyselectiondialog.cpp:256
+#, kde-kuit-format
+msgid "<placeholder>unknown</placeholder>"
+msgstr "<placeholder>okänd</placeholder>"
+
+#: ui/keyrequester.cpp:246 ui/keyselectiondialog.cpp:657
+#, kde-format
+msgid ""
+"<qt><p>An error occurred while fetching the keys from the backend:</p><p><b>"
+"%1</b></p></qt>"
+msgstr ""
+"<qt><p>Ett fel uppstod när nycklarna hämtades från gränssnittet:</p><p><b>"
+"%1</b></p></qt>"
+
+#: ui/keyrequester.cpp:251 ui/keyrequester.cpp:283 ui/keyrequester.cpp:306
+#: ui/keyselectiondialog.cpp:630 ui/keyselectiondialog.cpp:662
+#, kde-format
+msgid "Key Listing Failed"
+msgstr "Listning av nycklar misslyckades"
+
+#: ui/keyrequester.cpp:281
+#, kde-format
+msgid ""
+"The OpenPGP backend does not support listing keys. Check your installation."
+msgstr ""
+"OpenPGP-gränssnittet stöder inte att nycklar listas. Kontrollera "
+"installationen."
+
+#: ui/keyrequester.cpp:304
+#, kde-format
+msgid ""
+"The S/MIME backend does not support listing keys. Check your installation."
+msgstr ""
+"S/MIME-gränssnittet stöder inte att nycklar listas. Kontrollera "
+"installationen."
+
+#: ui/keyrequester.cpp:426
+#, kde-format
+msgid "OpenPGP Key Selection"
+msgstr "Val av OpenPGP-nyckel"
+
+#: ui/keyrequester.cpp:427
+#, kde-format
+msgid "Please select an OpenPGP key to use."
+msgstr "Välj en OpenPGP-nyckel som ska användas."
+
+#: ui/keyrequester.cpp:429
+#, kde-format
+msgid "S/MIME Key Selection"
+msgstr "S/MIME-nyckelval"
+
+#: ui/keyrequester.cpp:430
+#, kde-format
+msgid "Please select an S/MIME key to use."
+msgstr "Välj en S/MIME-nyckel att använda."
+
+#: ui/keyrequester.cpp:432
+#, kde-format
+msgid "Key Selection"
+msgstr "Nyckelval"
+
+#: ui/keyrequester.cpp:433
+#, kde-format
+msgid "Please select an (OpenPGP or S/MIME) key to use."
+msgstr "Välj en OpenPGP- eller S/MIME-nyckel att använda."
+
+#: ui/keyselectioncombo.cpp:195
+#, kde-format
+msgctxt "Name <email> (validity, type, created: date)"
+msgid "%1 (%2, %3, created: %4)"
+msgstr "%1 (%2, %3, skapad: %4)"
+
+#: ui/keyselectioncombo.cpp:196
+#, kde-format
+msgctxt "Name <email>"
+msgid "%1 <%2>"
+msgstr "%1 <%2>"
+
+#: ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "OpenPGP"
+msgstr "OpenPGP"
+
+#: ui/keyselectioncombo.cpp:347
+#, kde-format
+msgid "Loading keys ..."
+msgstr "Läser in nycklar..."
+
+#: ui/keyselectiondialog.cpp:98
+#, kde-format
+msgid "The key is not valid."
+msgstr "Nyckeln är inte giltig."
+
+#: ui/keyselectiondialog.cpp:106
+#, kde-format
+msgid "The key is expired."
+msgstr "Nyckeln har utgått."
+
+#: ui/keyselectiondialog.cpp:110
+#, kde-format
+msgid "The key is revoked."
+msgstr "Nyckeln har återkallats."
+
+#: ui/keyselectiondialog.cpp:114
+#, kde-format
+msgid "The key is disabled."
+msgstr "Nyckeln är inaktiverad."
+
+#: ui/keyselectiondialog.cpp:122
+#, kde-format
+msgid "The key is not designated for encryption."
+msgstr "Nyckeln är inte avsedd för kryptering."
+
+#: ui/keyselectiondialog.cpp:128
+#, kde-format
+msgid "The key is not designated for signing."
+msgstr "Nyckeln är inte avsedd för signering."
+
+#: ui/keyselectiondialog.cpp:134
+#, kde-format
+msgid "The key is not designated for certifying."
+msgstr "Nyckeln är inte avsedd för certifiering."
+
+#: ui/keyselectiondialog.cpp:140
+#, kde-format
+msgid "The key is not designated for authentication."
+msgstr "Nyckeln är inte avsedd för behörighetskontroll."
+
+#: ui/keyselectiondialog.cpp:148
+#, kde-format
+msgid "The key is not secret."
+msgstr "Nyckeln är inte hemlig."
+
+#: ui/keyselectiondialog.cpp:163
+#, kde-format
+msgid "The key is not trusted enough."
+msgstr "Nyckeln är inte tillräckligt pålitlig."
+
+#: ui/keyselectiondialog.cpp:169
+#, kde-format
+msgid "The key can be used."
+msgstr "Nyckeln kan användas."
+
+#: ui/keyselectiondialog.cpp:230
+#, kde-format
+msgid "Key ID"
+msgstr "Nyckel-ID"
+
+#: ui/keyselectiondialog.cpp:231
+#, kde-format
+msgid "User ID"
+msgstr "Användar-id"
+
+#: ui/keyselectiondialog.cpp:279
+#, kde-format
+msgid "never"
+msgstr "aldrig"
+
+#: ui/keyselectiondialog.cpp:289 ui/keyselectiondialog.cpp:291
+#: ui/keyselectiondialog.cpp:300 ui/keyselectiondialog.cpp:302
+#, kde-format
+msgid "unknown"
+msgstr "okänd"
+
+#: ui/keyselectiondialog.cpp:289
+#, kde-format
+msgid "OpenPGP key for <b>%1</b>"
+msgstr "OpenPGP-nyckel för <b>%1</b>"
+
+#: ui/keyselectiondialog.cpp:291
+#, kde-format
+msgid "S/MIME key for <b>%1</b>"
+msgstr "S/MIME-nyckel för <b>%1</b>"
+
+#: ui/keyselectiondialog.cpp:298
+#, kde-format
+msgctxt "Key creation date"
+msgid "Created"
+msgstr "Skapad"
+
+#: ui/keyselectiondialog.cpp:299
+#, kde-format
+msgctxt "Key Expiration date"
+msgid "Expiry"
+msgstr "Utgår"
+
+#: ui/keyselectiondialog.cpp:300
+#, kde-format
+msgctxt "Key fingerprint"
+msgid "Fingerprint"
+msgstr "Fingeravtryck"
+
+#: ui/keyselectiondialog.cpp:302
+#, kde-format
+msgctxt "Key issuer"
+msgid "Issuer"
+msgstr "Utfärdare"
+
+#: ui/keyselectiondialog.cpp:304
+#, kde-format
+msgctxt "Key status"
+msgid "Status"
+msgstr "Status"
+
+#: ui/keyselectiondialog.cpp:456
+#, kde-format
+msgid "Search for &External Certificates"
+msgstr "Sök efter &externa certifikat"
+
+#: ui/keyselectiondialog.cpp:470
+#, kde-format
+msgid "&Search for:"
+msgstr "&Sök efter:"
+
+#: ui/keyselectiondialog.cpp:494
+#, kde-format
+msgid "&Remember choice"
+msgstr "&Kom ihåg val"
+
+#: ui/keyselectiondialog.cpp:497
+#, kde-format
+msgid ""
+"<qt><p>If you check this box your choice will be stored and you will not be "
+"asked again.</p></qt>"
+msgstr ""
+"<qt><p>Om du markerar den här rutan lagras valet och du blir inte tillfrågad "
+"igen.</p></qt>"
+
+#: ui/keyselectiondialog.cpp:509
+#, kde-format
+msgid "&Reread Keys"
+msgstr "Läs &nycklar igen"
+
+#: ui/keyselectiondialog.cpp:510
+#, kde-format
+msgid "&Start Certificate Manager"
+msgstr "&Starta certifikathantering"
+
+#: ui/keyselectiondialog.cpp:628
+#, kde-format
+msgid "No backends found for listing keys. Check your installation."
+msgstr ""
+"Inga gränssnitt hittades för att lista nycklar. Kontrollera installationen."
+
+#: ui/keyselectiondialog.cpp:644
+#, kde-format
+msgid "Could not start certificate manager; please check your installation."
+msgstr "Kunde inte starta certifikathanteraren. Kontrollera installationen."
+
+#: ui/keyselectiondialog.cpp:646
+#, kde-format
+msgid "Certificate Manager Error"
+msgstr "Fel i certifikathanteringen"
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Checking selected keys..."
+msgstr "Kontrollerar markerade nycklar..."
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Fetching keys..."
+msgstr "Hämtar nycklar..."
+
+#: ui/keyselectiondialog.cpp:731
+#, kde-format
+msgid ""
+"<qt>One backend returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgid_plural ""
+"<qt>%1 backends returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgstr[0] ""
+"<qt>Ett gränssnitt returnerade avkortad utmatning.<p>Alla tillgängliga "
+"nycklar visas inte</p></qt>"
+msgstr[1] ""
+"<qt>%1 gränssnitt returnerade avkortad utmatning.<p>Alla tillgängliga "
+"nycklar visas inte</p></qt>"
+
+#: ui/keyselectiondialog.cpp:736
+#, kde-format
+msgid "Key List Result"
+msgstr "Resultat av nyckellistning"
+
+#: ui/keyselectiondialog.cpp:856
+#, kde-format
+msgid "Recheck Key"
+msgstr "Kontrollera nyckel igen"
+
+#: ui/messagebox.cpp:71
+#, kde-format
+msgid "Your system does not have support for GnuPG Audit Logs"
+msgstr "Systemet har inte stöd för GnuPG-övervakningsloggar"
+
+#: ui/messagebox.cpp:72
+#, kde-format
+msgid "System Error"
+msgstr "Systemfel"
+
+#: ui/messagebox.cpp:79
+#, kde-format
+msgid ""
+"An error occurred while trying to retrieve the GnuPG Audit Log:\n"
+"%1"
+msgstr ""
+"Ett fel uppstod vid försök att hämta GnuPG-övervakningslogg:\n"
+"%1"
+
+#: ui/messagebox.cpp:81
+#, kde-format
+msgid "GnuPG Audit Log Error"
+msgstr "Fel för GnuPG-övervakningslogg"
+
+#: ui/messagebox.cpp:88
+#, kde-format
+msgid "No GnuPG Audit Log available for this operation."
+msgstr "Någon GnuPG-övervakningslogg är inte tillgänglig för åtgärden."
+
+#: ui/messagebox.cpp:89
+#, kde-format
+msgid "No GnuPG Audit Log"
+msgstr "Ingen GnuPG-övervakningslogg"
+
+#: ui/messagebox.cpp:109 ui/messagebox.cpp:115
+#, kde-format
+msgid "GnuPG Audit Log Viewer"
+msgstr "Visning av GnuPG-övervakningslogg"
+
+#: ui/messagebox.cpp:121
+#, kde-format
+msgid "Signing failed: %1"
+msgstr "Signering misslyckades: %1"
+
+#: ui/messagebox.cpp:122
+#, kde-format
+msgid "Signing successful"
+msgstr "Signering lyckades"
+
+#: ui/messagebox.cpp:133
+#, kde-format
+msgid "Encryption failed: %1"
+msgstr "Kryptering misslyckades: %1"
+
+#: ui/messagebox.cpp:134
+#, kde-format
+msgid "Encryption successful"
+msgstr "Kryptering lyckades"
+
+#: ui/messagebox.cpp:155
+#, kde-format
+msgid "Signing Result"
+msgstr "Signeringsresultat"
+
+#: ui/messagebox.cpp:167
+#, kde-format
+msgid "Signing Error"
+msgstr "Signeringsfel"
+
+#: ui/messagebox.cpp:179 ui/messagebox.cpp:203
+#, kde-format
+msgid "Encryption Result"
+msgstr "Krypteringsresultat"
+
+#: ui/messagebox.cpp:191 ui/messagebox.cpp:215
+#, kde-format
+msgid "Encryption Error"
+msgstr "Krypteringsfel"
+
+#: ui/messagebox.cpp:263
+#, kde-format
+msgid "&Show Audit Log"
+msgstr "Vi&sa övervakningslogg"
+
+#: ui/progressdialog.cpp:91
+#, kde-format
+msgid "%1: %2"
+msgstr "%1: %2"
+
+#~ msgctxt "New X.509 Directory Server"
+#~ msgid "X.509"
+#~ msgstr "X.509"
+
+#~ msgctxt "New OpenPGP Directory Server"
+#~ msgid "OpenPGP"
+#~ msgstr "OpenPGP"
+
+#~ msgid "Scheme"
+#~ msgstr "Scheme"
+
+#~ msgid "X.509"
+#~ msgstr "X.509"
+
+#~ msgid ""
+#~ "Select the access scheme (scheme) that the directory service is available "
+#~ "through."
+#~ msgstr "Välj åtkomstmetod (scheme) som katalogtjänsten är tillgänglig via."
+
+#~ msgid ""
+#~ "Check this column if this directory service is providing S/MIME (X.509) "
+#~ "certificates."
+#~ msgstr ""
+#~ "Markera kolumnen om katalogtjänsten tillhandahåller S/MIME (X.509)-"
+#~ "certifikat."
+
+#~ msgid ""
+#~ "Check this column if this directory service is providing OpenPGP "
+#~ "certificates."
+#~ msgstr ""
+#~ "Markera kolumnen om katalogtjänsten tillhandahåller OpenPGP-certifikat."
+
+#~ msgid "0 - None (no debugging at all)"
+#~ msgstr "0 - Ingen (ingen felsökning alls)"
+
+#~ msgid "1 - Basic (some basic debug messages)"
+#~ msgstr "1 - Grundläggande (vissa grundläggande felsökningsmeddelanden)"
+
+#~ msgid "2 - Advanced (more verbose debug messages)"
+#~ msgstr "2 - Avancerat (mer ordrika felsökningsmeddelanden)"
+
+#~ msgid "3 - Expert (even more detailed messages)"
+#~ msgstr "3 - Expert (ännu mer detaljerade meddelanden)"
+
+#~ msgid "4 - Guru (all of the debug messages you can get)"
+#~ msgstr "4 - Guru (alla felsökningsmeddelanden du kan)"
+
+#~ msgid "General"
+#~ msgstr "Allmänt"
+
+#~ msgid "Chiasmus"
+#~ msgstr "Chiasmus"
+
+#~ msgid "Chiasmus command line tool"
+#~ msgstr "Chiasmus-kommandoradsverktyg"
+
+#~ msgid "Unsupported protocol \"%1\""
+#~ msgstr "Protokoll som inte stöds \"%1\""
+
+#~ msgid "File \"%1\" does not exist or is not executable."
+#~ msgstr "Filen \"%1\" finns inte eller kan inte köras."
+
+#~ msgid "Output from chiasmus"
+#~ msgstr "Utmatning från chiasmus"
+
+#~ msgid "Decryption failed: %1"
+#~ msgstr "Kryptering misslyckades: %1"
+
+#~ msgid ""
+#~ "The following was received on stderr:\n"
+#~ "%1"
+#~ msgstr ""
+#~ "Följande emottogs på standardfelutmatningen:\n"
+#~ "%1"
+
+#~ msgid "Failed to load %1: %2"
+#~ msgstr "Misslyckades ladda %1: %2"
+
+#~ msgid "Library does not contain the symbol \"Chiasmus\"."
+#~ msgstr "Biblioteket innehåller inte symbolen \"Chiasmus\"."
+
+#~ msgid "Scanning directory %1..."
+#~ msgstr "Söker i katalogen %1..."
+
+#~ msgid "GpgME"
+#~ msgstr "GpgME"
+
+#~ msgid "GPGME was compiled without support for %1."
+#~ msgstr "GPGME kompilerades utan stöd för %1."
+
+#~ msgid "Engine %1 is not installed properly."
+#~ msgstr "Gränssnittet %1 är inte riktigt installerad."
+
+#~ msgid "Engine %1 version %2 installed, but at least version %3 is required."
+#~ msgstr ""
+#~ "Gränssnittet %1 version %2 är installerad, men åtminstone version %3 "
+#~ "krävs."
+
+#~ msgid "Unknown problem with engine for protocol %1."
+#~ msgstr "Okänt fel med protokollgränssnitt %1."
+
+#~ msgid "program terminated unexpectedly"
+#~ msgstr "programmet avslutades oväntat"
+
+#~ msgid "program not found or cannot be started"
+#~ msgstr "programmet hittades inte eller kunde inte startas"
+
+#~ msgid "<qt>Failed to execute gpgconf:<p>%1</p></qt>"
+#~ msgstr "<qt>Misslyckades köra gpgconf:<p>%1</p></qt>"
+
+#~ msgid ""
+#~ "Could not start gpgconf.\n"
+#~ "Check that gpgconf is in the PATH and that it can be started."
+#~ msgstr ""
+#~ "Kunde inte starta gpgconf.\n"
+#~ "Kontrollera att gpgconf finns i sökvägen och att det kan startas."
+
+#~ msgid "Error from gpgconf while saving configuration: %1"
+#~ msgstr "Fel från gpgconf när inställningarna sparades: %1"
+
+#~ msgid "Generating DSA key..."
+#~ msgstr "Skapar DSA-nyckel..."
+
+#~ msgid "Generating ElGamal key..."
+#~ msgstr "Skapar ElGamal-nyckel..."
+
+#~ msgid "Searching for a large prime number..."
+#~ msgstr "Söker efter ett stort primtal..."
+
+#~ msgid ""
+#~ "Waiting for new entropy from random number generator (you might want to "
+#~ "exercise the harddisks or move the mouse)..."
+#~ msgstr ""
+#~ "Väntar på ny entropi från slumptalsgeneratorn (du bör kanske använda "
+#~ "hårddiskarna eller flytta musen)..."
+
+#~ msgid "Please wait..."
+#~ msgstr "Vänta..."
+
+#~ msgid ""
+#~ "Starting gpg-agent (you should consider starting a global instance "
+#~ "instead)..."
+#~ msgstr ""
+#~ "Starta gpg-agenten (du bör fundera på att starta en allmän instans "
+#~ "istället)..."
+
+#~ msgid "While scanning for %1 support in backend %2:"
+#~ msgstr "Vid sökning efter stöd för %1 i gränssnittet %2:"
+
+#~ msgctxt "progress info: \"%1 of %2\""
+#~ msgid "%1/%2"
+#~ msgstr "%1/%2"
+
+#~ msgid ""
+#~ "OpenPGP key for %1\n"
+#~ "Created: %2\n"
+#~ "Expiry: %3\n"
+#~ "Fingerprint: %4"
+#~ msgstr ""
+#~ "OpenPGP-nyckel för %1\n"
+#~ "Skapad: %2\n"
+#~ "Utgår: %3\n"
+#~ "Fingeravtryck: %4"
+
+#~ msgid ""
+#~ "S/MIME key for %1\n"
+#~ "Created: %2\n"
+#~ "Expiry: %3\n"
+#~ "Fingerprint: %4\n"
+#~ "Issuer: %5"
+#~ msgstr ""
+#~ "S/MIME-nyckel för %1\n"
+#~ "Skapad: %2\n"
+#~ "Utgår: %3\n"
+#~ "Fingeravtryck: %4\n"
+#~ "Utfärdare: %5"
+
+#~ msgid "Copy Audit Log to Clipboard"
+#~ msgstr "Kopiera ljudlogg till klippbordet"
+
+#~ msgid "Add or Change Directory Service"
+#~ msgstr "Lägg till eller ändra katalogtjänst"
+
+#~ msgid "&Server name:"
+#~ msgstr "&Servernamn:"
+
+#~ msgid "389"
+#~ msgstr "389"
+
+#~ msgid "&User name (optional):"
+#~ msgstr "An&vändarnamn (valfritt):"
+
+#~ msgid "Pass&word (optional):"
+#~ msgstr "Lösen&ord (valfritt):"
+
+#~ msgid "&OK"
+#~ msgstr "&Ok"
+
+#~ msgid "&Cancel"
+#~ msgstr "&Avbryt"
+
+#~ msgid "&Base DN:"
+#~ msgstr "&Basdomännamn:"
+
+#~ msgid "&Port:"
+#~ msgstr "&Port:"
+
+#~ msgid "'%1' not found in filesystem"
+#~ msgstr "'%1' hittades inte i filsystemet"
+
+#~ msgctxt "NAME OF TRANSLATORS"
+#~ msgid "Your names"
+#~ msgstr "Stefan Asserhäll"
+
+#~ msgctxt "EMAIL OF TRANSLATORS"
+#~ msgid "Your emails"
+#~ msgstr "stefan.asserhall@bredband.net"
+
+#~ msgid "'create-command' entry is empty/missing"
+#~ msgstr "Posten 'create-command' är tom eller saknas"
+
+#~ msgid "Cannot use both %f and | in verify-command"
+#~ msgstr "Kan inte använda både %f och | i kommandot verifiera"
+
+#~ msgid "Quoting error in 'verify-command' entry"
+#~ msgstr "Citeringsfel i posten 'verify-command'"
+
+#~ msgid "'verify-command' too complex (would need shell)"
+#~ msgstr "'verify-command' för komplicerat (skulle kräva skal)"
+
+#~ msgid "'verify-command' entry is empty/missing"
+#~ msgstr "Posten 'verify-command' är tom eller saknas"
+
+#~ msgid "'verify-command' not found in filesystem"
+#~ msgstr "Hittade inte 'verify-command' i filsystemet"
+
+#~ msgid "'verify-command' empty or not found"
+#~ msgstr "'verify-command' tomt eller hittades inte"
+
+#~ msgid "failed"
+#~ msgstr "misslyckades"
+
+#~ msgctxt ""
+#~ "Items in Kleo::BackendConfigWidget listview (1: protocol; 2: "
+#~ "implementation name)"
+#~ msgid "%1 (%2)"
+#~ msgstr "%1 (%2)"
+
+#~ msgid "Available Backends"
+#~ msgstr "Tillgängliga gränssnitt"
+
+#~ msgid "Confi&gure..."
+#~ msgstr "A&npassa..."
+
+#~ msgid "Rescan"
+#~ msgstr "Avsök igen"
+
+#~ msgid "The following problems where encountered during scanning:"
+#~ msgstr "Följande problem stöttes på under sökningen:"
+
+#~ msgctxt "@title:window Results of the scanning"
+#~ msgid "Scan Results"
+#~ msgstr "Sökresultat"
+
+#~ msgid "(Unknown Protocol)"
+#~ msgstr "(Okänt protokoll)"
+
+#~ msgid "Error while initializing plugin \"%1\""
+#~ msgstr "Fel vid initiering av insticksprogram \"%1\""
--- /dev/null
+# translation of libkleopatra.po to Türkçe
+# translation of libkleopatra.po to Turkish
+# Görkem Çetin <gorkem@gorkemcetin.com>, 2004.
+# Yaşar ŞENTÜRK <yasar@kde.org.tr>, 2005.
+# Serdar Soytetir <tulliana@gmail.com>, 2008, 2009.
+# H. İbrahim Güngör <ibrahim@pardus.org.tr>, 2010.
+# Volkan Gezer <volkangezer@gmail.com>, 2013.
+# Kaan Ozdincer <kaanozdincer@gmail.com>, 2014.
+msgid ""
+msgstr ""
+"Project-Id-Version: libkleopatra\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2017-07-12 06:56+0200\n"
+"PO-Revision-Date: 2017-08-17 09:31+0000\n"
+"Last-Translator: Kaan <kaanozdincer@gmail.com>\n"
+"Language-Team: Turkish <kde-l10n-tr@kde.org>\n"
+"Language: tr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"X-Generator: Lokalize 1.4\n"
+
+#: kleo/checksumdefinition.cpp:107
+#, kde-format
+msgid "Error in checksum definition %1: %2"
+msgstr "%1 sağlama toplamı tanımında hata: %2"
+
+#: kleo/checksumdefinition.cpp:157
+#, kde-format
+msgid "Cannot use both %f and | in '%1'"
+msgstr "'%1' içinde %f ve | aynı anda kullanılamaz"
+
+#: kleo/checksumdefinition.cpp:167
+#, kde-format
+msgid "Quoting error in '%1' entry"
+msgstr "'%1' girdisinde alıntı hatası"
+
+#: kleo/checksumdefinition.cpp:170
+#, kde-format
+msgid "'%1' too complex (would need shell)"
+msgstr "'%1' çok karmaşık (kabuk gerekebilir)"
+
+#: kleo/checksumdefinition.cpp:174
+#, kde-format
+msgid "'%1' entry is empty/missing"
+msgstr "'%1' girdisi boş/eksik"
+
+#: kleo/checksumdefinition.cpp:183
+#, kde-format
+msgid "'%1' empty or not found"
+msgstr "'%1' boş veya bulunamadı"
+
+#: kleo/checksumdefinition.cpp:222
+#, kde-format
+msgid "'id' entry is empty/missing"
+msgstr "'id' girdisi boş/eksik"
+
+#: kleo/checksumdefinition.cpp:225
+#, kde-format
+msgid "'output-file' entry is empty/missing"
+msgstr "'output-file' girdisi boş/eksik"
+
+#: kleo/checksumdefinition.cpp:228
+#, kde-format
+msgid "'file-patterns' entry is empty/missing"
+msgstr "'file-patterns' girdisi boş/eksik"
+
+#: kleo/checksumdefinition.cpp:395
+#, kde-format
+msgid "Caught unknown exception in group %1"
+msgstr "%1 grubu içinde bilinmeyen durum yakalandı"
+
+#: kleo/dn.cpp:507
+#, kde-format
+msgid "Common name"
+msgstr "Genel ad"
+
+#: kleo/dn.cpp:508
+#, kde-format
+msgid "Surname"
+msgstr "Soyad"
+
+#: kleo/dn.cpp:509
+#, kde-format
+msgid "Given name"
+msgstr "Verilen ad"
+
+#: kleo/dn.cpp:510
+#, kde-format
+msgid "Location"
+msgstr "Konum"
+
+#: kleo/dn.cpp:511
+#, kde-format
+msgid "Title"
+msgstr "Unvan"
+
+#: kleo/dn.cpp:512
+#, kde-format
+msgid "Organizational unit"
+msgstr "Organizasyon birimi"
+
+#: kleo/dn.cpp:513
+#, kde-format
+msgid "Organization"
+msgstr "Organizasyon"
+
+#: kleo/dn.cpp:514
+#, kde-format
+msgid "Postal code"
+msgstr "Posta kodu"
+
+#: kleo/dn.cpp:515
+#, kde-format
+msgid "Country code"
+msgstr "Ülke kodu"
+
+#: kleo/dn.cpp:516
+#, kde-format
+msgid "State or province"
+msgstr "Eyalet veya il"
+
+#: kleo/dn.cpp:517
+#, kde-format
+msgid "Domain component"
+msgstr "Alan bileşeni"
+
+#: kleo/dn.cpp:518
+#, kde-format
+msgid "Business category"
+msgstr "İş kategorisi"
+
+#: kleo/dn.cpp:519
+#, kde-format
+msgid "Email address"
+msgstr "E-posta adresi"
+
+#: kleo/dn.cpp:520
+#, kde-format
+msgid "Mail address"
+msgstr "Posta adresi"
+
+#: kleo/dn.cpp:521
+#, kde-format
+msgid "Mobile phone number"
+msgstr "Mobil telefon numarası"
+
+#: kleo/dn.cpp:522
+#, kde-format
+msgid "Telephone number"
+msgstr "Telefon numarası"
+
+#: kleo/dn.cpp:523
+#, kde-format
+msgid "Fax number"
+msgstr "Faks numarası"
+
+#: kleo/dn.cpp:524
+#, kde-format
+msgid "Street address"
+msgstr "Cadde adresi"
+
+#: kleo/dn.cpp:525
+#, kde-format
+msgid "Unique ID"
+msgstr "Biricik Kimlik"
+
+#: kleo/enum.cpp:57
+#, kde-format
+msgid "Inline OpenPGP (deprecated)"
+msgstr "Dahili OpenPGP (eski)"
+
+#: kleo/enum.cpp:62
+#, kde-format
+msgid "OpenPGP/MIME"
+msgstr "OpenPGP/MIME"
+
+#: kleo/enum.cpp:67 ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "S/MIME"
+msgstr "S/MIME"
+
+#: kleo/enum.cpp:72
+#, kde-format
+msgid "S/MIME Opaque"
+msgstr "S/MIME Mat"
+
+#: kleo/enum.cpp:104
+#, kde-format
+msgid "Any"
+msgstr "Herhangi biri"
+
+#: kleo/enum.cpp:177
+#, kde-format
+msgid "Never Encrypt"
+msgstr "Asla Şifreleme"
+
+#: kleo/enum.cpp:179
+#, kde-format
+msgid "Always Encrypt"
+msgstr "Daima Şifrele"
+
+#: kleo/enum.cpp:181
+#, kde-format
+msgid "Always Encrypt If Possible"
+msgstr "Mümkünse Daima Şifrele"
+
+#: kleo/enum.cpp:183 kleo/enum.cpp:240
+#, kde-format
+msgid "Ask"
+msgstr "Sor"
+
+#: kleo/enum.cpp:185 kleo/enum.cpp:242
+#, kde-format
+msgid "Ask Whenever Possible"
+msgstr "Mümkün Olduğunda Sor"
+
+#: kleo/enum.cpp:187
+#, kde-kuit-format
+msgctxt "no specific preference"
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>hiçbiri</placeholder>"
+
+#: kleo/enum.cpp:234
+#, kde-format
+msgid "Never Sign"
+msgstr "Asla İmzalama"
+
+#: kleo/enum.cpp:236
+#, kde-format
+msgid "Always Sign"
+msgstr "Daima İmzala"
+
+#: kleo/enum.cpp:238
+#, kde-format
+msgid "Always Sign If Possible"
+msgstr "Mümkün Olduğunda Daima İmzala"
+
+#: kleo/enum.cpp:244
+#, kde-format
+msgctxt "no specific preference"
+msgid "<none>"
+msgstr "<none>"
+
+#: kleo/keyfiltermanager.cpp:85
+#, kde-format
+msgid "All Certificates"
+msgstr "Tüm Sertifikalar"
+
+#: kleo/keyfiltermanager.cpp:100
+#, kde-format
+msgid "My Certificates"
+msgstr "Sertifikalarım"
+
+#: kleo/keyfiltermanager.cpp:118
+#, kde-format
+msgid "Trusted Certificates"
+msgstr "Güvenilir Sertifikalar"
+
+#: kleo/keyfiltermanager.cpp:135
+#, kde-format
+msgid "Fully Trusted Certificates"
+msgstr "Tamamen Güvenilir Sertifikalar"
+
+#: kleo/keyfiltermanager.cpp:152
+#, kde-format
+msgid "Other Certificates"
+msgstr "Diğer Sertifikalar"
+
+#: kleo/keyfiltermanager.cpp:166
+#, fuzzy, kde-format
+#| msgid "All Certificates"
+msgid "VS-compliant Certificates"
+msgstr "Tüm Sertifikalar"
+
+#: kleo/keyfiltermanager.cpp:184
+#, kde-format
+msgid "Not validated Certificates"
+msgstr "Geçerli olmayan Sertifikalar"
+
+#: ui/auditlogviewer.cpp:49
+#, kde-format
+msgid "View GnuPG Audit Log"
+msgstr "GnuPG Audit Günlük Kaydını Göster"
+
+#: ui/auditlogviewer.cpp:53
+#, kde-format
+msgid "&Copy to Clipboard"
+msgstr "Panoya &Kopyala"
+
+#: ui/auditlogviewer.cpp:59
+#, kde-format
+msgid "&Save to Disk..."
+msgstr "&Diske Kaydet..."
+
+#: ui/auditlogviewer.cpp:95
+#, kde-format
+msgid "Choose File to Save GnuPG Audit Log to"
+msgstr "GnuPG Audit Günlük Kaydının Kaydedileceği dosyayı seçin"
+
+#: ui/auditlogviewer.cpp:118
+#, kde-format
+msgid "Could not save to file \"%1\": %2"
+msgstr "\"%1\" dosyasına kaydedilemedi: %2"
+
+#: ui/auditlogviewer.cpp:120
+#, kde-format
+msgid "File Save Error"
+msgstr "Dosya Kaydetme Hatası"
+
+#: ui/cryptoconfigdialog.cpp:44
+#, kde-format
+msgid "Configure GnuPG Backend"
+msgstr "GnuPG Arka Ucunu Yapılandır"
+
+#: ui/cryptoconfigdialog.cpp:55
+#, kde-format
+msgid "&Reset"
+msgstr "Sıfı&rla"
+
+#: ui/cryptoconfigmodule.cpp:160
+#, kde-format
+msgid "GpgConf Error"
+msgstr "GpgConf Hatası"
+
+#: ui/cryptoconfigmodule.cpp:216
+#, kde-format
+msgid ""
+"The gpgconf tool used to provide the information for this dialog does not "
+"seem to be installed properly. It did not return any components. Try running "
+"\"%1\" on the command line for more information."
+msgstr ""
+"Bu pencere için bilgi sağlayan gpgconf uygulaması düzgün kurulmamış gibi "
+"görünüyor. Uygulamadan herhangi bir bileşen alınamadı. Daha fazla bilgi "
+"almak için \"%1\" uygulamasını komut satırından çalıştırmayı deneyin."
+
+#: ui/cryptoconfigmodule.cpp:496
+#, kde-format
+msgctxt ""
+"Translate this to 'yes' or 'no' (use the English words!) depending on "
+"whether your language uses Sentence style capitalisation in GUI labels (yes) "
+"or not (no). Context: We get some backend strings in that have the wrong "
+"capitalizaion (in English, at least) so we need to force the first character "
+"to upper-case. It is this behaviour you can control for your language with "
+"this translation."
+msgid "yes"
+msgstr "yes"
+
+#: ui/cryptoconfigmodule.cpp:546
+#, kde-format
+msgid "0 - None"
+msgstr "0 - Hiç"
+
+#: ui/cryptoconfigmodule.cpp:547
+#, kde-format
+msgid "1 - Basic"
+msgstr "1 - Temel"
+
+#: ui/cryptoconfigmodule.cpp:548
+#, kde-format
+msgid "2 - Verbose"
+msgstr "2- Ayrıntılı"
+
+#: ui/cryptoconfigmodule.cpp:549
+#, kde-format
+msgid "3 - More Verbose"
+msgstr "3 - Daha Ayrıntılı"
+
+#: ui/cryptoconfigmodule.cpp:550
+#, kde-format
+msgid "4 - All"
+msgstr "4 - Tümü"
+
+#: ui/cryptoconfigmodule.cpp:559
+#, kde-format
+msgid "Set the debugging level to"
+msgstr "Hata ayıklama düzeyini şuna ayarla"
+
+#: ui/cryptoconfigmodule.cpp:787
+#, kde-format
+msgid "Show..."
+msgstr "Göster..."
+
+#: ui/cryptoconfigmodule.cpp:787 ui/cryptoconfigmodule.cpp:876
+#, kde-format
+msgid "Edit..."
+msgstr "Düzenle.."
+
+#: ui/cryptoconfigmodule.cpp:841
+#, kde-format
+msgid "Configure LDAP Servers"
+msgstr "LDAP Sunucularını Ayarla"
+
+#: ui/cryptoconfigmodule.cpp:862
+#, kde-format
+msgid "None configured"
+msgstr "Hiç yapılandırılmış"
+
+#: ui/cryptoconfigmodule.cpp:864
+#, kde-format
+msgid "1 server configured"
+msgid_plural "%1 servers configured"
+msgstr[0] "1 sunucu ayarlandı"
+msgstr[1] "%1 sunucu ayarlandı"
+
+#: ui/cryptoconfigmodule.cpp:879
+#, kde-format
+msgid "Use keyserver at"
+msgstr "Şu anahtar sunucusunu kullan"
+
+#: ui/cryptoconfigmodule.cpp:968
+#, kde-format
+msgid "Configure Keyservers"
+msgstr "Anahtar Sunucularını Yapılandır"
+
+#: ui/directoryserviceswidget.cpp:67
+#, kde-format
+msgctxt "default server name, keep it a valid domain name, ie. no spaces"
+msgid "server"
+msgstr "sunucu"
+
+#: ui/directoryserviceswidget.cpp:95
+#, kde-format
+msgid "hkp"
+msgstr "hkp"
+
+#: ui/directoryserviceswidget.cpp:96
+#, kde-format
+msgid "http"
+msgstr "http"
+
+#: ui/directoryserviceswidget.cpp:97
+#, kde-format
+msgid "https"
+msgstr "https"
+
+#: ui/directoryserviceswidget.cpp:98
+#, kde-format
+msgid "ftp"
+msgstr "ftp"
+
+#: ui/directoryserviceswidget.cpp:99
+#, kde-format
+msgid "ftps"
+msgstr "ftps"
+
+#: ui/directoryserviceswidget.cpp:100
+#, kde-format
+msgid "ldap"
+msgstr "ldap"
+
+#: ui/directoryserviceswidget.cpp:101
+#, kde-format
+msgid "ldaps"
+msgstr "ldaps"
+
+#: ui/directoryserviceswidget.cpp:588
+#, kde-format
+msgid "Server Name"
+msgstr "Sunucu Adı"
+
+#: ui/directoryserviceswidget.cpp:589
+#, kde-format
+msgid "Server Port"
+msgstr "Sunucu Portu"
+
+#: ui/directoryserviceswidget.cpp:590
+#, kde-format
+msgid "Base DN"
+msgstr "Ana DN"
+
+#: ui/directoryserviceswidget.cpp:591
+#, kde-format
+msgid "User Name"
+msgstr "Kullanıcı Adı"
+
+#: ui/directoryserviceswidget.cpp:592
+#, kde-format
+msgid "Password"
+msgstr "Şifre"
+
+#: ui/directoryserviceswidget.cpp:614
+#, kde-format
+msgid "(read-only)"
+msgstr "(salt-okunur)"
+
+#: ui/directoryserviceswidget.cpp:616
+#, kde-format
+msgctxt "amended tooltip; %1: original tooltip"
+msgid "%1 (read-only)"
+msgstr "%1 (salt-okunur)"
+
+#: ui/directoryserviceswidget.cpp:739
+#, kde-format
+msgid ""
+"Enter the name or IP address of the server hosting the directory service."
+msgstr "Dizin hizmetini barındıran sunucunun adını veya IP adresini girin."
+
+#: ui/directoryserviceswidget.cpp:741
+#, kde-format
+msgid ""
+"<b>(Optional, the default is fine in most cases)</b> Pick the port number "
+"the directory service is listening on."
+msgstr ""
+"<b>(İsteğe bağlı, çoğu durumda öntanımlı değer uygundur)</b> Dizin "
+"hizmetinin dinlediği bağlantı noktası numarasını seçin."
+
+#: ui/directoryserviceswidget.cpp:744
+#, kde-format
+msgid ""
+"<b>(Only for LDAP)</b> Enter the base DN for this LDAP server to limit "
+"searches to only that subtree of the directory."
+msgstr ""
+"<b>(Yalnızca LDAP için)</b> Aramaları yalnızca dizinin alt ağaçlarıyla "
+"kısıtlamak için bu LDAP sunucusunun ana DN'sini girin. "
+
+#: ui/directoryserviceswidget.cpp:747
+#, kde-format
+msgid "<b>(Optional)</b> Enter your user name here, if needed."
+msgstr "<b>(Seçimlik)</b> Gerekiyorsa kullanıcı adınızı buraya girin."
+
+#: ui/directoryserviceswidget.cpp:749
+#, kde-format
+msgid ""
+"<b>(Optional, not recommended)</b> Enter your password here, if needed. Note "
+"that the password will be saved in the clear in a config file in your home "
+"directory."
+msgstr ""
+"<b>(İsteğe bağlı, tavsiye edilmiyor)</b> Gerekliyse, parolanızı buraya "
+"girin. Parolanın, ev dizininizdeki bir yapılandırma dosyasına açık olarak "
+"kaydedileceğine dikkat edin."
+
+#. i18n: ectx: property (windowTitle), widget (QWidget, DirectoryServicesWidget)
+#: ui/directoryserviceswidget.ui:14
+#, kde-format
+msgid "Directory Services Configuration"
+msgstr "Dizin Servisleri Yapılandırması"
+
+#. i18n: ectx: property (text), widget (QLabel, pgpKSLabel)
+#: ui/directoryserviceswidget.ui:22
+#, kde-format
+msgid "OpenPGP Keyserver:"
+msgstr "OpenPGP Anahtar sunucusu:"
+
+#. i18n: ectx: property (title), widget (QGroupBox, x500LA)
+#: ui/directoryserviceswidget.ui:35
+#, kde-format
+msgid "X509 Directory services:"
+msgstr "X509 Dizin servisleri:"
+
+#. i18n: ectx: property (whatsThis), widget (QTreeView, treeView)
+#: ui/directoryserviceswidget.ui:43
+#, kde-format
+msgid ""
+"This is a list of all directory services that are configured for use with "
+"X.509."
+msgstr ""
+"Bu liste, X.509 ile kullanılması için yapılandırılmış tüm dizin "
+"servislerinin listesidir."
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:70
+#, kde-format
+msgid "Click to add a service"
+msgstr "Servis eklemek için tıklayın"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:73
+#, kde-format
+msgid ""
+"Click this button to create a new directory service entry as a clone of the "
+"currently selected one (or with default values, if no other is selected). "
+"You can then configure details in the table on the left hand."
+msgstr ""
+"Şu anda seçili olan dizin hizmetinin bir eşi olarak (veya başka bir tane "
+"seçili değilse, öntanımlı değerler ile) yeni bir dizin hizmet girdisi "
+"yaratmak için bu düğmeye tıklayın. Daha sonra sol taraftaki tabloda "
+"detayları yapılandırabilirsiniz."
+
+#. i18n: ectx: property (text), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:76
+#, kde-format
+msgid "New"
+msgstr "Yeni"
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:92
+#, kde-format
+msgid "Click to remove the currently selected service"
+msgstr "Seçili servisi kaldırmak için tıklayın."
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:95
+#, kde-format
+msgid ""
+"Click this button to remove the currently selected directory service. The "
+"change will only take effect once you acknowledge the main configuration "
+"dialog."
+msgstr ""
+"Şu anda seçili olan dizin hizmetini kaldırmak için bu düğmeyi tıklayın. "
+"Değişiklik yalnızca ana yapılandırma diyaloğunu onayladığınızda "
+"gerçekleşecektir."
+
+#. i18n: ectx: property (text), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:98
+#, kde-format
+msgid "Delete"
+msgstr "Sil"
+
+#. i18n: ectx: property (whatsThis), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:128
+#, kde-format
+msgid ""
+"Use this option to switch display of username and password information on or "
+"off in the above table."
+msgstr ""
+"Yukarıdaki tabloda kullanıcı adı ve parola bilgisinin görüntülenmesini açmak "
+"veya kapatmak için bu seçeneği kullanın."
+
+#. i18n: ectx: property (text), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:131
+#, kde-format
+msgid "Show user and password information"
+msgstr "Kullanıcı ve parola bilgilerini göster"
+
+#: ui/dnattributeorderconfigwidget.cpp:73
+#, kde-format
+msgid "Description"
+msgstr "Açıklama"
+
+#: ui/dnattributeorderconfigwidget.cpp:91
+#, kde-format
+msgid "Available attributes:"
+msgstr "Kullanılabilir özellikler:"
+
+#: ui/dnattributeorderconfigwidget.cpp:92
+#, kde-format
+msgid "Current attribute order:"
+msgstr "Geçerli özellik sıralaması:"
+
+#: ui/dnattributeorderconfigwidget.cpp:112
+#, kde-format
+msgid "All others"
+msgstr "Diğer tümü"
+
+#: ui/dnattributeorderconfigwidget.cpp:129
+#, kde-format
+msgid "Move to top"
+msgstr "En üste taşı"
+
+#: ui/dnattributeorderconfigwidget.cpp:130
+#, kde-format
+msgid "Move one up"
+msgstr "Bir üste taşı"
+
+#: ui/dnattributeorderconfigwidget.cpp:131
+#, kde-format
+msgid "Remove from current attribute order"
+msgstr "Geçerli özellik sıralamasından kaldır"
+
+#: ui/dnattributeorderconfigwidget.cpp:132
+#, kde-format
+msgid "Add to current attribute order"
+msgstr "Geçerli özellik sıralamasına ekle"
+
+#: ui/dnattributeorderconfigwidget.cpp:133
+#, kde-format
+msgid "Move one down"
+msgstr "Bir alta taşı"
+
+#: ui/dnattributeorderconfigwidget.cpp:134
+#, kde-format
+msgid "Move to bottom"
+msgstr "En alta taşı"
+
+#: ui/keyapprovaldialog.cpp:87
+#, kde-kuit-format
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>hiçbiri</placeholder>"
+
+#: ui/keyapprovaldialog.cpp:88
+#, kde-format
+msgid "Never Encrypt with This Key"
+msgstr "Bu Anahtarla Asla Şifreleme"
+
+#: ui/keyapprovaldialog.cpp:89
+#, kde-format
+msgid "Always Encrypt with This Key"
+msgstr "Daima Bu Anahtarla Şifrele"
+
+#: ui/keyapprovaldialog.cpp:90
+#, kde-format
+msgid "Encrypt Whenever Encryption is Possible"
+msgstr "Şifreleme Mümkün Olduğunda Şifrele"
+
+#: ui/keyapprovaldialog.cpp:91
+#, kde-format
+msgid "Always Ask"
+msgstr "Daima Sor"
+
+#: ui/keyapprovaldialog.cpp:92
+#, kde-format
+msgid "Ask Whenever Encryption is Possible"
+msgstr "Şifreleme Mümkün Olduğunda Sor"
+
+#: ui/keyapprovaldialog.cpp:113
+#, kde-format
+msgid "Encryption Key Approval"
+msgstr "Şifreleme Anahtarı Onama"
+
+#: ui/keyapprovaldialog.cpp:129
+#, kde-format
+msgid "The following keys will be used for encryption:"
+msgstr "Aşağıdaki anahtarlar şifreleme için kullanılacaktır:"
+
+#: ui/keyapprovaldialog.cpp:145
+#, kde-format
+msgid "Your keys:"
+msgstr "Anahtarlarınız:"
+
+#: ui/keyapprovaldialog.cpp:157
+#, kde-format
+msgid "Recipient:"
+msgstr "Alıcı:"
+
+#: ui/keyapprovaldialog.cpp:162
+#, kde-format
+msgid "Encryption keys:"
+msgstr "Şifreleme anahtarları:"
+
+#: ui/keyapprovaldialog.cpp:169
+#, kde-format
+msgid "Encryption preference:"
+msgstr "Şifreleme tercihi:"
+
+#: ui/keyrequester.cpp:118
+#, kde-format
+msgid "Clear"
+msgstr "Temizle"
+
+#: ui/keyrequester.cpp:121
+#, kde-format
+msgid "Change..."
+msgstr "Değiştir..."
+
+#: ui/keyrequester.cpp:232 ui/keyselectiondialog.cpp:256
+#, kde-kuit-format
+msgid "<placeholder>unknown</placeholder>"
+msgstr "<placeholder>bilinmeyen</placeholder>"
+
+#: ui/keyrequester.cpp:246 ui/keyselectiondialog.cpp:657
+#, kde-format
+msgid ""
+"<qt><p>An error occurred while fetching the keys from the backend:</p><p><b>"
+"%1</b></p></qt>"
+msgstr ""
+"<qt><p>Arka uçtan anahtarlar alınırken bir hata oluştu:</p><p><b>%1</b></p></"
+"qt>"
+
+#: ui/keyrequester.cpp:251 ui/keyrequester.cpp:283 ui/keyrequester.cpp:306
+#: ui/keyselectiondialog.cpp:630 ui/keyselectiondialog.cpp:662
+#, kde-format
+msgid "Key Listing Failed"
+msgstr "Anahtarla Listeleme Başarısız"
+
+#: ui/keyrequester.cpp:281
+#, kde-format
+msgid ""
+"The OpenPGP backend does not support listing keys. Check your installation."
+msgstr ""
+"OpenPGP arka ucu anahtar listelemeyi desteklemiyor. Kurulumunuzu gözden "
+"geçirin."
+
+#: ui/keyrequester.cpp:304
+#, kde-format
+msgid ""
+"The S/MIME backend does not support listing keys. Check your installation."
+msgstr ""
+"S/MIME arka ucu anahtar listelemeyi desteklemiyor. Kurulumunuzu gözden "
+"geçirin."
+
+#: ui/keyrequester.cpp:426
+#, kde-format
+msgid "OpenPGP Key Selection"
+msgstr "OpenPGP Anahtar Seçimi"
+
+#: ui/keyrequester.cpp:427
+#, kde-format
+msgid "Please select an OpenPGP key to use."
+msgstr "Lütfen kullanmak için bir OpenPGP anahtarı seçin."
+
+#: ui/keyrequester.cpp:429
+#, kde-format
+msgid "S/MIME Key Selection"
+msgstr "S/MIME Anahtar Seçimi"
+
+#: ui/keyrequester.cpp:430
+#, kde-format
+msgid "Please select an S/MIME key to use."
+msgstr "Lütfen kullanmak için bir S/MIME anahtarı seçin."
+
+#: ui/keyrequester.cpp:432
+#, kde-format
+msgid "Key Selection"
+msgstr "Anahtar Seçimi"
+
+#: ui/keyrequester.cpp:433
+#, kde-format
+msgid "Please select an (OpenPGP or S/MIME) key to use."
+msgstr "Lütfen kullanmak için bir (OpenPGP veya S/MIME) anahtarı seçin."
+
+#: ui/keyselectioncombo.cpp:195
+#, kde-format
+msgctxt "Name <email> (validity, type, created: date)"
+msgid "%1 (%2, %3, created: %4)"
+msgstr "%1 (%2, %3, oluşturuldu: %4)"
+
+#: ui/keyselectioncombo.cpp:196
+#, kde-format
+msgctxt "Name <email>"
+msgid "%1 <%2>"
+msgstr "%1 <%2>"
+
+#: ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "OpenPGP"
+msgstr "OpenPGP"
+
+#: ui/keyselectioncombo.cpp:347
+#, kde-format
+msgid "Loading keys ..."
+msgstr "Anahtarlar yükleniyor..."
+
+#: ui/keyselectiondialog.cpp:98
+#, kde-format
+msgid "The key is not valid."
+msgstr "Anahtar geçerli değil."
+
+#: ui/keyselectiondialog.cpp:106
+#, kde-format
+msgid "The key is expired."
+msgstr "Anahtar zaman aşımına uğramış."
+
+#: ui/keyselectiondialog.cpp:110
+#, kde-format
+msgid "The key is revoked."
+msgstr "Anahtar iptal edilmiş."
+
+#: ui/keyselectiondialog.cpp:114
+#, kde-format
+msgid "The key is disabled."
+msgstr "Anahtar devre dışı bırakılmış."
+
+#: ui/keyselectiondialog.cpp:122
+#, kde-format
+msgid "The key is not designated for encryption."
+msgstr "Anahtar, şifreleme için tasarlanmamış."
+
+#: ui/keyselectiondialog.cpp:128
+#, kde-format
+msgid "The key is not designated for signing."
+msgstr "Anahtar, imzalama için tasarlanmamış."
+
+#: ui/keyselectiondialog.cpp:134
+#, kde-format
+msgid "The key is not designated for certifying."
+msgstr "Anahtar, sertifikalandırma için tasarlanmamış."
+
+#: ui/keyselectiondialog.cpp:140
+#, kde-format
+msgid "The key is not designated for authentication."
+msgstr "Anahtar, kimlik doğrulama için tasarlanmamış."
+
+#: ui/keyselectiondialog.cpp:148
+#, kde-format
+msgid "The key is not secret."
+msgstr "Anahtar, gizli değil."
+
+#: ui/keyselectiondialog.cpp:163
+#, kde-format
+msgid "The key is not trusted enough."
+msgstr "Anahtar, yeteri kadar güvenilir değil."
+
+#: ui/keyselectiondialog.cpp:169
+#, kde-format
+msgid "The key can be used."
+msgstr "Anahtar, kullanılabilir."
+
+#: ui/keyselectiondialog.cpp:230
+#, kde-format
+msgid "Key ID"
+msgstr "Anahtar Kimliği"
+
+#: ui/keyselectiondialog.cpp:231
+#, kde-format
+msgid "User ID"
+msgstr "Kullanıcı Kimliği"
+
+#: ui/keyselectiondialog.cpp:279
+#, kde-format
+msgid "never"
+msgstr "hiç"
+
+#: ui/keyselectiondialog.cpp:289 ui/keyselectiondialog.cpp:291
+#: ui/keyselectiondialog.cpp:300 ui/keyselectiondialog.cpp:302
+#, fuzzy, kde-format
+msgid "unknown"
+msgstr "bilinmeyen"
+
+#: ui/keyselectiondialog.cpp:289
+#, kde-format
+msgid "OpenPGP key for <b>%1</b>"
+msgstr "<b>%1</b> için OpenPGP anahtarı"
+
+#: ui/keyselectiondialog.cpp:291
+#, kde-format
+msgid "S/MIME key for <b>%1</b>"
+msgstr "<b>%1</b> için S/MIME anahtarı"
+
+#: ui/keyselectiondialog.cpp:298
+#, fuzzy, kde-format
+msgctxt "Key creation date"
+msgid "Created"
+msgstr "Oluşturulma Tarihi"
+
+#: ui/keyselectiondialog.cpp:299
+#, kde-format
+msgctxt "Key Expiration date"
+msgid "Expiry"
+msgstr "Son Kullanma Tarihi"
+
+#: ui/keyselectiondialog.cpp:300
+#, fuzzy, kde-format
+msgctxt "Key fingerprint"
+msgid "Fingerprint"
+msgstr "Parmak İzi"
+
+#: ui/keyselectiondialog.cpp:302
+#, fuzzy, kde-format
+msgctxt "Key issuer"
+msgid "Issuer"
+msgstr "Düzenleyen"
+
+#: ui/keyselectiondialog.cpp:304
+#, kde-format
+msgctxt "Key status"
+msgid "Status"
+msgstr "Durum"
+
+#: ui/keyselectiondialog.cpp:456
+#, kde-format
+msgid "Search for &External Certificates"
+msgstr "&Harici Serfitikaları Ara"
+
+#: ui/keyselectiondialog.cpp:470
+#, kde-format
+msgid "&Search for:"
+msgstr "&Ara:"
+
+#: ui/keyselectiondialog.cpp:494
+#, kde-format
+msgid "&Remember choice"
+msgstr "Seçimi &hatırla"
+
+#: ui/keyselectiondialog.cpp:497
+#, kde-format
+msgid ""
+"<qt><p>If you check this box your choice will be stored and you will not be "
+"asked again.</p></qt>"
+msgstr ""
+"<qt> <p>Eğer bu onay kutusunu işaretlerseniz, seçiminiz kaydedilecek ve size "
+"tekrar sorulmayacak.</p></qt>"
+
+#: ui/keyselectiondialog.cpp:509
+#, kde-format
+msgid "&Reread Keys"
+msgstr "Anahtarları &Tekrar Oku"
+
+#: ui/keyselectiondialog.cpp:510
+#, kde-format
+msgid "&Start Certificate Manager"
+msgstr "&Sertifika Yöneticisini Başlat"
+
+#: ui/keyselectiondialog.cpp:628
+#, kde-format
+msgid "No backends found for listing keys. Check your installation."
+msgstr ""
+"Anahtarları listelemek için arka uç bulunamadı. Kurulumunuzu gözden geçirin."
+
+#: ui/keyselectiondialog.cpp:644
+#, kde-format
+msgid "Could not start certificate manager; please check your installation."
+msgstr "Sertifika yöneticisi başlatılamıyor; kurulumunuzu kontrol edin."
+
+#: ui/keyselectiondialog.cpp:646
+#, kde-format
+msgid "Certificate Manager Error"
+msgstr "Sertifika Yöneticisi Hatası"
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Checking selected keys..."
+msgstr "Seçili anahtarlar kontrol ediliyor..."
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Fetching keys..."
+msgstr "Anahtarlar alınıyor..."
+
+#: ui/keyselectiondialog.cpp:731
+#, kde-format
+msgid ""
+"<qt>One backend returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgid_plural ""
+"<qt>%1 backends returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgstr[0] ""
+"<qt>Bir arka uç, kesik çıktıyı geri gönderdi.<p>Mevcut tüm anahtarlar "
+"gösterilmiyor</p></qt>"
+msgstr[1] ""
+"<qt>%1 arka uç, kesik çıktıyı geri gönderdi.<p>Mevcut tüm anahtarlar "
+"gösterilmiyor</p></qt>"
+
+#: ui/keyselectiondialog.cpp:736
+#, kde-format
+msgid "Key List Result"
+msgstr "Anahtar Liste Sonucu"
+
+#: ui/keyselectiondialog.cpp:856
+#, kde-format
+msgid "Recheck Key"
+msgstr "Anahtarı Tekrar Kontrol Et"
+
+#: ui/messagebox.cpp:71
+#, kde-format
+msgid "Your system does not have support for GnuPG Audit Logs"
+msgstr "Sisteminiz GnuPG Audit Günlük Kayıtlarını desteklemiyor"
+
+#: ui/messagebox.cpp:72
+#, kde-format
+msgid "System Error"
+msgstr "Sistem Hatası"
+
+#: ui/messagebox.cpp:79
+#, kde-format
+msgid ""
+"An error occurred while trying to retrieve the GnuPG Audit Log:\n"
+"%1"
+msgstr ""
+"GnuPG Audit Gümlük kaydı alınırken bir hata oluştu:\n"
+"%1"
+
+#: ui/messagebox.cpp:81
+#, kde-format
+msgid "GnuPG Audit Log Error"
+msgstr "GnuPG Audit Günlük Kaydı Hatası"
+
+#: ui/messagebox.cpp:88
+#, kde-format
+msgid "No GnuPG Audit Log available for this operation."
+msgstr "Bu işlem için GnuPG Audit Kaydı mevcut değil."
+
+#: ui/messagebox.cpp:89
+#, kde-format
+msgid "No GnuPG Audit Log"
+msgstr "Audit Günlük Kaydı Yok"
+
+#: ui/messagebox.cpp:109 ui/messagebox.cpp:115
+#, kde-format
+msgid "GnuPG Audit Log Viewer"
+msgstr "GnuPG Günlük Kaydı Gösterici"
+
+#: ui/messagebox.cpp:121
+#, kde-format
+msgid "Signing failed: %1"
+msgstr "İmzalama başarısız: %1"
+
+#: ui/messagebox.cpp:122
+#, kde-format
+msgid "Signing successful"
+msgstr "İmzalama işlemi başarılı"
+
+#: ui/messagebox.cpp:133
+#, kde-format
+msgid "Encryption failed: %1"
+msgstr "Şifreleme başarısız: %1"
+
+#: ui/messagebox.cpp:134
+#, kde-format
+msgid "Encryption successful"
+msgstr "Şifreleme işlemi başarılı"
+
+#: ui/messagebox.cpp:155
+#, kde-format
+msgid "Signing Result"
+msgstr "İmzalama Sonuçları"
+
+#: ui/messagebox.cpp:167
+#, kde-format
+msgid "Signing Error"
+msgstr "İmzalama Hatası"
+
+#: ui/messagebox.cpp:179 ui/messagebox.cpp:203
+#, kde-format
+msgid "Encryption Result"
+msgstr "Şifreleme Sonuçları"
+
+#: ui/messagebox.cpp:191 ui/messagebox.cpp:215
+#, kde-format
+msgid "Encryption Error"
+msgstr "Şifreleme Hatası"
+
+#: ui/messagebox.cpp:263
+#, kde-format
+msgid "&Show Audit Log"
+msgstr "&Audit Günlük Kaydını Göster"
+
+#: ui/progressdialog.cpp:91
+#, kde-format
+msgid "%1: %2"
+msgstr "%1: %2"
+
+#~ msgctxt "New X.509 Directory Server"
+#~ msgid "X.509"
+#~ msgstr "X.509"
+
+#~ msgctxt "New OpenPGP Directory Server"
+#~ msgid "OpenPGP"
+#~ msgstr "OpenPGP"
+
+#~ msgid "Scheme"
+#~ msgstr "Şema"
+
+#~ msgid "X.509"
+#~ msgstr "X.509"
+
+#~ msgid ""
+#~ "Select the access scheme (scheme) that the directory service is available "
+#~ "through."
+#~ msgstr ""
+#~ "Dizin hizmetinin kullanılabilir olduğu erişim şemasını (şema) seçin."
+
+#~ msgid ""
+#~ "Check this column if this directory service is providing S/MIME (X.509) "
+#~ "certificates."
+#~ msgstr ""
+#~ "Dizin hizmeti S/MIME (X.509) sertifikaları sağlıyorsa bu sütunu kontrol "
+#~ "edin."
+
+#~ msgid ""
+#~ "Check this column if this directory service is providing OpenPGP "
+#~ "certificates."
+#~ msgstr ""
+#~ "Dizin hizmeti OpenPGP sertifikaları sağlıyorsa bu sütunu kontrol edin."
+
+#~ msgid "0 - None (no debugging at all)"
+#~ msgstr "0 - Hiçbiri (hata ayıklama yok)"
+
+#~ msgid "1 - Basic (some basic debug messages)"
+#~ msgstr "1 - Basit (basit hata ayıklama iletileri)"
+
+#~ msgid "2 - Advanced (more verbose debug messages)"
+#~ msgstr "2 - Gelişmiş (daha ayrıntılı hata ayıklama iletileri)"
+
+#~ msgid "3 - Expert (even more detailed messages)"
+#~ msgstr "3 - Uzman (daha da fazla ayrıntılı iletiler)"
+
+#~ msgid "4 - Guru (all of the debug messages you can get)"
+#~ msgstr "4 - Guru (alınabilecek en ayrıntılı hata iletileri)"
+
+#~ msgid "General"
+#~ msgstr "Genel"
+
+#~ msgid "Chiasmus"
+#~ msgstr "Chiasmus"
+
+#~ msgid "Chiasmus command line tool"
+#~ msgstr "Chiasmus komut satırı aracı"
+
+#~ msgid "Unsupported protocol \"%1\""
+#~ msgstr "Desteklenmeyen Protokol \"%1\""
+
+#~ msgid "File \"%1\" does not exist or is not executable."
+#~ msgstr "\"%1\" dosyası yok ya da çalıştırılabilir değil."
+
+#~ msgid "Output from chiasmus"
+#~ msgstr "Chiasmus çıktısı"
+
+#~ msgid "Decryption failed: %1"
+#~ msgstr "Şifre açma işlemi başarısız oldu: %1"
+
+#~ msgid ""
+#~ "The following was received on stderr:\n"
+#~ "%1"
+#~ msgstr ""
+#~ "Aşağıdaki stderr çıktısından alındı:\n"
+#~ "%1"
+
+#~ msgid "Failed to load %1: %2"
+#~ msgstr "%1 yüklenemedi: %2"
+
+#~ msgid "Library does not contain the symbol \"Chiasmus\"."
+#~ msgstr "Kitaplık \"Chiasmus\" sembolü içermiyor."
+
+#~ msgid "Scanning directory %1..."
+#~ msgstr "%1 dizini taranıyor..."
+
+#~ msgid "GpgME"
+#~ msgstr "GpgME"
+
+#~ msgid "GPGME was compiled without support for %1."
+#~ msgstr "GPGME %1 desteği olmadan derlendi."
+
+#~ msgid "Engine %1 is not installed properly."
+#~ msgstr "%1 motoru doğru bir şekilde kurulmamış."
+
+#~ msgid "Engine %1 version %2 installed, but at least version %3 is required."
+#~ msgstr "Motor %1 sürüm %2 kuruldu, ancak en azından sürüm %3 gereklidir."
+
+#~ msgid "Unknown problem with engine for protocol %1."
+#~ msgstr "%1 protokolü için bilinmeyen motor hatası."
+
+#~ msgid "program terminated unexpectedly"
+#~ msgstr "uygulama beklenmedik bir şekilde sonlandırıldı"
+
+#~ msgid "program not found or cannot be started"
+#~ msgstr "uygulama bulunamadı ya da çalıştırılamadı"
+
+#~ msgid "<qt>Failed to execute gpgconf:<p>%1</p></qt>"
+#~ msgstr "<qt>Gpgconf çalıştırılamadı:<p>%1</p></qt>"
+
+#~ msgid ""
+#~ "Could not start gpgconf.\n"
+#~ "Check that gpgconf is in the PATH and that it can be started."
+#~ msgstr ""
+#~ "gpgconf başlatılamadı:\n"
+#~ "gpgconf uygulamasının PATH içinde olup olmadığını ve başlatılabilir olup "
+#~ "olmadığını kontrol edin."
+
+#~ msgid "Error from gpgconf while saving configuration: %1"
+#~ msgstr "Ayarı kaydederken gpgconf' dan hata: %1"
+
+#~ msgid "Generating DSA key..."
+#~ msgstr "DSA anahtarı üretiliyor..."
+
+#~ msgid "Generating ElGamal key..."
+#~ msgstr "ElGamal anahtarı üretiliyor..."
+
+#~ msgid "Searching for a large prime number..."
+#~ msgstr "Büyük bir asal sayı aranıyor..."
+
+#~ msgid ""
+#~ "Waiting for new entropy from random number generator (you might want to "
+#~ "exercise the harddisks or move the mouse)..."
+#~ msgstr ""
+#~ "Rastgele numara üretecinden yeni bir entropi bekleniyor (Sabit diskleri "
+#~ "kullanmak veya fareyi hareket ettirmek isteyebilirsiniz)..."
+
+#~ msgid "Please wait..."
+#~ msgstr "Lütfen bekleyin..."
+
+#~ msgid ""
+#~ "Starting gpg-agent (you should consider starting a global instance "
+#~ "instead)..."
+#~ msgstr ""
+#~ "gpg-agent başlatılıyor (bunun yerine bilinen başka bir örneğini de "
+#~ "düşünebilirsiniz)..."
+
+#~ msgid "While scanning for %1 support in backend %2:"
+#~ msgstr "%2 arka ucunda %1 desteği taranırken:"
+
+#~ msgctxt "progress info: \"%1 of %2\""
+#~ msgid "%1/%2"
+#~ msgstr "%1/%2"
+
+#~ msgid ""
+#~ "OpenPGP key for %1\n"
+#~ "Created: %2\n"
+#~ "Expiry: %3\n"
+#~ "Fingerprint: %4"
+#~ msgstr ""
+#~ "%1 için OpenPGP anahtarı\n"
+#~ "Oluşturma: %2\n"
+#~ "Sona Eriş: %3\n"
+#~ "Parmak izi: %4"
+
+#~ msgid ""
+#~ "S/MIME key for %1\n"
+#~ "Created: %2\n"
+#~ "Expiry: %3\n"
+#~ "Fingerprint: %4\n"
+#~ "Issuer: %5"
+#~ msgstr ""
+#~ "%1 için S/MIME anahtarı\n"
+#~ "Oluşturma: %2\n"
+#~ "Sona Eriş: %3\n"
+#~ "Parmak izi: %4\n"
+#~ "Sağlayan: %5"
+
+#~ msgid "Copy Audit Log to Clipboard"
+#~ msgstr "Audit Günlük Kaydını Panoya Kopyala"
+
+#~ msgid "Add or Change Directory Service"
+#~ msgstr "Dizin Servisi Ekle veya Değiştir"
+
+#~ msgid "&Server name:"
+#~ msgstr "&Sunucu adı:"
+
+#~ msgid "389"
+#~ msgstr "389"
+
+#~ msgid "&User name (optional):"
+#~ msgstr "&Kullanıcı Adı (isteğe bağlı):"
+
+#~ msgid "Pass&word (optional):"
+#~ msgstr "Şi&fre (isteğe bağlı):"
+
+#~ msgid "&OK"
+#~ msgstr "&Tamam"
+
+#~ msgid "&Cancel"
+#~ msgstr "İ&ptal"
+
+#~ msgid "&Base DN:"
+#~ msgstr "&Ana DN:"
+
+#~ msgid "&Port:"
+#~ msgstr "&Port:"
+
+#~ msgctxt "NAME OF TRANSLATORS"
+#~ msgid "Your names"
+#~ msgstr "Yaşar ŞENTÜRK"
+
+#~ msgctxt "EMAIL OF TRANSLATORS"
+#~ msgid "Your emails"
+#~ msgstr "yasar@kde.org.tr"
+
+#~ msgid "failed"
+#~ msgstr "başarısız"
+
+#~ msgctxt ""
+#~ "Items in Kleo::BackendConfigWidget listview (1: protocol; 2: "
+#~ "implementation name)"
+#~ msgid "%1 (%2)"
+#~ msgstr "%1 (%2)"
+
+#~ msgid "Available Backends"
+#~ msgstr "Kullanılabilir Arka Uçlar"
+
+#~ msgid "Confi&gure..."
+#~ msgstr "&Ayarla"
+
+#~ msgid "Rescan"
+#~ msgstr "Yeniden tara"
+
+#~ msgid "The following problems where encountered during scanning:"
+#~ msgstr "Tarama esnasında aşağıdaki sorunlar oluştu:"
+
+#~ msgctxt "@title:window Results of the scanning"
+#~ msgid "Scan Results"
+#~ msgstr "Tarama Sonuçları"
+
+#~ msgid "(Unknown Protocol)"
+#~ msgstr "(Bilinmeyen Protokol)"
+
+#~ msgid "Error while initializing plugin \"%1\""
+#~ msgstr "Eklenti \"%1\" ilklendirilirken hata."
+
+#~ msgid "Can't start decrypt job"
+#~ msgstr "Şifre açma görevi başlatılamadı"
+
+#~ msgid "Can't start encrypt job"
+#~ msgstr "Şifreleme görevi başlatılamadı"
+
+#~ msgid "Error adding signer %1."
+#~ msgstr "%1 imzalayıcısı ekleme hatası."
+
+#~ msgid ""
+#~ "You need a passphrase to unlock the secret key for user:<br/> %1 (retry)"
+#~ msgstr ""
+#~ "Kullanıcının gizli anahtarını açmak için bir şifreye ihtiyacınız var:<br/"
+#~ "> %1 (retry)"
+
+#~ msgid "You need a passphrase to unlock the secret key for user:<br/> %1"
+#~ msgstr ""
+#~ "Kullanıcının gizli anahtarını açmak için bir şifreye ihtiyacınız var:<br/"
+#~ "> %1"
+
+#~ msgid ""
+#~ "This dialog will reappear every time the passphrase is needed. For a more "
+#~ "secure solution that also allows caching the passphrase, use gpg-agent."
+#~ msgstr ""
+#~ "Bu diyalog kutusu her şifreye ihtiyaç duyulduğunda tekrar görünecektir. "
+#~ "Daha güvenli bir çözüm olarak şifreyi kaydetmeye de izin veren gpg-agent' "
+#~ "i kullanın."
+
+#~ msgid "gpg-agent was found in %1, but does not appear to be running."
+#~ msgstr "%1 içinde gpg-agent bulundu, ama çalışır gibi görünmüyor."
+
+#~ msgid "gpg-agent is part of gnupg-%1, which you can download from %2"
+#~ msgstr "gpg-agent, %2' den indirebileceğiniz gnupg-%1 parçasıdır."
+
+#~ msgid "For information on how to set up gpg-agent, see %1"
+#~ msgstr "gpg-agent' ın nasıl ayarlanacağı bilgisi için %1' e bakınız"
+
+#~ msgid "Enter passphrase:"
+#~ msgstr "Şifreyi girin:"
+
+#~ msgid "Passphrase Dialog"
+#~ msgstr "Şifre Diyaloğu"
+
+#~ msgid "Can't start sign job"
+#~ msgstr "İmzalama görevi başlatılamadı"
+
+#, fuzzy
+#~ msgid "Configure"
+#~ msgstr "&Ayarla"
+
+#~ msgid "Select Directory Services to Use Here"
+#~ msgstr "Buradan Kullanılacak Dizin Servislerini Seçin"
+
+#~ msgid ""
+#~ "<qt>\n"
+#~ "<h1>X.500 Directory Services</h1>\n"
+#~ "You can use X.500 directory services to retrieve certificates and "
+#~ "certificate revocation lists that are not saved locally. Ask your local "
+#~ "administrator if you want to make use of this feature and are unsure "
+#~ "which directory service you can use.\n"
+#~ "<p>\n"
+#~ "If you do not use a directory service, you can still use local "
+#~ "certificates.\n"
+#~ "</qt>"
+#~ msgstr ""
+#~ "<qt>\n"
+#~ "<h1>X.500 Dizin Servisleri</h1>\n"
+#~ "X.500 dizin servislerini, sertifikaları ve yerel olarak kaydedilmeyen "
+#~ "sertifika iptal listelerini almak için kullanabilirsiniz. Eğer bu "
+#~ "özelliği kullanmak istiyor ve hangi dizin servisini kullanacağınızdan "
+#~ "emin değilseniz, sistem yöneticinize danışın.\n"
+#~ "<p> \n"
+#~ "Eğer bir dizin servisi kullanmıyorsanız, hâlâ yerel sertifikaları "
+#~ "kullanabilirsiniz.\n"
+#~ "</qt>"
+
+#~ msgid "Port"
+#~ msgstr "Port"
+
+#~ msgid ""
+#~ "<qt>\n"
+#~ "<h1>Add a Directory Service</h1>\n"
+#~ "By clicking this button, you can select a new directory service to be "
+#~ "used for retrieving certificates and CRLs. You will be asked for the "
+#~ "server name and an optional description.\n"
+#~ "</qt>"
+#~ msgstr ""
+#~ "<qt>\n"
+#~ "<h1>Bir Dizin Servisi Ekle</h1> Bu düğmeye tıklayarak, sertifikaları ve "
+#~ "CRL'leri almak için kullanılacak bir dizin servisi seçebilirsiniz. Sizden "
+#~ "sunucu adı ve isteğe bağlı olarak girebileceğinizi bir açıklama bilgisi "
+#~ "istenecektir.\n"
+#~ "</qt>"
+
+#~ msgid "&Add Service..."
+#~ msgstr "Servis &Ekle..."
+
+#~ msgid ""
+#~ "<qt>\n"
+#~ "<h1>Remove Directory Service</h1>\n"
+#~ "By clicking this button, you can remove the currently selected directory "
+#~ "service in the list above. You will have a chance to rethink your "
+#~ "decision before the entry is deleted from the list.\n"
+#~ "</qt>"
+#~ msgstr ""
+#~ "<qt>\n"
+#~ "<h1>Dizin Servisini Kaldır</h1>\n"
+#~ "Bu düğmeye tıklayarak, yukarıdaki listede seçili olan dizin servisini "
+#~ "kaldırabilirsiniz. Girdinin listeden silinmesinden önce kararınızı tekrar "
+#~ "gözden baçirmek için bir şansınız daha olacaktır.\n"
+#~ "</qt>"
+
+#~ msgid "&Remove Service"
+#~ msgstr "Se&rvisi kaldır"
+
+#~ msgid "<unnamed>"
+#~ msgstr "<unnamed>"
+
+#~ msgid "<none>"
+#~ msgstr "<none>"
+
+#~ msgid "<unknown>"
+#~ msgstr "<unknown>"
+
+#~ msgid "Kpgp/gpg"
+#~ msgstr "Kpgp/gpg"
+
+#~ msgid "Kpgp/pgp v2"
+#~ msgstr "Kpgp/pgp v2"
+
+#~ msgid "Kpgp/pgp v5"
+#~ msgstr "Kpgp/pgp v5"
+
+#~ msgid "Kpgp/pgp v6"
+#~ msgstr "Kpgp/pgp v6"
+
+#~ msgid "This backend does not support S/MIME"
+#~ msgstr "Arkauç S/MIME' yi desteklemiyor"
+
+#~ msgid "Please enter your passphrase:"
+#~ msgstr "Lütfen şifrenizi giriniz:"
--- /dev/null
+# Uyghur translation for libkleopatra.
+# Copyright (C) YEAR This_file_is_part_of_KDE
+# This file is distributed under the same license as the PACKAGE package.
+# Sahran <sahran.ug@gmail.com>, 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: libkleopatra\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2017-07-12 06:56+0200\n"
+"PO-Revision-Date: 2013-09-08 07:05+0900\n"
+"Last-Translator: Gheyret Kenji <gheyret@gmail.com>\n"
+"Language-Team: Uyghur Computer Science Association <UKIJ@yahoogroups.com>\n"
+"Language: ug\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: kleo/checksumdefinition.cpp:107
+#, kde-format
+msgid "Error in checksum definition %1: %2"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:157
+#, kde-format
+msgid "Cannot use both %f and | in '%1'"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:167
+#, kde-format
+msgid "Quoting error in '%1' entry"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:170
+#, kde-format
+msgid "'%1' too complex (would need shell)"
+msgstr "«%1» بەك تەس(shell كېرەك بولىدۇ)"
+
+#: kleo/checksumdefinition.cpp:174
+#, kde-format
+msgid "'%1' entry is empty/missing"
+msgstr "'%1' قۇرۇق/يوق"
+
+#: kleo/checksumdefinition.cpp:183
+#, kde-format
+msgid "'%1' empty or not found"
+msgstr "'%1' قۇرۇق ياكى تېپىلمىدى"
+
+#: kleo/checksumdefinition.cpp:222
+#, kde-format
+msgid "'id' entry is empty/missing"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:225
+#, kde-format
+msgid "'output-file' entry is empty/missing"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:228
+#, kde-format
+msgid "'file-patterns' entry is empty/missing"
+msgstr ""
+
+#: kleo/checksumdefinition.cpp:395
+#, kde-format
+msgid "Caught unknown exception in group %1"
+msgstr ""
+
+#: kleo/dn.cpp:507
+#, kde-format
+msgid "Common name"
+msgstr "ئادەتتىكى ئاتى"
+
+#: kleo/dn.cpp:508
+#, kde-format
+msgid "Surname"
+msgstr "تەگات"
+
+#: kleo/dn.cpp:509
+#, kde-format
+msgid "Given name"
+msgstr "ئاتى"
+
+#: kleo/dn.cpp:510
+#, kde-format
+msgid "Location"
+msgstr "ئورنى"
+
+#: kleo/dn.cpp:511
+#, kde-format
+msgid "Title"
+msgstr "ماۋزۇ"
+
+#: kleo/dn.cpp:512
+#, kde-format
+msgid "Organizational unit"
+msgstr ""
+
+#: kleo/dn.cpp:513
+#, kde-format
+msgid "Organization"
+msgstr "ئورگان"
+
+#: kleo/dn.cpp:514
+#, kde-format
+msgid "Postal code"
+msgstr "پوچتا نومۇرى"
+
+#: kleo/dn.cpp:515
+#, kde-format
+msgid "Country code"
+msgstr ""
+
+#: kleo/dn.cpp:516
+#, kde-format
+msgid "State or province"
+msgstr ""
+
+#: kleo/dn.cpp:517
+#, kde-format
+msgid "Domain component"
+msgstr ""
+
+#: kleo/dn.cpp:518
+#, kde-format
+msgid "Business category"
+msgstr ""
+
+#: kleo/dn.cpp:519
+#, kde-format
+msgid "Email address"
+msgstr "ئېلخەت ئادرېسى"
+
+#: kleo/dn.cpp:520
+#, kde-format
+msgid "Mail address"
+msgstr ""
+
+#: kleo/dn.cpp:521
+#, kde-format
+msgid "Mobile phone number"
+msgstr "يانفون نومۇرى"
+
+#: kleo/dn.cpp:522
+#, kde-format
+msgid "Telephone number"
+msgstr "تېلېفون نومۇرى"
+
+#: kleo/dn.cpp:523
+#, kde-format
+msgid "Fax number"
+msgstr "فاكىس نومۇرى"
+
+#: kleo/dn.cpp:524
+#, kde-format
+msgid "Street address"
+msgstr ""
+
+#: kleo/dn.cpp:525
+#, kde-format
+msgid "Unique ID"
+msgstr "بىردىنبىر كىملىك"
+
+#: kleo/enum.cpp:57
+#, kde-format
+msgid "Inline OpenPGP (deprecated)"
+msgstr "سىڭدۈرمە OpenPGP (ئىشلىتىلمەيدۇ)"
+
+#: kleo/enum.cpp:62
+#, kde-format
+msgid "OpenPGP/MIME"
+msgstr ""
+
+#: kleo/enum.cpp:67 ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "S/MIME"
+msgstr "S/MIME"
+
+#: kleo/enum.cpp:72
+#, kde-format
+msgid "S/MIME Opaque"
+msgstr ""
+
+#: kleo/enum.cpp:104
+#, kde-format
+msgid "Any"
+msgstr "خالىغان"
+
+#: kleo/enum.cpp:177
+#, kde-format
+msgid "Never Encrypt"
+msgstr ""
+
+#: kleo/enum.cpp:179
+#, kde-format
+msgid "Always Encrypt"
+msgstr ""
+
+#: kleo/enum.cpp:181
+#, kde-format
+msgid "Always Encrypt If Possible"
+msgstr ""
+
+#: kleo/enum.cpp:183 kleo/enum.cpp:240
+#, kde-format
+msgid "Ask"
+msgstr "سورا"
+
+#: kleo/enum.cpp:185 kleo/enum.cpp:242
+#, kde-format
+msgid "Ask Whenever Possible"
+msgstr ""
+
+#: kleo/enum.cpp:187
+#, kde-kuit-format
+msgctxt "no specific preference"
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>يوق</placeholder>"
+
+#: kleo/enum.cpp:234
+#, kde-format
+msgid "Never Sign"
+msgstr ""
+
+#: kleo/enum.cpp:236
+#, kde-format
+msgid "Always Sign"
+msgstr ""
+
+#: kleo/enum.cpp:238
+#, kde-format
+msgid "Always Sign If Possible"
+msgstr ""
+
+#: kleo/enum.cpp:244
+#, kde-format
+msgctxt "no specific preference"
+msgid "<none>"
+msgstr "<يوق>"
+
+#: kleo/keyfiltermanager.cpp:85
+#, kde-format
+msgid "All Certificates"
+msgstr ""
+
+#: kleo/keyfiltermanager.cpp:100
+#, kde-format
+msgid "My Certificates"
+msgstr ""
+
+#: kleo/keyfiltermanager.cpp:118
+#, kde-format
+msgid "Trusted Certificates"
+msgstr ""
+
+#: kleo/keyfiltermanager.cpp:135
+#, kde-format
+msgid "Fully Trusted Certificates"
+msgstr ""
+
+#: kleo/keyfiltermanager.cpp:152
+#, kde-format
+msgid "Other Certificates"
+msgstr ""
+
+#: kleo/keyfiltermanager.cpp:166
+#, kde-format
+msgid "VS-compliant Certificates"
+msgstr ""
+
+#: kleo/keyfiltermanager.cpp:184
+#, kde-format
+msgid "Not validated Certificates"
+msgstr ""
+
+#: ui/auditlogviewer.cpp:49
+#, kde-format
+msgid "View GnuPG Audit Log"
+msgstr ""
+
+#: ui/auditlogviewer.cpp:53
+#, kde-format
+msgid "&Copy to Clipboard"
+msgstr "چاپلاش تاختىسىغا كۆچۈر(&C)"
+
+#: ui/auditlogviewer.cpp:59
+#, kde-format
+msgid "&Save to Disk..."
+msgstr ""
+
+#: ui/auditlogviewer.cpp:95
+#, kde-format
+msgid "Choose File to Save GnuPG Audit Log to"
+msgstr ""
+
+#: ui/auditlogviewer.cpp:118
+#, kde-format
+msgid "Could not save to file \"%1\": %2"
+msgstr ""
+
+#: ui/auditlogviewer.cpp:120
+#, kde-format
+msgid "File Save Error"
+msgstr ""
+
+#: ui/cryptoconfigdialog.cpp:44
+#, kde-format
+msgid "Configure GnuPG Backend"
+msgstr ""
+
+#: ui/cryptoconfigdialog.cpp:55
+#, kde-format
+msgid "&Reset"
+msgstr "ئەسلىگە قايتۇر(&R)"
+
+#: ui/cryptoconfigmodule.cpp:160
+#, kde-format
+msgid "GpgConf Error"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:216
+#, kde-format
+msgid ""
+"The gpgconf tool used to provide the information for this dialog does not "
+"seem to be installed properly. It did not return any components. Try running "
+"\"%1\" on the command line for more information."
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:496
+#, kde-format
+msgctxt ""
+"Translate this to 'yes' or 'no' (use the English words!) depending on "
+"whether your language uses Sentence style capitalisation in GUI labels (yes) "
+"or not (no). Context: We get some backend strings in that have the wrong "
+"capitalizaion (in English, at least) so we need to force the first character "
+"to upper-case. It is this behaviour you can control for your language with "
+"this translation."
+msgid "yes"
+msgstr "no"
+
+#: ui/cryptoconfigmodule.cpp:546
+#, kde-format
+msgid "0 - None"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:547
+#, kde-format
+msgid "1 - Basic"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:548
+#, kde-format
+msgid "2 - Verbose"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:549
+#, kde-format
+msgid "3 - More Verbose"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:550
+#, kde-format
+msgid "4 - All"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:559
+#, kde-format
+msgid "Set the debugging level to"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:787
+#, kde-format
+msgid "Show..."
+msgstr "كۆرسەت …"
+
+#: ui/cryptoconfigmodule.cpp:787 ui/cryptoconfigmodule.cpp:876
+#, kde-format
+msgid "Edit..."
+msgstr "تەھرىر…"
+
+#: ui/cryptoconfigmodule.cpp:841
+#, kde-format
+msgid "Configure LDAP Servers"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:862
+#, kde-format
+msgid "None configured"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:864
+#, kde-format
+msgid "1 server configured"
+msgid_plural "%1 servers configured"
+msgstr[0] ""
+
+#: ui/cryptoconfigmodule.cpp:879
+#, kde-format
+msgid "Use keyserver at"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:968
+#, kde-format
+msgid "Configure Keyservers"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:67
+#, kde-format
+msgctxt "default server name, keep it a valid domain name, ie. no spaces"
+msgid "server"
+msgstr "مۇلازىمېتىر"
+
+#: ui/directoryserviceswidget.cpp:95
+#, kde-format
+msgid "hkp"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:96
+#, kde-format
+msgid "http"
+msgstr "http"
+
+#: ui/directoryserviceswidget.cpp:97
+#, kde-format
+msgid "https"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:98
+#, kde-format
+msgid "ftp"
+msgstr "ftp"
+
+#: ui/directoryserviceswidget.cpp:99
+#, kde-format
+msgid "ftps"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:100
+#, kde-format
+msgid "ldap"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:101
+#, kde-format
+msgid "ldaps"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:588
+#, kde-format
+msgid "Server Name"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:589
+#, kde-format
+msgid "Server Port"
+msgstr "مۇلازىمېتىر ئېغىزى"
+
+#: ui/directoryserviceswidget.cpp:590
+#, kde-format
+msgid "Base DN"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:591
+#, kde-format
+msgid "User Name"
+msgstr "ئىشلەتكۈچى ئاتى"
+
+#: ui/directoryserviceswidget.cpp:592
+#, kde-format
+msgid "Password"
+msgstr "ئىم"
+
+#: ui/directoryserviceswidget.cpp:614
+#, kde-format
+msgid "(read-only)"
+msgstr "(ئوقۇشقىلا بولىدۇ)"
+
+#: ui/directoryserviceswidget.cpp:616
+#, kde-format
+msgctxt "amended tooltip; %1: original tooltip"
+msgid "%1 (read-only)"
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:739
+#, kde-format
+msgid ""
+"Enter the name or IP address of the server hosting the directory service."
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:741
+#, kde-format
+msgid ""
+"<b>(Optional, the default is fine in most cases)</b> Pick the port number "
+"the directory service is listening on."
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:744
+#, kde-format
+msgid ""
+"<b>(Only for LDAP)</b> Enter the base DN for this LDAP server to limit "
+"searches to only that subtree of the directory."
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:747
+#, kde-format
+msgid "<b>(Optional)</b> Enter your user name here, if needed."
+msgstr ""
+
+#: ui/directoryserviceswidget.cpp:749
+#, kde-format
+msgid ""
+"<b>(Optional, not recommended)</b> Enter your password here, if needed. Note "
+"that the password will be saved in the clear in a config file in your home "
+"directory."
+msgstr ""
+
+#. i18n: ectx: property (windowTitle), widget (QWidget, DirectoryServicesWidget)
+#: ui/directoryserviceswidget.ui:14
+#, kde-format
+msgid "Directory Services Configuration"
+msgstr ""
+
+#. i18n: ectx: property (text), widget (QLabel, pgpKSLabel)
+#: ui/directoryserviceswidget.ui:22
+#, fuzzy, kde-format
+#| msgid "OpenPGP Key Selection"
+msgid "OpenPGP Keyserver:"
+msgstr "OpenPGP ئاچقۇچىنى تاللاش"
+
+#. i18n: ectx: property (title), widget (QGroupBox, x500LA)
+#: ui/directoryserviceswidget.ui:35
+#, fuzzy, kde-format
+#| msgid "Add or Change Directory Service"
+msgid "X509 Directory services:"
+msgstr "Add or Change Directory Service"
+
+#. i18n: ectx: property (whatsThis), widget (QTreeView, treeView)
+#: ui/directoryserviceswidget.ui:43
+#, kde-format
+msgid ""
+"This is a list of all directory services that are configured for use with "
+"X.509."
+msgstr ""
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:70
+#, kde-format
+msgid "Click to add a service"
+msgstr ""
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:73
+#, kde-format
+msgid ""
+"Click this button to create a new directory service entry as a clone of the "
+"currently selected one (or with default values, if no other is selected). "
+"You can then configure details in the table on the left hand."
+msgstr ""
+
+#. i18n: ectx: property (text), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:76
+#, kde-format
+msgid "New"
+msgstr "يېڭى"
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:92
+#, kde-format
+msgid "Click to remove the currently selected service"
+msgstr ""
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:95
+#, kde-format
+msgid ""
+"Click this button to remove the currently selected directory service. The "
+"change will only take effect once you acknowledge the main configuration "
+"dialog."
+msgstr ""
+
+#. i18n: ectx: property (text), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:98
+#, kde-format
+msgid "Delete"
+msgstr "ئۆچۈر"
+
+#. i18n: ectx: property (whatsThis), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:128
+#, kde-format
+msgid ""
+"Use this option to switch display of username and password information on or "
+"off in the above table."
+msgstr ""
+
+#. i18n: ectx: property (text), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:131
+#, kde-format
+msgid "Show user and password information"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:73
+#, kde-format
+msgid "Description"
+msgstr "چۈشەندۈرۈش"
+
+#: ui/dnattributeorderconfigwidget.cpp:91
+#, kde-format
+msgid "Available attributes:"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:92
+#, kde-format
+msgid "Current attribute order:"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:112
+#, kde-format
+msgid "All others"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:129
+#, kde-format
+msgid "Move to top"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:130
+#, kde-format
+msgid "Move one up"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:131
+#, kde-format
+msgid "Remove from current attribute order"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:132
+#, kde-format
+msgid "Add to current attribute order"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:133
+#, kde-format
+msgid "Move one down"
+msgstr ""
+
+#: ui/dnattributeorderconfigwidget.cpp:134
+#, kde-format
+msgid "Move to bottom"
+msgstr ""
+
+#: ui/keyapprovaldialog.cpp:87
+#, kde-kuit-format
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>يوق</placeholder>"
+
+#: ui/keyapprovaldialog.cpp:88
+#, kde-format
+msgid "Never Encrypt with This Key"
+msgstr "بۇ ئاچقۇچ بىلەن ھەرگىز شىفىرلىما"
+
+#: ui/keyapprovaldialog.cpp:89
+#, kde-format
+msgid "Always Encrypt with This Key"
+msgstr "ھەمىشە مۇشۇ ئاچقۇچ بىلەن شىفىرلاش"
+
+#: ui/keyapprovaldialog.cpp:90
+#, kde-format
+msgid "Encrypt Whenever Encryption is Possible"
+msgstr "شىفىرلاش مۇمكىن بولغاندا شىفىرلا"
+
+#: ui/keyapprovaldialog.cpp:91
+#, kde-format
+msgid "Always Ask"
+msgstr "دائىم سورا"
+
+#: ui/keyapprovaldialog.cpp:92
+#, kde-format
+msgid "Ask Whenever Encryption is Possible"
+msgstr "شىفىرلاش مۇمكىن بولغاندا سوراش"
+
+#: ui/keyapprovaldialog.cpp:113
+#, kde-format
+msgid "Encryption Key Approval"
+msgstr "شىفىرلاش ئاچقۇچىنى تەستىقلاش"
+
+#: ui/keyapprovaldialog.cpp:129
+#, kde-format
+msgid "The following keys will be used for encryption:"
+msgstr "تۆۋەندىكى ئاچقۇچلار شىفىرلاشقا ئىشلىتىلىدۇ:"
+
+#: ui/keyapprovaldialog.cpp:145
+#, kde-format
+msgid "Your keys:"
+msgstr "ئاچقۇچلىرىڭىز:"
+
+#: ui/keyapprovaldialog.cpp:157
+#, kde-format
+msgid "Recipient:"
+msgstr "تاپشۇرۇۋالغۇچى:"
+
+#: ui/keyapprovaldialog.cpp:162
+#, kde-format
+msgid "Encryption keys:"
+msgstr "شىفىرلاش ئاچقۇچى:"
+
+#: ui/keyapprovaldialog.cpp:169
+#, kde-format
+msgid "Encryption preference:"
+msgstr "شىفىرلاش خاسلىقى:"
+
+#: ui/keyrequester.cpp:118
+#, kde-format
+msgid "Clear"
+msgstr "تازىلا"
+
+#: ui/keyrequester.cpp:121
+#, kde-format
+msgid "Change..."
+msgstr "ئۆزگەرت…"
+
+#: ui/keyrequester.cpp:232 ui/keyselectiondialog.cpp:256
+#, fuzzy, kde-kuit-format
+#| msgid "<placeholder>none</placeholder>"
+msgid "<placeholder>unknown</placeholder>"
+msgstr "<placeholder>يوق</placeholder>"
+
+#: ui/keyrequester.cpp:246 ui/keyselectiondialog.cpp:657
+#, kde-format
+msgid ""
+"<qt><p>An error occurred while fetching the keys from the backend:</p><p><b>"
+"%1</b></p></qt>"
+msgstr ""
+
+#: ui/keyrequester.cpp:251 ui/keyrequester.cpp:283 ui/keyrequester.cpp:306
+#: ui/keyselectiondialog.cpp:630 ui/keyselectiondialog.cpp:662
+#, kde-format
+msgid "Key Listing Failed"
+msgstr ""
+
+#: ui/keyrequester.cpp:281
+#, kde-format
+msgid ""
+"The OpenPGP backend does not support listing keys. Check your installation."
+msgstr ""
+
+#: ui/keyrequester.cpp:304
+#, kde-format
+msgid ""
+"The S/MIME backend does not support listing keys. Check your installation."
+msgstr ""
+
+#: ui/keyrequester.cpp:426
+#, kde-format
+msgid "OpenPGP Key Selection"
+msgstr "OpenPGP ئاچقۇچىنى تاللاش"
+
+#: ui/keyrequester.cpp:427
+#, kde-format
+msgid "Please select an OpenPGP key to use."
+msgstr "ئىشلىتىدىغان OpenPGP ئاچقۇچىنى تاللاڭ."
+
+#: ui/keyrequester.cpp:429
+#, kde-format
+msgid "S/MIME Key Selection"
+msgstr ""
+
+#: ui/keyrequester.cpp:430
+#, kde-format
+msgid "Please select an S/MIME key to use."
+msgstr ""
+
+#: ui/keyrequester.cpp:432
+#, kde-format
+msgid "Key Selection"
+msgstr ""
+
+#: ui/keyrequester.cpp:433
+#, kde-format
+msgid "Please select an (OpenPGP or S/MIME) key to use."
+msgstr ""
+
+#: ui/keyselectioncombo.cpp:195
+#, kde-format
+msgctxt "Name <email> (validity, type, created: date)"
+msgid "%1 (%2, %3, created: %4)"
+msgstr ""
+
+#: ui/keyselectioncombo.cpp:196
+#, kde-format
+msgctxt "Name <email>"
+msgid "%1 <%2>"
+msgstr ""
+
+#: ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "OpenPGP"
+msgstr "OpenPGP"
+
+#: ui/keyselectioncombo.cpp:347
+#, kde-format
+msgid "Loading keys ..."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:98
+#, kde-format
+msgid "The key is not valid."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:106
+#, kde-format
+msgid "The key is expired."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:110
+#, kde-format
+msgid "The key is revoked."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:114
+#, kde-format
+msgid "The key is disabled."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:122
+#, fuzzy, kde-format
+#| msgid "The following keys will be used for encryption:"
+msgid "The key is not designated for encryption."
+msgstr "تۆۋەندىكى ئاچقۇچلار شىفىرلاشقا ئىشلىتىلىدۇ:"
+
+#: ui/keyselectiondialog.cpp:128
+#, kde-format
+msgid "The key is not designated for signing."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:134
+#, kde-format
+msgid "The key is not designated for certifying."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:140
+#, kde-format
+msgid "The key is not designated for authentication."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:148
+#, kde-format
+msgid "The key is not secret."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:163
+#, kde-format
+msgid "The key is not trusted enough."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:169
+#, kde-format
+msgid "The key can be used."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:230
+#, kde-format
+msgid "Key ID"
+msgstr "ئاچقۇچ كىملىكى"
+
+#: ui/keyselectiondialog.cpp:231
+#, kde-format
+msgid "User ID"
+msgstr "ئىشلەتكۈچى ID"
+
+#: ui/keyselectiondialog.cpp:279
+#, kde-format
+msgid "never"
+msgstr "ھەرگىز"
+
+#: ui/keyselectiondialog.cpp:289 ui/keyselectiondialog.cpp:291
+#: ui/keyselectiondialog.cpp:300 ui/keyselectiondialog.cpp:302
+#, kde-format
+msgid "unknown"
+msgstr "نامەلۇم"
+
+#: ui/keyselectiondialog.cpp:289
+#, kde-format
+msgid "OpenPGP key for <b>%1</b>"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:291
+#, kde-format
+msgid "S/MIME key for <b>%1</b>"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:298
+#, kde-format
+msgctxt "Key creation date"
+msgid "Created"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:299
+#, kde-format
+msgctxt "Key Expiration date"
+msgid "Expiry"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:300
+#, kde-format
+msgctxt "Key fingerprint"
+msgid "Fingerprint"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:302
+#, kde-format
+msgctxt "Key issuer"
+msgid "Issuer"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:304
+#, kde-format
+msgctxt "Key status"
+msgid "Status"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:456
+#, kde-format
+msgid "Search for &External Certificates"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:470
+#, kde-format
+msgid "&Search for:"
+msgstr "ئىزدە(&S):"
+
+#: ui/keyselectiondialog.cpp:494
+#, kde-format
+msgid "&Remember choice"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:497
+#, kde-format
+msgid ""
+"<qt><p>If you check this box your choice will be stored and you will not be "
+"asked again.</p></qt>"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:509
+#, kde-format
+msgid "&Reread Keys"
+msgstr "ئاچقۇچلارنى قايتا ئوقۇ(&R)"
+
+#: ui/keyselectiondialog.cpp:510
+#, kde-format
+msgid "&Start Certificate Manager"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:628
+#, kde-format
+msgid "No backends found for listing keys. Check your installation."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:644
+#, kde-format
+msgid "Could not start certificate manager; please check your installation."
+msgstr "ئىسپاتنامە باشقۇرغۇچنى قوزغىتالمىدى. ئورنىتىشنى تەكشۈرۈپ كۆرۈڭ."
+
+#: ui/keyselectiondialog.cpp:646
+#, kde-format
+msgid "Certificate Manager Error"
+msgstr "گۇۋاھنامە باشقۇرغۇچى خاتالىقى"
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Checking selected keys..."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Fetching keys..."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:731
+#, kde-format
+msgid ""
+"<qt>One backend returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgid_plural ""
+"<qt>%1 backends returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgstr[0] ""
+
+#: ui/keyselectiondialog.cpp:736
+#, kde-format
+msgid "Key List Result"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:856
+#, kde-format
+msgid "Recheck Key"
+msgstr "ئاچقۇچنى قايتا تەكشۈرۈش"
+
+#: ui/messagebox.cpp:71
+#, kde-format
+msgid "Your system does not have support for GnuPG Audit Logs"
+msgstr ""
+
+#: ui/messagebox.cpp:72
+#, kde-format
+msgid "System Error"
+msgstr "سىستېما خاتالىقى"
+
+#: ui/messagebox.cpp:79
+#, kde-format
+msgid ""
+"An error occurred while trying to retrieve the GnuPG Audit Log:\n"
+"%1"
+msgstr ""
+
+#: ui/messagebox.cpp:81
+#, kde-format
+msgid "GnuPG Audit Log Error"
+msgstr ""
+
+#: ui/messagebox.cpp:88
+#, kde-format
+msgid "No GnuPG Audit Log available for this operation."
+msgstr ""
+
+#: ui/messagebox.cpp:89
+#, kde-format
+msgid "No GnuPG Audit Log"
+msgstr ""
+
+#: ui/messagebox.cpp:109 ui/messagebox.cpp:115
+#, kde-format
+msgid "GnuPG Audit Log Viewer"
+msgstr ""
+
+#: ui/messagebox.cpp:121
+#, kde-format
+msgid "Signing failed: %1"
+msgstr "ئىمزالاش مەغلۇپ بولدى: %1"
+
+#: ui/messagebox.cpp:122
+#, kde-format
+msgid "Signing successful"
+msgstr ""
+
+#: ui/messagebox.cpp:133
+#, kde-format
+msgid "Encryption failed: %1"
+msgstr "شىفىرلاش مەغلۇپ بولدى: %1"
+
+#: ui/messagebox.cpp:134
+#, kde-format
+msgid "Encryption successful"
+msgstr ""
+
+#: ui/messagebox.cpp:155
+#, kde-format
+msgid "Signing Result"
+msgstr ""
+
+#: ui/messagebox.cpp:167
+#, kde-format
+msgid "Signing Error"
+msgstr ""
+
+#: ui/messagebox.cpp:179 ui/messagebox.cpp:203
+#, kde-format
+msgid "Encryption Result"
+msgstr ""
+
+#: ui/messagebox.cpp:191 ui/messagebox.cpp:215
+#, kde-format
+msgid "Encryption Error"
+msgstr ""
+
+#: ui/messagebox.cpp:263
+#, kde-format
+msgid "&Show Audit Log"
+msgstr ""
+
+#: ui/progressdialog.cpp:91
+#, kde-format
+msgid "%1: %2"
+msgstr "%1: %2"
+
+#~ msgctxt "New X.509 Directory Server"
+#~ msgid "X.509"
+#~ msgstr "X.509"
+
+#~ msgctxt "New OpenPGP Directory Server"
+#~ msgid "OpenPGP"
+#~ msgstr "OpenPGP"
+
+#~ msgid "Scheme"
+#~ msgstr "نۇسخا"
+
+#~ msgid "X.509"
+#~ msgstr "X.509"
+
+#~ msgid "General"
+#~ msgstr "ئادەتتىكى"
+
+#~ msgid "Please wait..."
+#~ msgstr "ساقلاپ تۇرۇڭ…"
+
+#~ msgctxt "progress info: \"%1 of %2\""
+#~ msgid "%1/%2"
+#~ msgstr "%1/%2"
+
+#~ msgid "&Server name:"
+#~ msgstr "مۇلازىمېتىر ئاتى(&S):"
+
+#~ msgid "389"
+#~ msgstr "389"
+
+#~ msgid "&OK"
+#~ msgstr "جەزملە(&O)"
+
+#~ msgid "&Cancel"
+#~ msgstr "ۋاز كەچ(&C)"
+
+#~ msgid "&Port:"
+#~ msgstr "ئېغىز(&P):"
--- /dev/null
+# Translation of libkleopatra.po to Ukrainian
+# Copyright (C) 2004-2017 This_file_is_part_of_KDE
+# This file is distributed under the license LGPL version 2.1 or
+# version 3 or later versions approved by the membership of KDE e.V.
+#
+# Ivan Petrouchtchak <fr.ivan@ukrainian-orthodox.org>, 2004, 2005, 2007, 2008.
+# Andriy Rysin <rysin@kde.org>, 2006.
+# Yuri Chornoivan <yurchor@ukr.net>, 2008, 2009, 2010, 2011, 2014, 2016, 2017.
+msgid ""
+msgstr ""
+"Project-Id-Version: libkleopatra\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2017-07-12 06:56+0200\n"
+"PO-Revision-Date: 2017-07-12 09:34+0300\n"
+"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
+"Language-Team: Ukrainian <kde-i18n-uk@kde.org>\n"
+"Language: uk\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Lokalize 1.5\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"
+
+#: kleo/checksumdefinition.cpp:107
+#, kde-format
+msgid "Error in checksum definition %1: %2"
+msgstr "Помилка у визначенні контрольної суми %1: %2"
+
+#: kleo/checksumdefinition.cpp:157
+#, kde-format
+msgid "Cannot use both %f and | in '%1'"
+msgstr "Не можна використовувати одразу %f і | у «%1»"
+
+#: kleo/checksumdefinition.cpp:167
+#, kde-format
+msgid "Quoting error in '%1' entry"
+msgstr "Помилка, пов’язана з лапками, у записі «%1»"
+
+#: kleo/checksumdefinition.cpp:170
+#, kde-format
+msgid "'%1' too complex (would need shell)"
+msgstr "«%1» занадто складна (потрібна командна оболонка)"
+
+#: kleo/checksumdefinition.cpp:174
+#, kde-format
+msgid "'%1' entry is empty/missing"
+msgstr "запис «%1» є порожнім або його взагалі немає"
+
+#: kleo/checksumdefinition.cpp:183
+#, kde-format
+msgid "'%1' empty or not found"
+msgstr "«%1» є порожньою або її не виявлено"
+
+#: kleo/checksumdefinition.cpp:222
+#, kde-format
+msgid "'id' entry is empty/missing"
+msgstr "запис «id» є порожнім або його взагалі немає"
+
+#: kleo/checksumdefinition.cpp:225
+#, kde-format
+msgid "'output-file' entry is empty/missing"
+msgstr "запис «output-file» є порожнім або його взагалі немає"
+
+#: kleo/checksumdefinition.cpp:228
+#, kde-format
+msgid "'file-patterns' entry is empty/missing"
+msgstr "запис «file-patterns» є порожнім або його взагалі немає"
+
+#: kleo/checksumdefinition.cpp:395
+#, kde-format
+msgid "Caught unknown exception in group %1"
+msgstr "Виявлено невідоме виключення у групі %1"
+
+#: kleo/dn.cpp:507
+#, kde-format
+msgid "Common name"
+msgstr "П. І. Б."
+
+#: kleo/dn.cpp:508
+#, kde-format
+msgid "Surname"
+msgstr "Прізвище"
+
+#: kleo/dn.cpp:509
+#, kde-format
+msgid "Given name"
+msgstr "Ім'я"
+
+#: kleo/dn.cpp:510
+#, kde-format
+msgid "Location"
+msgstr "Адреса"
+
+#: kleo/dn.cpp:511
+#, kde-format
+msgid "Title"
+msgstr "Титул"
+
+#: kleo/dn.cpp:512
+#, kde-format
+msgid "Organizational unit"
+msgstr "Відділ організації"
+
+#: kleo/dn.cpp:513
+#, kde-format
+msgid "Organization"
+msgstr "Організація"
+
+#: kleo/dn.cpp:514
+#, kde-format
+msgid "Postal code"
+msgstr "Поштовий код"
+
+#: kleo/dn.cpp:515
+#, kde-format
+msgid "Country code"
+msgstr "Код країни"
+
+#: kleo/dn.cpp:516
+#, kde-format
+msgid "State or province"
+msgstr "Область або регіон"
+
+#: kleo/dn.cpp:517
+#, kde-format
+msgid "Domain component"
+msgstr "Компонент домену"
+
+#: kleo/dn.cpp:518
+#, kde-format
+msgid "Business category"
+msgstr "Категорія бізнесу"
+
+#: kleo/dn.cpp:519
+#, kde-format
+msgid "Email address"
+msgstr "Поштова адреса"
+
+#: kleo/dn.cpp:520
+#, kde-format
+msgid "Mail address"
+msgstr "Поштова адреса"
+
+#: kleo/dn.cpp:521
+#, kde-format
+msgid "Mobile phone number"
+msgstr "Номер мобільного телефону"
+
+#: kleo/dn.cpp:522
+#, kde-format
+msgid "Telephone number"
+msgstr "Номер телефону"
+
+#: kleo/dn.cpp:523
+#, kde-format
+msgid "Fax number"
+msgstr "Номер факсу"
+
+#: kleo/dn.cpp:524
+#, kde-format
+msgid "Street address"
+msgstr "Вулиця і будинок"
+
+#: kleo/dn.cpp:525
+#, kde-format
+msgid "Unique ID"
+msgstr "Унікальний ІД"
+
+#: kleo/enum.cpp:57
+#, kde-format
+msgid "Inline OpenPGP (deprecated)"
+msgstr "Вбудований OpenPGP (застаріле)"
+
+#: kleo/enum.cpp:62
+#, kde-format
+msgid "OpenPGP/MIME"
+msgstr "OpenPGP/MIME"
+
+#: kleo/enum.cpp:67 ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "S/MIME"
+msgstr "S/MIME"
+
+#: kleo/enum.cpp:72
+#, kde-format
+msgid "S/MIME Opaque"
+msgstr "Непрозорий S/MIME"
+
+#: kleo/enum.cpp:104
+#, kde-format
+msgid "Any"
+msgstr "Будь-який"
+
+#: kleo/enum.cpp:177
+#, kde-format
+msgid "Never Encrypt"
+msgstr "Ніколи не шифрувати"
+
+#: kleo/enum.cpp:179
+#, kde-format
+msgid "Always Encrypt"
+msgstr "Завжди зашифровувати"
+
+#: kleo/enum.cpp:181
+#, kde-format
+msgid "Always Encrypt If Possible"
+msgstr "Завжди зашифровувати, якщо можливо"
+
+#: kleo/enum.cpp:183 kleo/enum.cpp:240
+#, kde-format
+msgid "Ask"
+msgstr "Запитати"
+
+#: kleo/enum.cpp:185 kleo/enum.cpp:242
+#, kde-format
+msgid "Ask Whenever Possible"
+msgstr "Питати, якщо можливо"
+
+#: kleo/enum.cpp:187
+#, kde-kuit-format
+msgctxt "no specific preference"
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>немає</placeholder>"
+
+#: kleo/enum.cpp:234
+#, kde-format
+msgid "Never Sign"
+msgstr "Ніколи не підписувати"
+
+#: kleo/enum.cpp:236
+#, kde-format
+msgid "Always Sign"
+msgstr "Завжди підписувати"
+
+#: kleo/enum.cpp:238
+#, kde-format
+msgid "Always Sign If Possible"
+msgstr "Завжди підписувати, якщо можливо"
+
+#: kleo/enum.cpp:244
+#, kde-format
+msgctxt "no specific preference"
+msgid "<none>"
+msgstr "<немає>"
+
+#: kleo/keyfiltermanager.cpp:85
+#, kde-format
+msgid "All Certificates"
+msgstr "Всі сертифікати"
+
+#: kleo/keyfiltermanager.cpp:100
+#, kde-format
+msgid "My Certificates"
+msgstr "Мої сертифікати"
+
+#: kleo/keyfiltermanager.cpp:118
+#, kde-format
+msgid "Trusted Certificates"
+msgstr "Сертифікати з довірою"
+
+#: kleo/keyfiltermanager.cpp:135
+#, kde-format
+msgid "Fully Trusted Certificates"
+msgstr "Сертифікати з повною довірою"
+
+#: kleo/keyfiltermanager.cpp:152
+#, kde-format
+msgid "Other Certificates"
+msgstr "Інші сертифікати"
+
+#: kleo/keyfiltermanager.cpp:166
+#, kde-format
+msgid "VS-compliant Certificates"
+msgstr "Сумісні із VS сертифікати"
+
+#: kleo/keyfiltermanager.cpp:184
+#, kde-format
+msgid "Not validated Certificates"
+msgstr "Неперевірені сертифікати"
+
+#: ui/auditlogviewer.cpp:49
+#, kde-format
+msgid "View GnuPG Audit Log"
+msgstr "Переглянути журнал перевірки GnuPG"
+
+#: ui/auditlogviewer.cpp:53
+#, kde-format
+msgid "&Copy to Clipboard"
+msgstr "&Копіювати до буфера"
+
+#: ui/auditlogviewer.cpp:59
+#, kde-format
+msgid "&Save to Disk..."
+msgstr "&Зберегти на диск..."
+
+#: ui/auditlogviewer.cpp:95
+#, kde-format
+msgid "Choose File to Save GnuPG Audit Log to"
+msgstr "Виберіть файл для збереження журналу перевірки GnuPG"
+
+#: ui/auditlogviewer.cpp:118
+#, kde-format
+msgid "Could not save to file \"%1\": %2"
+msgstr "Не вдалося зберегти до файла «%1»: %2"
+
+#: ui/auditlogviewer.cpp:120
+#, kde-format
+msgid "File Save Error"
+msgstr "Помилка під час збереження файла"
+
+#: ui/cryptoconfigdialog.cpp:44
+#, kde-format
+msgid "Configure GnuPG Backend"
+msgstr "Налаштувати сервер GnuPG"
+
+#: ui/cryptoconfigdialog.cpp:55
+#, kde-format
+msgid "&Reset"
+msgstr "&Скинути"
+
+#: ui/cryptoconfigmodule.cpp:160
+#, kde-format
+msgid "GpgConf Error"
+msgstr "Помилка GpgConf"
+
+#: ui/cryptoconfigmodule.cpp:216
+#, kde-format
+msgid ""
+"The gpgconf tool used to provide the information for this dialog does not "
+"seem to be installed properly. It did not return any components. Try running "
+"\"%1\" on the command line for more information."
+msgstr ""
+"Інструмент gpgconf, який використовується для отримання відомостей, які буде "
+"показано у цьому діалоговому вікні, здається не встановлено належним чином. "
+"Запит до нього не повернув жодних компонентів. Докладніші відомості можна "
+"отримати з даних, які виводить команда «%1»."
+
+#: ui/cryptoconfigmodule.cpp:496
+#, kde-format
+msgctxt ""
+"Translate this to 'yes' or 'no' (use the English words!) depending on "
+"whether your language uses Sentence style capitalisation in GUI labels (yes) "
+"or not (no). Context: We get some backend strings in that have the wrong "
+"capitalizaion (in English, at least) so we need to force the first character "
+"to upper-case. It is this behaviour you can control for your language with "
+"this translation."
+msgid "yes"
+msgstr "yes"
+
+#: ui/cryptoconfigmodule.cpp:546
+#, kde-format
+msgid "0 - None"
+msgstr "0 — немає"
+
+#: ui/cryptoconfigmodule.cpp:547
+#, kde-format
+msgid "1 - Basic"
+msgstr "1 — базові"
+
+#: ui/cryptoconfigmodule.cpp:548
+#, kde-format
+msgid "2 - Verbose"
+msgstr "2 — докладно"
+
+#: ui/cryptoconfigmodule.cpp:549
+#, kde-format
+msgid "3 - More Verbose"
+msgstr "3 — докладніше"
+
+#: ui/cryptoconfigmodule.cpp:550
+#, kde-format
+msgid "4 - All"
+msgstr "4 — усі"
+
+#: ui/cryptoconfigmodule.cpp:559
+#, kde-format
+msgid "Set the debugging level to"
+msgstr "Встановити рівень налагоджування"
+
+#: ui/cryptoconfigmodule.cpp:787
+#, kde-format
+msgid "Show..."
+msgstr "Показати..."
+
+#: ui/cryptoconfigmodule.cpp:787 ui/cryptoconfigmodule.cpp:876
+#, kde-format
+msgid "Edit..."
+msgstr "Редагувати..."
+
+#: ui/cryptoconfigmodule.cpp:841
+#, kde-format
+msgid "Configure LDAP Servers"
+msgstr "Налаштувати сервери LDAP"
+
+#: ui/cryptoconfigmodule.cpp:862
+#, kde-format
+msgid "None configured"
+msgstr "Не налаштовано"
+
+#: ui/cryptoconfigmodule.cpp:864
+#, kde-format
+msgid "1 server configured"
+msgid_plural "%1 servers configured"
+msgstr[0] "%1 сервер налаштовано"
+msgstr[1] "%1 сервери налаштовано"
+msgstr[2] "%1 серверів налаштовано"
+msgstr[3] "%1 сервер налаштовано"
+
+#: ui/cryptoconfigmodule.cpp:879
+#, kde-format
+msgid "Use keyserver at"
+msgstr "Використовувати сервер ключів на"
+
+#: ui/cryptoconfigmodule.cpp:968
+#, kde-format
+msgid "Configure Keyservers"
+msgstr "Налаштувати сервери ключів"
+
+#: ui/directoryserviceswidget.cpp:67
+#, kde-format
+msgctxt "default server name, keep it a valid domain name, ie. no spaces"
+msgid "server"
+msgstr "сервер"
+
+#: ui/directoryserviceswidget.cpp:95
+#, kde-format
+msgid "hkp"
+msgstr "hkp"
+
+#: ui/directoryserviceswidget.cpp:96
+#, kde-format
+msgid "http"
+msgstr "http"
+
+#: ui/directoryserviceswidget.cpp:97
+#, kde-format
+msgid "https"
+msgstr "https"
+
+#: ui/directoryserviceswidget.cpp:98
+#, kde-format
+msgid "ftp"
+msgstr "ftp"
+
+#: ui/directoryserviceswidget.cpp:99
+#, kde-format
+msgid "ftps"
+msgstr "ftps"
+
+#: ui/directoryserviceswidget.cpp:100
+#, kde-format
+msgid "ldap"
+msgstr "ldap"
+
+#: ui/directoryserviceswidget.cpp:101
+#, kde-format
+msgid "ldaps"
+msgstr "ldaps"
+
+#: ui/directoryserviceswidget.cpp:588
+#, kde-format
+msgid "Server Name"
+msgstr "Назва сервера"
+
+#: ui/directoryserviceswidget.cpp:589
+#, kde-format
+msgid "Server Port"
+msgstr "Порт сервера"
+
+#: ui/directoryserviceswidget.cpp:590
+#, kde-format
+msgid "Base DN"
+msgstr "Кореневий DN"
+
+#: ui/directoryserviceswidget.cpp:591
+#, kde-format
+msgid "User Name"
+msgstr "Користувач"
+
+#: ui/directoryserviceswidget.cpp:592
+#, kde-format
+msgid "Password"
+msgstr "Пароль"
+
+#: ui/directoryserviceswidget.cpp:614
+#, kde-format
+msgid "(read-only)"
+msgstr "(лише читання)"
+
+#: ui/directoryserviceswidget.cpp:616
+#, kde-format
+msgctxt "amended tooltip; %1: original tooltip"
+msgid "%1 (read-only)"
+msgstr "%1 (лише читання)"
+
+#: ui/directoryserviceswidget.cpp:739
+#, kde-format
+msgid ""
+"Enter the name or IP address of the server hosting the directory service."
+msgstr ""
+"Введіть назву або IP-адресу сервера, на якому знаходиться служба каталогу."
+
+#: ui/directoryserviceswidget.cpp:741
+#, kde-format
+msgid ""
+"<b>(Optional, the default is fine in most cases)</b> Pick the port number "
+"the directory service is listening on."
+msgstr ""
+"<b>(Необов’язкове, типового значення, здебільшого, достатньо)</b> Виберіть "
+"номер порту, на якому очікуватиме на з’єднання служба каталогу."
+
+#: ui/directoryserviceswidget.cpp:744
+#, kde-format
+msgid ""
+"<b>(Only for LDAP)</b> Enter the base DN for this LDAP server to limit "
+"searches to only that subtree of the directory."
+msgstr ""
+"<b>(Лише для LDAP)</b> Введіть базовий DN цього сервера LDAP, щоб обмежити "
+"пошук лише ієрархією цього піддерева каталогу."
+
+#: ui/directoryserviceswidget.cpp:747
+#, kde-format
+msgid "<b>(Optional)</b> Enter your user name here, if needed."
+msgstr "<b>(Необов’язкове)</b> Сюди можна ввести ім’я вашого користувача."
+
+#: ui/directoryserviceswidget.cpp:749
+#, kde-format
+msgid ""
+"<b>(Optional, not recommended)</b> Enter your password here, if needed. Note "
+"that the password will be saved in the clear in a config file in your home "
+"directory."
+msgstr ""
+"<b>(Необов’язкове, не рекомендується)</b> Сюди можна ввести ваш пароль. "
+"Зауважте, що пароль буде збережено у вигляді простого тексту у файлі "
+"налаштувань вашого домашнього каталогу."
+
+#. i18n: ectx: property (windowTitle), widget (QWidget, DirectoryServicesWidget)
+#: ui/directoryserviceswidget.ui:14
+#, kde-format
+msgid "Directory Services Configuration"
+msgstr "Налаштування служби каталогу"
+
+#. i18n: ectx: property (text), widget (QLabel, pgpKSLabel)
+#: ui/directoryserviceswidget.ui:22
+#, kde-format
+msgid "OpenPGP Keyserver:"
+msgstr "Сервер ключів OpenPGP:"
+
+#. i18n: ectx: property (title), widget (QGroupBox, x500LA)
+#: ui/directoryserviceswidget.ui:35
+#, kde-format
+msgid "X509 Directory services:"
+msgstr "Служби каталогу X509:"
+
+#. i18n: ectx: property (whatsThis), widget (QTreeView, treeView)
+#: ui/directoryserviceswidget.ui:43
+#, kde-format
+msgid ""
+"This is a list of all directory services that are configured for use with "
+"X.509."
+msgstr ""
+"Це список всіх служб каталогу, які налаштовано на використання з X.509."
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:70
+#, kde-format
+msgid "Click to add a service"
+msgstr "Натисніть, щоб додати службу"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:73
+#, kde-format
+msgid ""
+"Click this button to create a new directory service entry as a clone of the "
+"currently selected one (or with default values, if no other is selected). "
+"You can then configure details in the table on the left hand."
+msgstr ""
+"Натисніть цю кнопку, щоб створити новий запис служби каталогу як копію "
+"поточного (або запису з типовими значеннями, якщо не зараз вибрано жодного "
+"запису). Параметри цього запису ви зможете налаштувати у таблиці, розміщеній "
+"ліворуч."
+
+#. i18n: ectx: property (text), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:76
+#, kde-format
+msgid "New"
+msgstr "Створити"
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:92
+#, kde-format
+msgid "Click to remove the currently selected service"
+msgstr "Натисніть, щоб вилучити вибрану службу"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:95
+#, kde-format
+msgid ""
+"Click this button to remove the currently selected directory service. The "
+"change will only take effect once you acknowledge the main configuration "
+"dialog."
+msgstr ""
+"Натисніть цю кнопку, щоб вилучити поточну вибрану службу каталогу. Зміни "
+"набудуть чинності, тільки-но ви підтвердите їх у вікні налаштування пошти."
+
+#. i18n: ectx: property (text), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:98
+#, kde-format
+msgid "Delete"
+msgstr "Вилучити"
+
+#. i18n: ectx: property (whatsThis), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:128
+#, kde-format
+msgid ""
+"Use this option to switch display of username and password information on or "
+"off in the above table."
+msgstr ""
+"Цей параметр можна використовувати для перемикання показу інформації про "
+"користувача і пароль у таблиці вище."
+
+#. i18n: ectx: property (text), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:131
+#, kde-format
+msgid "Show user and password information"
+msgstr "Показати інформацію про користувача і пароль"
+
+#: ui/dnattributeorderconfigwidget.cpp:73
+#, kde-format
+msgid "Description"
+msgstr "Опис"
+
+#: ui/dnattributeorderconfigwidget.cpp:91
+#, kde-format
+msgid "Available attributes:"
+msgstr "Наявні атрибути:"
+
+#: ui/dnattributeorderconfigwidget.cpp:92
+#, kde-format
+msgid "Current attribute order:"
+msgstr "Поточний порядок атрибутів:"
+
+#: ui/dnattributeorderconfigwidget.cpp:112
+#, kde-format
+msgid "All others"
+msgstr "Всі інші"
+
+#: ui/dnattributeorderconfigwidget.cpp:129
+#, kde-format
+msgid "Move to top"
+msgstr "Пересунути вверх"
+
+#: ui/dnattributeorderconfigwidget.cpp:130
+#, kde-format
+msgid "Move one up"
+msgstr "Пересунути вверх на один"
+
+#: ui/dnattributeorderconfigwidget.cpp:131
+#, kde-format
+msgid "Remove from current attribute order"
+msgstr "Вилучити з поточного порядку атрибутів"
+
+#: ui/dnattributeorderconfigwidget.cpp:132
+#, kde-format
+msgid "Add to current attribute order"
+msgstr "Додати до поточного порядку атрибутів"
+
+#: ui/dnattributeorderconfigwidget.cpp:133
+#, kde-format
+msgid "Move one down"
+msgstr "Пересунути вниз на один"
+
+#: ui/dnattributeorderconfigwidget.cpp:134
+#, kde-format
+msgid "Move to bottom"
+msgstr "Пересунути вниз"
+
+#: ui/keyapprovaldialog.cpp:87
+#, kde-kuit-format
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>немає</placeholder>"
+
+#: ui/keyapprovaldialog.cpp:88
+#, kde-format
+msgid "Never Encrypt with This Key"
+msgstr "Ніколи не шифрувати цим ключем"
+
+#: ui/keyapprovaldialog.cpp:89
+#, kde-format
+msgid "Always Encrypt with This Key"
+msgstr "Завжди зашифровувати цим ключем"
+
+#: ui/keyapprovaldialog.cpp:90
+#, kde-format
+msgid "Encrypt Whenever Encryption is Possible"
+msgstr "Шифрувати, якщо можливо зашифрувати"
+
+#: ui/keyapprovaldialog.cpp:91
+#, kde-format
+msgid "Always Ask"
+msgstr "Завжди питати"
+
+#: ui/keyapprovaldialog.cpp:92
+#, kde-format
+msgid "Ask Whenever Encryption is Possible"
+msgstr "Питати, якщо можливо зашифрувати"
+
+#: ui/keyapprovaldialog.cpp:113
+#, kde-format
+msgid "Encryption Key Approval"
+msgstr "Схвалення ключа шифрування"
+
+#: ui/keyapprovaldialog.cpp:129
+#, kde-format
+msgid "The following keys will be used for encryption:"
+msgstr "Наступні ключі будуть використані для шифрування:"
+
+#: ui/keyapprovaldialog.cpp:145
+#, kde-format
+msgid "Your keys:"
+msgstr "Ваші ключі:"
+
+#: ui/keyapprovaldialog.cpp:157
+#, kde-format
+msgid "Recipient:"
+msgstr "Адресат:"
+
+#: ui/keyapprovaldialog.cpp:162
+#, kde-format
+msgid "Encryption keys:"
+msgstr "Ключі шифрування:"
+
+#: ui/keyapprovaldialog.cpp:169
+#, kde-format
+msgid "Encryption preference:"
+msgstr "Пріоритет засобів шифрування:"
+
+#: ui/keyrequester.cpp:118
+#, kde-format
+msgid "Clear"
+msgstr "Очистити"
+
+#: ui/keyrequester.cpp:121
+#, kde-format
+msgid "Change..."
+msgstr "Змінити..."
+
+#: ui/keyrequester.cpp:232 ui/keyselectiondialog.cpp:256
+#, kde-kuit-format
+msgid "<placeholder>unknown</placeholder>"
+msgstr "<placeholder>невідомо</placeholder>"
+
+#: ui/keyrequester.cpp:246 ui/keyselectiondialog.cpp:657
+#, kde-format
+msgid ""
+"<qt><p>An error occurred while fetching the keys from the backend:</p><p><b>"
+"%1</b></p></qt>"
+msgstr ""
+"<qt><p>При отриманні ключів з сервера сталася помилка:</p><p><b>%1</b></p></"
+"qt>"
+
+#: ui/keyrequester.cpp:251 ui/keyrequester.cpp:283 ui/keyrequester.cpp:306
+#: ui/keyselectiondialog.cpp:630 ui/keyselectiondialog.cpp:662
+#, kde-format
+msgid "Key Listing Failed"
+msgstr "Помилка отримання переліку ключів"
+
+#: ui/keyrequester.cpp:281
+#, kde-format
+msgid ""
+"The OpenPGP backend does not support listing keys. Check your installation."
+msgstr ""
+"Сервер OpenPGP не підтримує перелік ключів. Перевірте, чи належним чином "
+"встановлено програму."
+
+#: ui/keyrequester.cpp:304
+#, kde-format
+msgid ""
+"The S/MIME backend does not support listing keys. Check your installation."
+msgstr ""
+"Сервер S/MIME не підтримує перелік ключів. Перевірте, чи належним чином "
+"встановлено програму."
+
+#: ui/keyrequester.cpp:426
+#, kde-format
+msgid "OpenPGP Key Selection"
+msgstr "Вибір ключа OpenPGP"
+
+#: ui/keyrequester.cpp:427
+#, kde-format
+msgid "Please select an OpenPGP key to use."
+msgstr "Виберіть, будь ласка, ключ OpenPGP."
+
+#: ui/keyrequester.cpp:429
+#, kde-format
+msgid "S/MIME Key Selection"
+msgstr "Вибір ключа S/MIME"
+
+#: ui/keyrequester.cpp:430
+#, kde-format
+msgid "Please select an S/MIME key to use."
+msgstr "Виберіть, будь ласка, ключ S/MIME."
+
+#: ui/keyrequester.cpp:432
+#, kde-format
+msgid "Key Selection"
+msgstr "Вибір ключа"
+
+#: ui/keyrequester.cpp:433
+#, kde-format
+msgid "Please select an (OpenPGP or S/MIME) key to use."
+msgstr "Виберіть, будь ласка, ключ (OpenPGP або S/MIME)."
+
+#: ui/keyselectioncombo.cpp:195
+#, kde-format
+msgctxt "Name <email> (validity, type, created: date)"
+msgid "%1 (%2, %3, created: %4)"
+msgstr "%1 (%2, %3, створено: %4)"
+
+#: ui/keyselectioncombo.cpp:196
+#, kde-format
+msgctxt "Name <email>"
+msgid "%1 <%2>"
+msgstr "%1 <%2>"
+
+#: ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "OpenPGP"
+msgstr "OpenPGP"
+
+#: ui/keyselectioncombo.cpp:347
+#, kde-format
+msgid "Loading keys ..."
+msgstr "Завантажуємо ключі…"
+
+#: ui/keyselectiondialog.cpp:98
+#, kde-format
+msgid "The key is not valid."
+msgstr "Ключ не є чинним."
+
+#: ui/keyselectiondialog.cpp:106
+#, kde-format
+msgid "The key is expired."
+msgstr "Строк дії ключа вичерпано."
+
+#: ui/keyselectiondialog.cpp:110
+#, kde-format
+msgid "The key is revoked."
+msgstr "Ключ відкликано."
+
+#: ui/keyselectiondialog.cpp:114
+#, kde-format
+msgid "The key is disabled."
+msgstr "Ключ було скасовано."
+
+#: ui/keyselectiondialog.cpp:122
+#, kde-format
+msgid "The key is not designated for encryption."
+msgstr "Ключ не призначено для шифрування."
+
+#: ui/keyselectiondialog.cpp:128
+#, kde-format
+msgid "The key is not designated for signing."
+msgstr "Ключ не призначено для підписування."
+
+#: ui/keyselectiondialog.cpp:134
+#, kde-format
+msgid "The key is not designated for certifying."
+msgstr "Ключ не призначено для сертифікації."
+
+#: ui/keyselectiondialog.cpp:140
+#, kde-format
+msgid "The key is not designated for authentication."
+msgstr "Ключ не призначено для розпізнавання."
+
+#: ui/keyselectiondialog.cpp:148
+#, kde-format
+msgid "The key is not secret."
+msgstr "Ключ не є закритим."
+
+#: ui/keyselectiondialog.cpp:163
+#, kde-format
+msgid "The key is not trusted enough."
+msgstr "Ключ є недостатньо надійним."
+
+#: ui/keyselectiondialog.cpp:169
+#, kde-format
+msgid "The key can be used."
+msgstr "Ключ не можна використовувати."
+
+#: ui/keyselectiondialog.cpp:230
+#, kde-format
+msgid "Key ID"
+msgstr "ІД ключа"
+
+#: ui/keyselectiondialog.cpp:231
+#, kde-format
+msgid "User ID"
+msgstr "ІД користувача"
+
+#: ui/keyselectiondialog.cpp:279
+#, kde-format
+msgid "never"
+msgstr "ніколи"
+
+#: ui/keyselectiondialog.cpp:289 ui/keyselectiondialog.cpp:291
+#: ui/keyselectiondialog.cpp:300 ui/keyselectiondialog.cpp:302
+#, kde-format
+msgid "unknown"
+msgstr "невідомий"
+
+#: ui/keyselectiondialog.cpp:289
+#, kde-format
+msgid "OpenPGP key for <b>%1</b>"
+msgstr "Ключ OpenPGP для <b>%1</b>"
+
+#: ui/keyselectiondialog.cpp:291
+#, kde-format
+msgid "S/MIME key for <b>%1</b>"
+msgstr "Ключ S/MIME для <b>%1</b>"
+
+#: ui/keyselectiondialog.cpp:298
+#, kde-format
+msgctxt "Key creation date"
+msgid "Created"
+msgstr "Створено"
+
+#: ui/keyselectiondialog.cpp:299
+#, kde-format
+msgctxt "Key Expiration date"
+msgid "Expiry"
+msgstr "Строк дії"
+
+#: ui/keyselectiondialog.cpp:300
+#, kde-format
+msgctxt "Key fingerprint"
+msgid "Fingerprint"
+msgstr "Відбиток"
+
+#: ui/keyselectiondialog.cpp:302
+#, kde-format
+msgctxt "Key issuer"
+msgid "Issuer"
+msgstr "Видавець"
+
+#: ui/keyselectiondialog.cpp:304
+#, kde-format
+msgctxt "Key status"
+msgid "Status"
+msgstr "Стан"
+
+#: ui/keyselectiondialog.cpp:456
+#, kde-format
+msgid "Search for &External Certificates"
+msgstr "Шукати &зовнішні сертифікати"
+
+#: ui/keyselectiondialog.cpp:470
+#, kde-format
+msgid "&Search for:"
+msgstr "&Шукати за:"
+
+#: ui/keyselectiondialog.cpp:494
+#, kde-format
+msgid "&Remember choice"
+msgstr "&Запам'ятати вибір"
+
+#: ui/keyselectiondialog.cpp:497
+#, kde-format
+msgid ""
+"<qt><p>If you check this box your choice will be stored and you will not be "
+"asked again.</p></qt>"
+msgstr ""
+"<qt><p>Якщо цей параметр ввімкнено, ваш вибір буде збережено та вас більше "
+"не будуть турбувати цим питанням знову.</p></qt>"
+
+#: ui/keyselectiondialog.cpp:509
+#, kde-format
+msgid "&Reread Keys"
+msgstr "&Перечитати ключі"
+
+#: ui/keyselectiondialog.cpp:510
+#, kde-format
+msgid "&Start Certificate Manager"
+msgstr "Зап&устити менеджер сертифікатів"
+
+#: ui/keyselectiondialog.cpp:628
+#, kde-format
+msgid "No backends found for listing keys. Check your installation."
+msgstr ""
+"Не знайдено серверів для отримання переліку ключів. Перевірте, чи належним "
+"чином встановлено програму."
+
+#: ui/keyselectiondialog.cpp:644
+#, kde-format
+msgid "Could not start certificate manager; please check your installation."
+msgstr ""
+"Не вдається запустити менеджер сертифікатів. Будь ласка, перевірте чи все "
+"встановлено правильно."
+
+#: ui/keyselectiondialog.cpp:646
+#, kde-format
+msgid "Certificate Manager Error"
+msgstr "Помилка менеджера сертифікатів"
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Checking selected keys..."
+msgstr "Перевіряються вибрані ключі..."
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Fetching keys..."
+msgstr "Йде отримання ключів..."
+
+#: ui/keyselectiondialog.cpp:731
+#, kde-format
+msgid ""
+"<qt>One backend returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgid_plural ""
+"<qt>%1 backends returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgstr[0] ""
+"<qt>%1 сервер повернув зрізаний вивід.<p>Не всі наявні ключі будуть "
+"показані</p></qt>"
+msgstr[1] ""
+"<qt>%1 сервери повернули зрізаний вивід.<p>Не всі наявні ключі будуть "
+"показані</p></qt>"
+msgstr[2] ""
+"<qt>%1 серверів повернули зрізаний вивід.<p>Не всі наявні ключі будуть "
+"показані</p></qt>"
+msgstr[3] ""
+"<qt>%1 сервер повернув зрізаний вивід.<p>Не всі наявні ключі будуть "
+"показані</p></qt>"
+
+#: ui/keyselectiondialog.cpp:736
+#, kde-format
+msgid "Key List Result"
+msgstr "Результат переліку ключів"
+
+#: ui/keyselectiondialog.cpp:856
+#, kde-format
+msgid "Recheck Key"
+msgstr "Ще раз перевірити ключ"
+
+#: ui/messagebox.cpp:71
+#, kde-format
+msgid "Your system does not have support for GnuPG Audit Logs"
+msgstr "Здається, ваша система не підтримує журнали перевірки GnuPG"
+
+#: ui/messagebox.cpp:72
+#, kde-format
+msgid "System Error"
+msgstr "Системна помилка"
+
+#: ui/messagebox.cpp:79
+#, kde-format
+msgid ""
+"An error occurred while trying to retrieve the GnuPG Audit Log:\n"
+"%1"
+msgstr ""
+"Під час спроби отримання журналу перевірки GnuPG сталася помилка:\n"
+"%1"
+
+#: ui/messagebox.cpp:81
+#, kde-format
+msgid "GnuPG Audit Log Error"
+msgstr "Помилка у журналі перевірки GnuPG"
+
+#: ui/messagebox.cpp:88
+#, kde-format
+msgid "No GnuPG Audit Log available for this operation."
+msgstr "Для цієї дії журнал перевірки GnuPG недоступний."
+
+#: ui/messagebox.cpp:89
+#, kde-format
+msgid "No GnuPG Audit Log"
+msgstr "Немає журналу перевірки GnuPG"
+
+#: ui/messagebox.cpp:109 ui/messagebox.cpp:115
+#, kde-format
+msgid "GnuPG Audit Log Viewer"
+msgstr "Переглядач журналу перевірки GnuPG"
+
+#: ui/messagebox.cpp:121
+#, kde-format
+msgid "Signing failed: %1"
+msgstr "Помилку підпису: %1"
+
+#: ui/messagebox.cpp:122
+#, kde-format
+msgid "Signing successful"
+msgstr "Підписування виконано успішно"
+
+#: ui/messagebox.cpp:133
+#, kde-format
+msgid "Encryption failed: %1"
+msgstr "Помилка шифрування: %1"
+
+#: ui/messagebox.cpp:134
+#, kde-format
+msgid "Encryption successful"
+msgstr "Шифрування виконано успішно"
+
+#: ui/messagebox.cpp:155
+#, kde-format
+msgid "Signing Result"
+msgstr "Результат підписування"
+
+#: ui/messagebox.cpp:167
+#, kde-format
+msgid "Signing Error"
+msgstr "Помилка під час підписування"
+
+#: ui/messagebox.cpp:179 ui/messagebox.cpp:203
+#, kde-format
+msgid "Encryption Result"
+msgstr "Результат шифрування"
+
+#: ui/messagebox.cpp:191 ui/messagebox.cpp:215
+#, kde-format
+msgid "Encryption Error"
+msgstr "Помилка шифрування"
+
+#: ui/messagebox.cpp:263
+#, kde-format
+msgid "&Show Audit Log"
+msgstr "&Показати журнал перевірки"
+
+#: ui/progressdialog.cpp:91
+#, kde-format
+msgid "%1: %2"
+msgstr "%1: %2"
+
+#~ msgctxt "New X.509 Directory Server"
+#~ msgid "X.509"
+#~ msgstr "X.509"
+
+#~ msgctxt "New OpenPGP Directory Server"
+#~ msgid "OpenPGP"
+#~ msgstr "OpenPGP"
+
+#~ msgid "Scheme"
+#~ msgstr "Схема"
+
+#~ msgid "X.509"
+#~ msgstr "X.509"
+
+#~ msgid ""
+#~ "Select the access scheme (scheme) that the directory service is available "
+#~ "through."
+#~ msgstr ""
+#~ "Виберіть протокол доступу (схему), за посередництвом якої буде доступна "
+#~ "служба каталогу."
+
+#~ msgid ""
+#~ "Check this column if this directory service is providing S/MIME (X.509) "
+#~ "certificates."
+#~ msgstr ""
+#~ "Позначте цей стовпчик, якщо ця служба каталогу надає сертифікати S/MIME "
+#~ "(X.509)."
+
+#~ msgid ""
+#~ "Check this column if this directory service is providing OpenPGP "
+#~ "certificates."
+#~ msgstr ""
+#~ "Позначте цей стовпчик, якщо ця служба каталогу надає сертифікати OpenPGP."
+
+#~ msgid "0 - None (no debugging at all)"
+#~ msgstr "0 — жодного (взагалі без налагоджування)"
+
+#~ msgid "1 - Basic (some basic debug messages)"
+#~ msgstr "1 — базовий (деякі базові налагоджувальні повідомлення)"
+
+#~ msgid "2 - Advanced (more verbose debug messages)"
+#~ msgstr "2 — розширений (докладніші налагоджувальні повідомлення)"
+
+#~ msgid "3 - Expert (even more detailed messages)"
+#~ msgstr "3 — експертний (ще детальніші повідомлення)"
+
+#~ msgid "4 - Guru (all of the debug messages you can get)"
+#~ msgstr "4 — гуру (всі можливі налагоджувальні повідомлення)"
+
+#~ msgid "General"
+#~ msgstr "Загальне"
+
+#~ msgid "Chiasmus"
+#~ msgstr "Chiasmus"
+
+#~ msgid "Chiasmus command line tool"
+#~ msgstr "Засіб командного рядка Chiasmus"
+
+#~ msgid "Unsupported protocol \"%1\""
+#~ msgstr "Протокол «%1» не підтримується"
+
+#~ msgid "File \"%1\" does not exist or is not executable."
+#~ msgstr "Файл «%1» не існує або це не файл програми."
+
+#~ msgid "Output from chiasmus"
+#~ msgstr "Вивід з chiasmus"
+
+#~ msgid "Decryption failed: %1"
+#~ msgstr "Помилка шифрування: %1"
+
+#~ msgid ""
+#~ "The following was received on stderr:\n"
+#~ "%1"
+#~ msgstr ""
+#~ "Наступне було отримано на stderr:\n"
+#~ "%1"
+
+#~ msgid "Failed to load %1: %2"
+#~ msgstr "Не вдалось завантажити %1: %2"
+
+#~ msgid "Library does not contain the symbol \"Chiasmus\"."
+#~ msgstr "Бібліотека не містить символу «Chiasmus»."
+
+#~ msgid "Scanning directory %1..."
+#~ msgstr "Сканування каталогу %1..."
+
+#~ msgid "GpgME"
+#~ msgstr "GpgME"
+
+#~ msgid "GPGME was compiled without support for %1."
+#~ msgstr "GPGME скомпільовано без підтримки для %1."
+
+#~ msgid "Engine %1 is not installed properly."
+#~ msgstr "Двигун %1 неправильно встановлено."
+
+#~ msgid "Engine %1 version %2 installed, but at least version %3 is required."
+#~ msgstr "Встановлений сервер %1 версія %2, а необхідна принаймні версія %3."
+
+#~ msgid "Unknown problem with engine for protocol %1."
+#~ msgstr "Невідома проблема в двигуні для протоколу %1."
+
+#~ msgid "program terminated unexpectedly"
+#~ msgstr "програма несподівано завершилась"
+
+#~ msgid "program not found or cannot be started"
+#~ msgstr "неможливо знайти або запустити програму"
+
+#~ msgid "<qt>Failed to execute gpgconf:<p>%1</p></qt>"
+#~ msgstr "<qt>Помилка виконання gpgconf:<p>%1</p></qt>"
+
+#~ msgid ""
+#~ "Could not start gpgconf.\n"
+#~ "Check that gpgconf is in the PATH and that it can be started."
+#~ msgstr ""
+#~ "Неможливо запустити gpgconf\n"
+#~ "Переконайтесь, що gpgconf знаходиться в PATH, і що її можна запустити."
+
+#~ msgid "Error from gpgconf while saving configuration: %1"
+#~ msgstr "Помилка в gpgconf під час збереження налаштування: %1"
+
+#~ msgid "Generating DSA key..."
+#~ msgstr "Створюється ключ DSA..."
+
+#~ msgid "Generating ElGamal key..."
+#~ msgstr "Створюється ключ ElGamal..."
+
+#~ msgid "Searching for a large prime number..."
+#~ msgstr "Пошук за великим простим числом..."
+
+#~ msgid ""
+#~ "Waiting for new entropy from random number generator (you might want to "
+#~ "exercise the harddisks or move the mouse)..."
+#~ msgstr ""
+#~ "Очікується нова ентропія з генератора випадкових чисел (можна прискорити "
+#~ "переглядом файлів або переміщенням мишки)..."
+
+#~ msgid "Please wait..."
+#~ msgstr "Зачекайте, будь ласка..."
+
+#~ msgid ""
+#~ "Starting gpg-agent (you should consider starting a global instance "
+#~ "instead)..."
+#~ msgstr ""
+#~ "Запуск gpg-agent (бажано було б замість цього запустити глобальний "
+#~ "примірник)..."
+
+#~ msgid "While scanning for %1 support in backend %2:"
+#~ msgstr "Під час сканування підтримки %1 в програмі %2:"
+
+#~ msgctxt "progress info: \"%1 of %2\""
+#~ msgid "%1/%2"
+#~ msgstr "%1 з %2"
+
+#~ msgid ""
+#~ "OpenPGP key for %1\n"
+#~ "Created: %2\n"
+#~ "Expiry: %3\n"
+#~ "Fingerprint: %4"
+#~ msgstr ""
+#~ "Ключ OpenPGP для %1\n"
+#~ "Створений: %2\n"
+#~ "Дійсний до: %3\n"
+#~ "Відбиток: %4"
+
+#~ msgid ""
+#~ "S/MIME key for %1\n"
+#~ "Created: %2\n"
+#~ "Expiry: %3\n"
+#~ "Fingerprint: %4\n"
+#~ "Issuer: %5"
+#~ msgstr ""
+#~ "Ключ S/MIME для %1\n"
+#~ "Створений: %2\n"
+#~ "Дійсний до: %3\n"
+#~ "Відбиток: %4\n"
+#~ "Власник: %5"
+
+#~ msgid "Copy Audit Log to Clipboard"
+#~ msgstr "Копіювати журнал перевірки до буфера"
+
+#~ msgid "Add or Change Directory Service"
+#~ msgstr "Додати або змінити службу каталогу"
+
+#~ msgid "&Server name:"
+#~ msgstr "&Назва сервера:"
+
+#~ msgid "389"
+#~ msgstr "389"
+
+#~ msgid "&User name (optional):"
+#~ msgstr "&Користувач (не обов'язково):"
+
+#~ msgid "Pass&word (optional):"
+#~ msgstr "Паро&ль (не обов'язковий):"
+
+#~ msgid "&OK"
+#~ msgstr "&Гаразд"
+
+#~ msgid "&Cancel"
+#~ msgstr "&Скасувати"
+
+#~ msgid "&Base DN:"
+#~ msgstr "&Кореневий DN:"
+
+#~ msgid "&Port:"
+#~ msgstr "&Порт:"
+
+#~ msgid "'%1' not found in filesystem"
+#~ msgstr "«%1» не виявлено у файловій системі"
+
+#~ msgctxt "NAME OF TRANSLATORS"
+#~ msgid "Your names"
+#~ msgstr "о. Іван Петрущак"
+
+#~ msgctxt "EMAIL OF TRANSLATORS"
+#~ msgid "Your emails"
+#~ msgstr "fr.ivan@ukrainian-orthodox.org"
+
+#~ msgid "'create-command' entry is empty/missing"
+#~ msgstr "запис «create-command» є порожнім або його взагалі немає"
+
+#~ msgid "Cannot use both %f and | in verify-command"
+#~ msgstr "Не можна використовувати одразу %f і | у команді перевірки"
+
+#~ msgid "Quoting error in 'verify-command' entry"
+#~ msgstr "Помилка, пов’язана з лапками, у записі «verify-command»"
+
+#~ msgid "'verify-command' too complex (would need shell)"
+#~ msgstr "«verify-command» занадто складна (потрібна командна оболонка)"
+
+#~ msgid "'verify-command' entry is empty/missing"
+#~ msgstr "запис «verify-command» є порожнім або його взагалі немає"
+
+#~ msgid "'verify-command' not found in filesystem"
+#~ msgstr "«verify-command» не виявлено у файловій системі"
+
+#~ msgid "'verify-command' empty or not found"
+#~ msgstr "«verify-command» є порожньою або її не виявлено"
+
+#~ msgid "failed"
+#~ msgstr "невдало"
+
+#~ msgctxt ""
+#~ "Items in Kleo::BackendConfigWidget listview (1: protocol; 2: "
+#~ "implementation name)"
+#~ msgid "%1 (%2)"
+#~ msgstr "%1 (%2)"
+
+#~ msgid "Available Backends"
+#~ msgstr "Доступні сервери"
+
+#~ msgid "Confi&gure..."
+#~ msgstr "Налаш&тувати..."
+
+#~ msgid "Rescan"
+#~ msgstr "Пересканувати"
+
+#~ msgid "The following problems where encountered during scanning:"
+#~ msgstr "Під час сканування виникли наступні проблеми:"
+
+#~ msgctxt "@title:window Results of the scanning"
+#~ msgid "Scan Results"
+#~ msgstr "Результат сканування"
+
+#~ msgid "(Unknown Protocol)"
+#~ msgstr "(Невідомий протокол)"
+
+#~ msgid "Error while initializing plugin \"%1\""
+#~ msgstr "Помилка під час ініціалізації додатка «%1»"
--- /dev/null
+#
+# Levin <zsdjw@21cn.com>, 2004.
+# Lie Ex <lilith.ex@gmail.com>, 2007-2010.
+# Feng Chao <chaofeng111@gmail.com>, 2014.
+# Weng Xuetian <wengxt@gmail.com>, 2015.
+# Guo Yunhe <guoyunhebrave@gmail.com>, 2016.
+msgid ""
+msgstr ""
+"Project-Id-Version: kdeorg\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2017-07-12 06:56+0200\n"
+"PO-Revision-Date: 2017-10-19 10:50-0400\n"
+"Last-Translator: guoyunhebrave <guoyunhebrave@gmail.com>\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/libkleopatra.pot\n"
+
+#: kleo/checksumdefinition.cpp:107
+#, kde-format
+msgid "Error in checksum definition %1: %2"
+msgstr "校验和代码 %1 中有错误:%2"
+
+#: kleo/checksumdefinition.cpp:157
+#, kde-format
+msgid "Cannot use both %f and | in '%1'"
+msgstr "在“%1”中不能同时使用 %f 和 |"
+
+#: kleo/checksumdefinition.cpp:167
+#, kde-format
+msgid "Quoting error in '%1' entry"
+msgstr "在“%1”条目中存在引用错误"
+
+#: kleo/checksumdefinition.cpp:170
+#, kde-format
+msgid "'%1' too complex (would need shell)"
+msgstr "“%1”过于复杂(需要 shell 来处理)"
+
+#: kleo/checksumdefinition.cpp:174
+#, kde-format
+msgid "'%1' entry is empty/missing"
+msgstr "“%1”条目为空或丢失"
+
+#: kleo/checksumdefinition.cpp:183
+#, kde-format
+msgid "'%1' empty or not found"
+msgstr "“%1”为空或找不到"
+
+#: kleo/checksumdefinition.cpp:222
+#, kde-format
+msgid "'id' entry is empty/missing"
+msgstr "“id”字段为空或丢失"
+
+#: kleo/checksumdefinition.cpp:225
+#, kde-format
+msgid "'output-file' entry is empty/missing"
+msgstr "“output-file”字段为空或丢失"
+
+#: kleo/checksumdefinition.cpp:228
+#, kde-format
+msgid "'file-patterns' entry is empty/missing"
+msgstr "“file-patterns”字段为空或丢失"
+
+#: kleo/checksumdefinition.cpp:395
+#, kde-format
+msgid "Caught unknown exception in group %1"
+msgstr "在组“%1”中捕捉到未知异常"
+
+#: kleo/dn.cpp:507
+#, kde-format
+msgid "Common name"
+msgstr "一般名称"
+
+#: kleo/dn.cpp:508
+#, kde-format
+msgid "Surname"
+msgstr "姓氏"
+
+#: kleo/dn.cpp:509
+#, kde-format
+msgid "Given name"
+msgstr "名字"
+
+#: kleo/dn.cpp:510
+#, kde-format
+msgid "Location"
+msgstr "住址"
+
+#: kleo/dn.cpp:511
+#, kde-format
+msgid "Title"
+msgstr "衔头"
+
+#: kleo/dn.cpp:512
+#, kde-format
+msgid "Organizational unit"
+msgstr "组织单元"
+
+#: kleo/dn.cpp:513
+#, kde-format
+msgid "Organization"
+msgstr "组织"
+
+#: kleo/dn.cpp:514
+#, kde-format
+msgid "Postal code"
+msgstr "邮政编码"
+
+#: kleo/dn.cpp:515
+#, kde-format
+msgid "Country code"
+msgstr "国家代码"
+
+#: kleo/dn.cpp:516
+#, kde-format
+msgid "State or province"
+msgstr "省份"
+
+#: kleo/dn.cpp:517
+#, kde-format
+msgid "Domain component"
+msgstr "域组件"
+
+#: kleo/dn.cpp:518
+#, kde-format
+msgid "Business category"
+msgstr "商业目录"
+
+#: kleo/dn.cpp:519
+#, kde-format
+msgid "Email address"
+msgstr "电子邮件地址"
+
+#: kleo/dn.cpp:520
+#, kde-format
+msgid "Mail address"
+msgstr "邮件地址"
+
+#: kleo/dn.cpp:521
+#, kde-format
+msgid "Mobile phone number"
+msgstr "移动电话号码"
+
+#: kleo/dn.cpp:522
+#, kde-format
+msgid "Telephone number"
+msgstr "电话号码"
+
+#: kleo/dn.cpp:523
+#, kde-format
+msgid "Fax number"
+msgstr "传真号码"
+
+#: kleo/dn.cpp:524
+#, kde-format
+msgid "Street address"
+msgstr "街道地址"
+
+#: kleo/dn.cpp:525
+#, kde-format
+msgid "Unique ID"
+msgstr "唯一标识"
+
+#: kleo/enum.cpp:57
+#, kde-format
+msgid "Inline OpenPGP (deprecated)"
+msgstr "内联 OpenPGP(过时)"
+
+#: kleo/enum.cpp:62
+#, kde-format
+msgid "OpenPGP/MIME"
+msgstr "OpenPGP/MIME"
+
+#: kleo/enum.cpp:67 ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "S/MIME"
+msgstr "S/MIME"
+
+#: kleo/enum.cpp:72
+#, kde-format
+msgid "S/MIME Opaque"
+msgstr "非透明 S/MIME"
+
+#: kleo/enum.cpp:104
+#, kde-format
+msgid "Any"
+msgstr "任意"
+
+#: kleo/enum.cpp:177
+#, kde-format
+msgid "Never Encrypt"
+msgstr "从不加密"
+
+#: kleo/enum.cpp:179
+#, kde-format
+msgid "Always Encrypt"
+msgstr "总是加密"
+
+#: kleo/enum.cpp:181
+#, kde-format
+msgid "Always Encrypt If Possible"
+msgstr "尽可能加密"
+
+#: kleo/enum.cpp:183 kleo/enum.cpp:240
+#, kde-format
+msgid "Ask"
+msgstr "询问"
+
+#: kleo/enum.cpp:185 kleo/enum.cpp:242
+#, kde-format
+msgid "Ask Whenever Possible"
+msgstr "有可能时询问"
+
+#: kleo/enum.cpp:187
+#, kde-kuit-format
+msgctxt "no specific preference"
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>无</placeholder>"
+
+#: kleo/enum.cpp:234
+#, kde-format
+msgid "Never Sign"
+msgstr "从不签名"
+
+#: kleo/enum.cpp:236
+#, kde-format
+msgid "Always Sign"
+msgstr "总是签名"
+
+#: kleo/enum.cpp:238
+#, kde-format
+msgid "Always Sign If Possible"
+msgstr "尽可能签名"
+
+#: kleo/enum.cpp:244
+#, kde-format
+msgctxt "no specific preference"
+msgid "<none>"
+msgstr "<无>"
+
+#: kleo/keyfiltermanager.cpp:85
+#, kde-format
+msgid "All Certificates"
+msgstr "全部证书"
+
+#: kleo/keyfiltermanager.cpp:100
+#, kde-format
+msgid "My Certificates"
+msgstr "我的证书"
+
+#: kleo/keyfiltermanager.cpp:118
+#, kde-format
+msgid "Trusted Certificates"
+msgstr "信任的证书"
+
+#: kleo/keyfiltermanager.cpp:135
+#, kde-format
+msgid "Fully Trusted Certificates"
+msgstr "完全信任的证书"
+
+#: kleo/keyfiltermanager.cpp:152
+#, kde-format
+msgid "Other Certificates"
+msgstr "其它证书"
+
+#: kleo/keyfiltermanager.cpp:166
+#, kde-format
+msgid "VS-compliant Certificates"
+msgstr "VS 兼容证书"
+
+#: kleo/keyfiltermanager.cpp:184
+#, kde-format
+msgid "Not validated Certificates"
+msgstr "未验证的证书"
+
+#: ui/auditlogviewer.cpp:49
+#, kde-format
+msgid "View GnuPG Audit Log"
+msgstr "查看 GnuPG 审核日志"
+
+#: ui/auditlogviewer.cpp:53
+#, kde-format
+msgid "&Copy to Clipboard"
+msgstr "复制到剪贴板(&C)"
+
+#: ui/auditlogviewer.cpp:59
+#, kde-format
+msgid "&Save to Disk..."
+msgstr "保存到磁盘(&S)..."
+
+#: ui/auditlogviewer.cpp:95
+#, kde-format
+msgid "Choose File to Save GnuPG Audit Log to"
+msgstr "选择要将 GnuPG 审核日志保存到的文件"
+
+#: ui/auditlogviewer.cpp:118
+#, kde-format
+msgid "Could not save to file \"%1\": %2"
+msgstr "无法保存到文件“%1”:%2"
+
+#: ui/auditlogviewer.cpp:120
+#, kde-format
+msgid "File Save Error"
+msgstr "文件保存错误"
+
+#: ui/cryptoconfigdialog.cpp:44
+#, kde-format
+msgid "Configure GnuPG Backend"
+msgstr "配置 GnuPG 后端"
+
+#: ui/cryptoconfigdialog.cpp:55
+#, kde-format
+msgid "&Reset"
+msgstr "重置(&R)"
+
+#: ui/cryptoconfigmodule.cpp:160
+#, kde-format
+msgid "GpgConf Error"
+msgstr "GpgConf 错误"
+
+#: ui/cryptoconfigmodule.cpp:216
+#, kde-format
+msgid ""
+"The gpgconf tool used to provide the information for this dialog does not "
+"seem to be installed properly. It did not return any components. Try running "
+"\"%1\" on the command line for more information."
+msgstr ""
+"用于为此对话框提供信息的 gpgconf 工具似乎没有正确安装,因此无法返回任何组件。"
+"请在命令行下运行“%1”获取更多信息。"
+
+#: ui/cryptoconfigmodule.cpp:496
+#, kde-format
+msgctxt ""
+"Translate this to 'yes' or 'no' (use the English words!) depending on "
+"whether your language uses Sentence style capitalisation in GUI labels (yes) "
+"or not (no). Context: We get some backend strings in that have the wrong "
+"capitalizaion (in English, at least) so we need to force the first character "
+"to upper-case. It is this behaviour you can control for your language with "
+"this translation."
+msgid "yes"
+msgstr "yes"
+
+#: ui/cryptoconfigmodule.cpp:546
+#, kde-format
+msgid "0 - None"
+msgstr "0 - 无"
+
+#: ui/cryptoconfigmodule.cpp:547
+#, kde-format
+msgid "1 - Basic"
+msgstr "1 - 基本"
+
+#: ui/cryptoconfigmodule.cpp:548
+#, kde-format
+msgid "2 - Verbose"
+msgstr "2 - 详细"
+
+#: ui/cryptoconfigmodule.cpp:549
+#, kde-format
+msgid "3 - More Verbose"
+msgstr "3 - 更详细"
+
+#: ui/cryptoconfigmodule.cpp:550
+#, kde-format
+msgid "4 - All"
+msgstr "4 - 全部"
+
+#: ui/cryptoconfigmodule.cpp:559
+#, kde-format
+msgid "Set the debugging level to"
+msgstr "调试级别"
+
+#: ui/cryptoconfigmodule.cpp:787
+#, kde-format
+msgid "Show..."
+msgstr "显示..."
+
+#: ui/cryptoconfigmodule.cpp:787 ui/cryptoconfigmodule.cpp:876
+#, kde-format
+msgid "Edit..."
+msgstr "编辑..."
+
+#: ui/cryptoconfigmodule.cpp:841
+#, kde-format
+msgid "Configure LDAP Servers"
+msgstr "配置 LDAP 服务器"
+
+#: ui/cryptoconfigmodule.cpp:862
+#, kde-format
+msgid "None configured"
+msgstr "未配置"
+
+#: ui/cryptoconfigmodule.cpp:864
+#, kde-format
+msgid "1 server configured"
+msgid_plural "%1 servers configured"
+msgstr[0] "已配置 %1 个服务器"
+
+#: ui/cryptoconfigmodule.cpp:879
+#, kde-format
+msgid "Use keyserver at"
+msgstr "使用密钥服务器"
+
+#: ui/cryptoconfigmodule.cpp:968
+#, kde-format
+msgid "Configure Keyservers"
+msgstr "配置密钥服务器"
+
+#: ui/directoryserviceswidget.cpp:67
+#, kde-format
+msgctxt "default server name, keep it a valid domain name, ie. no spaces"
+msgid "server"
+msgstr "服务器"
+
+#: ui/directoryserviceswidget.cpp:95
+#, kde-format
+msgid "hkp"
+msgstr "hkp"
+
+#: ui/directoryserviceswidget.cpp:96
+#, kde-format
+msgid "http"
+msgstr "http"
+
+#: ui/directoryserviceswidget.cpp:97
+#, kde-format
+msgid "https"
+msgstr "https"
+
+#: ui/directoryserviceswidget.cpp:98
+#, kde-format
+msgid "ftp"
+msgstr "ftp"
+
+#: ui/directoryserviceswidget.cpp:99
+#, kde-format
+msgid "ftps"
+msgstr "ftps"
+
+#: ui/directoryserviceswidget.cpp:100
+#, kde-format
+msgid "ldap"
+msgstr "ldap"
+
+#: ui/directoryserviceswidget.cpp:101
+#, kde-format
+msgid "ldaps"
+msgstr "ldaps"
+
+#: ui/directoryserviceswidget.cpp:588
+#, kde-format
+msgid "Server Name"
+msgstr "服务器名称"
+
+#: ui/directoryserviceswidget.cpp:589
+#, kde-format
+msgid "Server Port"
+msgstr "服务器端口"
+
+#: ui/directoryserviceswidget.cpp:590
+#, kde-format
+msgid "Base DN"
+msgstr "基本 DN"
+
+#: ui/directoryserviceswidget.cpp:591
+#, kde-format
+msgid "User Name"
+msgstr "用户名称"
+
+#: ui/directoryserviceswidget.cpp:592
+#, kde-format
+msgid "Password"
+msgstr "密码"
+
+#: ui/directoryserviceswidget.cpp:614
+#, kde-format
+msgid "(read-only)"
+msgstr "(只读)"
+
+#: ui/directoryserviceswidget.cpp:616
+#, kde-format
+msgctxt "amended tooltip; %1: original tooltip"
+msgid "%1 (read-only)"
+msgstr "%1(只读)"
+
+#: ui/directoryserviceswidget.cpp:739
+#, kde-format
+msgid ""
+"Enter the name or IP address of the server hosting the directory service."
+msgstr "输入目录服务主机的主机名或 IP 地址。"
+
+#: ui/directoryserviceswidget.cpp:741
+#, kde-format
+msgid ""
+"<b>(Optional, the default is fine in most cases)</b> Pick the port number "
+"the directory service is listening on."
+msgstr "<b>(可选项,通常使用默认值即可)</b>选定目录服务的监听端口号。"
+
+#: ui/directoryserviceswidget.cpp:744
+#, kde-format
+msgid ""
+"<b>(Only for LDAP)</b> Enter the base DN for this LDAP server to limit "
+"searches to only that subtree of the directory."
+msgstr "<b>(仅针对 LDAP)</b>输入在 LDAP 服务器上进行搜索的基准 DN 目录。"
+
+#: ui/directoryserviceswidget.cpp:747
+#, kde-format
+msgid "<b>(Optional)</b> Enter your user name here, if needed."
+msgstr "<b>(可选项)</b>如果需要,在此输入用户名。"
+
+#: ui/directoryserviceswidget.cpp:749
+#, kde-format
+msgid ""
+"<b>(Optional, not recommended)</b> Enter your password here, if needed. Note "
+"that the password will be saved in the clear in a config file in your home "
+"directory."
+msgstr ""
+"<b>(可选项,不推荐)</b>如果需要,在此输入密码。注意此密码将被明文保存在您主目"
+"录下的配置文件内。"
+
+#. i18n: ectx: property (windowTitle), widget (QWidget, DirectoryServicesWidget)
+#: ui/directoryserviceswidget.ui:14
+#, kde-format
+msgid "Directory Services Configuration"
+msgstr "目录服务配置"
+
+#. i18n: ectx: property (text), widget (QLabel, pgpKSLabel)
+#: ui/directoryserviceswidget.ui:22
+#, kde-format
+msgid "OpenPGP Keyserver:"
+msgstr "OpenPGP 密钥服务器:"
+
+#. i18n: ectx: property (title), widget (QGroupBox, x500LA)
+#: ui/directoryserviceswidget.ui:35
+#, kde-format
+msgid "X509 Directory services:"
+msgstr "X509 目录服务:"
+
+#. i18n: ectx: property (whatsThis), widget (QTreeView, treeView)
+#: ui/directoryserviceswidget.ui:43
+#, kde-format
+msgid ""
+"This is a list of all directory services that are configured for use with "
+"X.509."
+msgstr "这是已配置为 X.509 和 OpenPGP 使用的所有目录服务列表。"
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:70
+#, kde-format
+msgid "Click to add a service"
+msgstr "点击添加服务"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:73
+#, kde-format
+msgid ""
+"Click this button to create a new directory service entry as a clone of the "
+"currently selected one (or with default values, if no other is selected). "
+"You can then configure details in the table on the left hand."
+msgstr ""
+"点击此按钮可新建一个所选目录服务条目的克隆项(如果未选择任何项,则使用默认"
+"值)。您可以在左侧的表格中配置其细节。"
+
+#. i18n: ectx: property (text), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:76
+#, kde-format
+msgid "New"
+msgstr "新建"
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:92
+#, kde-format
+msgid "Click to remove the currently selected service"
+msgstr "点击删除选中的服务"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:95
+#, kde-format
+msgid ""
+"Click this button to remove the currently selected directory service. The "
+"change will only take effect once you acknowledge the main configuration "
+"dialog."
+msgstr ""
+"点击此按钮可删除当前所选的目录服务。更改要到下次主配置对话框弹出时生效。"
+
+#. i18n: ectx: property (text), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:98
+#, kde-format
+msgid "Delete"
+msgstr "删除"
+
+#. i18n: ectx: property (whatsThis), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:128
+#, kde-format
+msgid ""
+"Use this option to switch display of username and password information on or "
+"off in the above table."
+msgstr "使用此选项可以决定是否在上面的表格里显示用户名和密码信息。"
+
+#. i18n: ectx: property (text), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:131
+#, kde-format
+msgid "Show user and password information"
+msgstr "显示用户和密码信息"
+
+#: ui/dnattributeorderconfigwidget.cpp:73
+#, kde-format
+msgid "Description"
+msgstr "描述"
+
+#: ui/dnattributeorderconfigwidget.cpp:91
+#, kde-format
+msgid "Available attributes:"
+msgstr "可用属性:"
+
+#: ui/dnattributeorderconfigwidget.cpp:92
+#, kde-format
+msgid "Current attribute order:"
+msgstr "当前属性顺序:"
+
+#: ui/dnattributeorderconfigwidget.cpp:112
+#, kde-format
+msgid "All others"
+msgstr "其它全部"
+
+#: ui/dnattributeorderconfigwidget.cpp:129
+#, kde-format
+msgid "Move to top"
+msgstr "移至顶端"
+
+#: ui/dnattributeorderconfigwidget.cpp:130
+#, kde-format
+msgid "Move one up"
+msgstr "上移"
+
+#: ui/dnattributeorderconfigwidget.cpp:131
+#, kde-format
+msgid "Remove from current attribute order"
+msgstr "从当前属性顺序中删除"
+
+#: ui/dnattributeorderconfigwidget.cpp:132
+#, kde-format
+msgid "Add to current attribute order"
+msgstr "添加到当前属性顺序中"
+
+#: ui/dnattributeorderconfigwidget.cpp:133
+#, kde-format
+msgid "Move one down"
+msgstr "下移"
+
+#: ui/dnattributeorderconfigwidget.cpp:134
+#, kde-format
+msgid "Move to bottom"
+msgstr "移至底端"
+
+#: ui/keyapprovaldialog.cpp:87
+#, kde-kuit-format
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>无</placeholder>"
+
+#: ui/keyapprovaldialog.cpp:88
+#, kde-format
+msgid "Never Encrypt with This Key"
+msgstr "从不使用该密钥加密"
+
+#: ui/keyapprovaldialog.cpp:89
+#, kde-format
+msgid "Always Encrypt with This Key"
+msgstr "总是使用该密钥加密"
+
+#: ui/keyapprovaldialog.cpp:90
+#, kde-format
+msgid "Encrypt Whenever Encryption is Possible"
+msgstr "能加密时就加密"
+
+#: ui/keyapprovaldialog.cpp:91
+#, kde-format
+msgid "Always Ask"
+msgstr "总是询问"
+
+#: ui/keyapprovaldialog.cpp:92
+#, kde-format
+msgid "Ask Whenever Encryption is Possible"
+msgstr "能加密时就询问"
+
+#: ui/keyapprovaldialog.cpp:113
+#, kde-format
+msgid "Encryption Key Approval"
+msgstr "加密密钥认可"
+
+#: ui/keyapprovaldialog.cpp:129
+#, kde-format
+msgid "The following keys will be used for encryption:"
+msgstr "以下密钥将作加密之用:"
+
+#: ui/keyapprovaldialog.cpp:145
+#, kde-format
+msgid "Your keys:"
+msgstr "您的密钥:"
+
+#: ui/keyapprovaldialog.cpp:157
+#, kde-format
+msgid "Recipient:"
+msgstr "接收方:"
+
+#: ui/keyapprovaldialog.cpp:162
+#, kde-format
+msgid "Encryption keys:"
+msgstr "加密密钥:"
+
+#: ui/keyapprovaldialog.cpp:169
+#, kde-format
+msgid "Encryption preference:"
+msgstr "加密首选项:"
+
+#: ui/keyrequester.cpp:118
+#, kde-format
+msgid "Clear"
+msgstr "清除"
+
+#: ui/keyrequester.cpp:121
+#, kde-format
+msgid "Change..."
+msgstr "更改..."
+
+#: ui/keyrequester.cpp:232 ui/keyselectiondialog.cpp:256
+#, kde-kuit-format
+msgid "<placeholder>unknown</placeholder>"
+msgstr "<placeholder>未知</placeholder>"
+
+#: ui/keyrequester.cpp:246 ui/keyselectiondialog.cpp:657
+#, kde-format
+msgid ""
+"<qt><p>An error occurred while fetching the keys from the backend:</p><p><b>"
+"%1</b></p></qt>"
+msgstr "<qt><p>从后端获取密钥时发生错误:</p><p><b>%1</b></p></qt>"
+
+#: ui/keyrequester.cpp:251 ui/keyrequester.cpp:283 ui/keyrequester.cpp:306
+#: ui/keyselectiondialog.cpp:630 ui/keyselectiondialog.cpp:662
+#, kde-format
+msgid "Key Listing Failed"
+msgstr "密钥列出时失败"
+
+#: ui/keyrequester.cpp:281
+#, kde-format
+msgid ""
+"The OpenPGP backend does not support listing keys. Check your installation."
+msgstr "OpenPGP 后端不支持列出密钥,请检查您的安装。"
+
+#: ui/keyrequester.cpp:304
+#, kde-format
+msgid ""
+"The S/MIME backend does not support listing keys. Check your installation."
+msgstr "S/MIME 后端不支持列出密钥,请检查您的安装。"
+
+#: ui/keyrequester.cpp:426
+#, kde-format
+msgid "OpenPGP Key Selection"
+msgstr "OpenPGP 密码选择"
+
+#: ui/keyrequester.cpp:427
+#, kde-format
+msgid "Please select an OpenPGP key to use."
+msgstr "请选择要使用的 OpenPGP 密钥。"
+
+#: ui/keyrequester.cpp:429
+#, kde-format
+msgid "S/MIME Key Selection"
+msgstr "S/MIME 密钥选择"
+
+#: ui/keyrequester.cpp:430
+#, kde-format
+msgid "Please select an S/MIME key to use."
+msgstr "请选择要使用的 S/MIME 密钥。"
+
+#: ui/keyrequester.cpp:432
+#, kde-format
+msgid "Key Selection"
+msgstr "密钥选择"
+
+#: ui/keyrequester.cpp:433
+#, kde-format
+msgid "Please select an (OpenPGP or S/MIME) key to use."
+msgstr "请选择要使用的密钥(OpenPGP 或 S/MIME)。"
+
+#: ui/keyselectioncombo.cpp:195
+#, kde-format
+msgctxt "Name <email> (validity, type, created: date)"
+msgid "%1 (%2, %3, created: %4)"
+msgstr "%1 (%2,%3,创建于:%4)"
+
+#: ui/keyselectioncombo.cpp:196
+#, kde-format
+msgctxt "Name <email>"
+msgid "%1 <%2>"
+msgstr "%1 <%2>"
+
+#: ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "OpenPGP"
+msgstr "OpenPGP"
+
+#: ui/keyselectioncombo.cpp:347
+#, kde-format
+msgid "Loading keys ..."
+msgstr "正在加载密钥..."
+
+#: ui/keyselectiondialog.cpp:98
+#, kde-format
+msgid "The key is not valid."
+msgstr "此密钥无效。"
+
+#: ui/keyselectiondialog.cpp:106
+#, kde-format
+msgid "The key is expired."
+msgstr "此密钥已过期。"
+
+#: ui/keyselectiondialog.cpp:110
+#, kde-format
+msgid "The key is revoked."
+msgstr "此密钥已被撤销。"
+
+#: ui/keyselectiondialog.cpp:114
+#, kde-format
+msgid "The key is disabled."
+msgstr "此密钥已被禁用。"
+
+#: ui/keyselectiondialog.cpp:122
+#, kde-format
+msgid "The key is not designated for encryption."
+msgstr "此密钥并非作加密之用。"
+
+#: ui/keyselectiondialog.cpp:128
+#, kde-format
+msgid "The key is not designated for signing."
+msgstr "此密钥并非作签名之用。"
+
+#: ui/keyselectiondialog.cpp:134
+#, kde-format
+msgid "The key is not designated for certifying."
+msgstr "此密钥并非作认证之用。"
+
+#: ui/keyselectiondialog.cpp:140
+#, kde-format
+msgid "The key is not designated for authentication."
+msgstr "此密钥并非作用户认证之用。"
+
+#: ui/keyselectiondialog.cpp:148
+#, kde-format
+msgid "The key is not secret."
+msgstr "此密钥非私密。"
+
+#: ui/keyselectiondialog.cpp:163
+#, kde-format
+msgid "The key is not trusted enough."
+msgstr "此密钥不被充分信任。"
+
+#: ui/keyselectiondialog.cpp:169
+#, kde-format
+msgid "The key can be used."
+msgstr "此密钥可以使用。"
+
+#: ui/keyselectiondialog.cpp:230
+#, kde-format
+msgid "Key ID"
+msgstr "密钥标识"
+
+#: ui/keyselectiondialog.cpp:231
+#, kde-format
+msgid "User ID"
+msgstr "用户标识"
+
+#: ui/keyselectiondialog.cpp:279
+#, kde-format
+msgid "never"
+msgstr "从不"
+
+#: ui/keyselectiondialog.cpp:289 ui/keyselectiondialog.cpp:291
+#: ui/keyselectiondialog.cpp:300 ui/keyselectiondialog.cpp:302
+#, kde-format
+msgid "unknown"
+msgstr "未知"
+
+#: ui/keyselectiondialog.cpp:289
+#, kde-format
+msgid "OpenPGP key for <b>%1</b>"
+msgstr "<b>%1</b> 的 OpenPGP 密钥"
+
+#: ui/keyselectiondialog.cpp:291
+#, kde-format
+msgid "S/MIME key for <b>%1</b>"
+msgstr "<b>%1</b> 的 S/MIME 密钥"
+
+#: ui/keyselectiondialog.cpp:298
+#, kde-format
+msgctxt "Key creation date"
+msgid "Created"
+msgstr "创建时间"
+
+#: ui/keyselectiondialog.cpp:299
+#, kde-format
+msgctxt "Key Expiration date"
+msgid "Expiry"
+msgstr "过期时间"
+
+#: ui/keyselectiondialog.cpp:300
+#, kde-format
+msgctxt "Key fingerprint"
+msgid "Fingerprint"
+msgstr "指纹"
+
+#: ui/keyselectiondialog.cpp:302
+#, kde-format
+msgctxt "Key issuer"
+msgid "Issuer"
+msgstr "颁发者"
+
+#: ui/keyselectiondialog.cpp:304
+#, kde-format
+msgctxt "Key status"
+msgid "Status"
+msgstr "状态"
+
+#: ui/keyselectiondialog.cpp:456
+#, kde-format
+msgid "Search for &External Certificates"
+msgstr "搜索外部证书(&E)"
+
+#: ui/keyselectiondialog.cpp:470
+#, kde-format
+msgid "&Search for:"
+msgstr "搜索(&S):"
+
+#: ui/keyselectiondialog.cpp:494
+#, kde-format
+msgid "&Remember choice"
+msgstr "记住选择(&R)"
+
+#: ui/keyselectiondialog.cpp:497
+#, kde-format
+msgid ""
+"<qt><p>If you check this box your choice will be stored and you will not be "
+"asked again.</p></qt>"
+msgstr "<qt><p>如果选中该项,您的选择将会储存起来,不会再提问。</p></qt>"
+
+#: ui/keyselectiondialog.cpp:509
+#, kde-format
+msgid "&Reread Keys"
+msgstr "重读密钥(&R)"
+
+#: ui/keyselectiondialog.cpp:510
+#, kde-format
+msgid "&Start Certificate Manager"
+msgstr "启动证书管理器(&S)"
+
+#: ui/keyselectiondialog.cpp:628
+#, kde-format
+msgid "No backends found for listing keys. Check your installation."
+msgstr "没有找到可以列出密钥的后端,请检查您的安装。"
+
+#: ui/keyselectiondialog.cpp:644
+#, kde-format
+msgid "Could not start certificate manager; please check your installation."
+msgstr "无法启动证书管理器,请检查您的安装。"
+
+#: ui/keyselectiondialog.cpp:646
+#, kde-format
+msgid "Certificate Manager Error"
+msgstr "证书管理器错误"
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Checking selected keys..."
+msgstr "正在检查选中的密钥..."
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Fetching keys..."
+msgstr "正在获取密钥..."
+
+#: ui/keyselectiondialog.cpp:731
+#, kde-format
+msgid ""
+"<qt>One backend returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgid_plural ""
+"<qt>%1 backends returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgstr[0] ""
+"<qt>有 %1 个后端程序返回截断了的输出。<p>可用的密钥没有全部列出</p></qt>"
+
+#: ui/keyselectiondialog.cpp:736
+#, kde-format
+msgid "Key List Result"
+msgstr "密钥列表结果"
+
+#: ui/keyselectiondialog.cpp:856
+#, kde-format
+msgid "Recheck Key"
+msgstr "重新检查密钥"
+
+#: ui/messagebox.cpp:71
+#, kde-format
+msgid "Your system does not have support for GnuPG Audit Logs"
+msgstr "您的系统不支持 GnuPG 审核日志"
+
+#: ui/messagebox.cpp:72
+#, kde-format
+msgid "System Error"
+msgstr "系统错误"
+
+#: ui/messagebox.cpp:79
+#, kde-format
+msgid ""
+"An error occurred while trying to retrieve the GnuPG Audit Log:\n"
+"%1"
+msgstr ""
+"尝试获取 GnuPG 审核日志时发生错误:\n"
+"%1"
+
+#: ui/messagebox.cpp:81
+#, kde-format
+msgid "GnuPG Audit Log Error"
+msgstr "GnuPG 审核日志错误"
+
+#: ui/messagebox.cpp:88
+#, kde-format
+msgid "No GnuPG Audit Log available for this operation."
+msgstr "此操作没有 GnuPG 审核日志"
+
+#: ui/messagebox.cpp:89
+#, kde-format
+msgid "No GnuPG Audit Log"
+msgstr "无 GnuPG 审核日志"
+
+#: ui/messagebox.cpp:109 ui/messagebox.cpp:115
+#, kde-format
+msgid "GnuPG Audit Log Viewer"
+msgstr "GnuPG 审核日志查看器"
+
+#: ui/messagebox.cpp:121
+#, kde-format
+msgid "Signing failed: %1"
+msgstr "签名失败:%1"
+
+#: ui/messagebox.cpp:122
+#, kde-format
+msgid "Signing successful"
+msgstr "签名成功"
+
+#: ui/messagebox.cpp:133
+#, kde-format
+msgid "Encryption failed: %1"
+msgstr "加密失败:%1"
+
+#: ui/messagebox.cpp:134
+#, kde-format
+msgid "Encryption successful"
+msgstr "加密成功"
+
+#: ui/messagebox.cpp:155
+#, kde-format
+msgid "Signing Result"
+msgstr "签名结果"
+
+#: ui/messagebox.cpp:167
+#, kde-format
+msgid "Signing Error"
+msgstr "签名错误"
+
+#: ui/messagebox.cpp:179 ui/messagebox.cpp:203
+#, kde-format
+msgid "Encryption Result"
+msgstr "加密结果"
+
+#: ui/messagebox.cpp:191 ui/messagebox.cpp:215
+#, kde-format
+msgid "Encryption Error"
+msgstr "加密错误"
+
+#: ui/messagebox.cpp:263
+#, kde-format
+msgid "&Show Audit Log"
+msgstr "显示审核日志(&S)"
+
+#: ui/progressdialog.cpp:91
+#, kde-format
+msgid "%1: %2"
+msgstr "%1:%2"
--- /dev/null
+# translation of libkleopatra.po to Chinese Traditional
+# Copyright (C) YEAR This_file_is_part_of_KDE
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Franklin Weng <franklin at goodhorse dot idv dot tw>, 2007, 2008.
+# Frank Weng (a.k.a. Franklin) <franklin at goodhorse dot idv dot tw>, 2008, 2009, 2010.
+# Franklin Weng <franklin@mail.everfocus.com.tw>, 2010, 2015.
+msgid ""
+msgstr ""
+"Project-Id-Version: libkleopatra\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2017-07-12 06:56+0200\n"
+"PO-Revision-Date: 2015-02-16 23:21+0800\n"
+"Last-Translator: Franklin Weng <franklin@goodhorse.idv.tw>\n"
+"Language-Team: Chinese Traditional <kde-i18n-doc@kde.org>\n"
+"Language: zh_TW\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.5\n"
+
+#: kleo/checksumdefinition.cpp:107
+#, kde-format
+msgid "Error in checksum definition %1: %2"
+msgstr "檢查碼定義 %1 中有錯誤:%2"
+
+#: kleo/checksumdefinition.cpp:157
+#, kde-format
+msgid "Cannot use both %f and | in '%1'"
+msgstr "在 %1 中不能同時使用 %f 與 |"
+
+#: kleo/checksumdefinition.cpp:167
+#, kde-format
+msgid "Quoting error in '%1' entry"
+msgstr "'%1' 項目中引號錯誤"
+
+#: kleo/checksumdefinition.cpp:170
+#, kde-format
+msgid "'%1' too complex (would need shell)"
+msgstr "'%1' 太複雜(需要用 shell)"
+
+#: kleo/checksumdefinition.cpp:174
+#, kde-format
+msgid "'%1' entry is empty/missing"
+msgstr "'%1' 項目不存在,或者是空的"
+
+#: kleo/checksumdefinition.cpp:183
+#, kde-format
+msgid "'%1' empty or not found"
+msgstr "'%1' 是空的或找不到"
+
+#: kleo/checksumdefinition.cpp:222
+#, kde-format
+msgid "'id' entry is empty/missing"
+msgstr "'id' 項目不存在,或者是空的"
+
+#: kleo/checksumdefinition.cpp:225
+#, kde-format
+msgid "'output-file' entry is empty/missing"
+msgstr "'output-file' 項目不存在,或者是空的"
+
+#: kleo/checksumdefinition.cpp:228
+#, kde-format
+msgid "'file-patterns' entry is empty/missing"
+msgstr "'file-patterns' 項目不存在,或者是空的"
+
+#: kleo/checksumdefinition.cpp:395
+#, kde-format
+msgid "Caught unknown exception in group %1"
+msgstr "在群組 %1 遇到未知的例外狀況"
+
+#: kleo/dn.cpp:507
+#, kde-format
+msgid "Common name"
+msgstr "俗名"
+
+#: kleo/dn.cpp:508
+#, kde-format
+msgid "Surname"
+msgstr "姓"
+
+#: kleo/dn.cpp:509
+#, kde-format
+msgid "Given name"
+msgstr "教名"
+
+#: kleo/dn.cpp:510
+#, kde-format
+msgid "Location"
+msgstr "位置"
+
+#: kleo/dn.cpp:511
+#, kde-format
+msgid "Title"
+msgstr "標題"
+
+#: kleo/dn.cpp:512
+#, kde-format
+msgid "Organizational unit"
+msgstr "組織單位"
+
+#: kleo/dn.cpp:513
+#, kde-format
+msgid "Organization"
+msgstr "組織"
+
+#: kleo/dn.cpp:514
+#, kde-format
+msgid "Postal code"
+msgstr "郵遞區號"
+
+#: kleo/dn.cpp:515
+#, kde-format
+msgid "Country code"
+msgstr "國家代碼"
+
+#: kleo/dn.cpp:516
+#, kde-format
+msgid "State or province"
+msgstr "州或省"
+
+#: kleo/dn.cpp:517
+#, kde-format
+msgid "Domain component"
+msgstr "領域組成"
+
+#: kleo/dn.cpp:518
+#, kde-format
+msgid "Business category"
+msgstr "商業分類"
+
+#: kleo/dn.cpp:519
+#, kde-format
+msgid "Email address"
+msgstr "電子郵件地址"
+
+#: kleo/dn.cpp:520
+#, kde-format
+msgid "Mail address"
+msgstr "信件地址"
+
+#: kleo/dn.cpp:521
+#, kde-format
+msgid "Mobile phone number"
+msgstr "手機號碼"
+
+#: kleo/dn.cpp:522
+#, kde-format
+msgid "Telephone number"
+msgstr "電話號碼"
+
+#: kleo/dn.cpp:523
+#, kde-format
+msgid "Fax number"
+msgstr "傳真號碼"
+
+#: kleo/dn.cpp:524
+#, kde-format
+msgid "Street address"
+msgstr "街道地址"
+
+#: kleo/dn.cpp:525
+#, kde-format
+msgid "Unique ID"
+msgstr "唯一代碼"
+
+#: kleo/enum.cpp:57
+#, kde-format
+msgid "Inline OpenPGP (deprecated)"
+msgstr "內含式 OpenPGP(已廢棄)"
+
+#: kleo/enum.cpp:62
+#, kde-format
+msgid "OpenPGP/MIME"
+msgstr "OpenPGP/MIME"
+
+#: kleo/enum.cpp:67 ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "S/MIME"
+msgstr "S/MIME"
+
+#: kleo/enum.cpp:72
+#, kde-format
+msgid "S/MIME Opaque"
+msgstr "不分離式 S/MIME"
+
+#: kleo/enum.cpp:104
+#, kde-format
+msgid "Any"
+msgstr "任何"
+
+#: kleo/enum.cpp:177
+#, kde-format
+msgid "Never Encrypt"
+msgstr "絕不加密"
+
+#: kleo/enum.cpp:179
+#, kde-format
+msgid "Always Encrypt"
+msgstr "一定加密"
+
+#: kleo/enum.cpp:181
+#, kde-format
+msgid "Always Encrypt If Possible"
+msgstr "如果可加密就加密"
+
+#: kleo/enum.cpp:183 kleo/enum.cpp:240
+#, kde-format
+msgid "Ask"
+msgstr "詢問"
+
+#: kleo/enum.cpp:185 kleo/enum.cpp:242
+#, kde-format
+msgid "Ask Whenever Possible"
+msgstr "可加密時先詢問"
+
+#: kleo/enum.cpp:187
+#, kde-kuit-format
+msgctxt "no specific preference"
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>none</placeholder>"
+
+#: kleo/enum.cpp:234
+#, kde-format
+msgid "Never Sign"
+msgstr "絕不簽署"
+
+#: kleo/enum.cpp:236
+#, kde-format
+msgid "Always Sign"
+msgstr "一定簽署"
+
+#: kleo/enum.cpp:238
+#, kde-format
+msgid "Always Sign If Possible"
+msgstr "可簽署就簽署"
+
+#: kleo/enum.cpp:244
+#, kde-format
+msgctxt "no specific preference"
+msgid "<none>"
+msgstr "<無>"
+
+#: kleo/keyfiltermanager.cpp:85
+#, kde-format
+msgid "All Certificates"
+msgstr "所有憑證"
+
+#: kleo/keyfiltermanager.cpp:100
+#, kde-format
+msgid "My Certificates"
+msgstr "我的憑證"
+
+#: kleo/keyfiltermanager.cpp:118
+#, kde-format
+msgid "Trusted Certificates"
+msgstr "已信任憑證"
+
+#: kleo/keyfiltermanager.cpp:135
+#, fuzzy, kde-format
+#| msgid "Trusted Certificates"
+msgid "Fully Trusted Certificates"
+msgstr "已信任憑證"
+
+#: kleo/keyfiltermanager.cpp:152
+#, kde-format
+msgid "Other Certificates"
+msgstr "其他憑證"
+
+#: kleo/keyfiltermanager.cpp:166
+#, fuzzy, kde-format
+#| msgid "All Certificates"
+msgid "VS-compliant Certificates"
+msgstr "所有憑證"
+
+#: kleo/keyfiltermanager.cpp:184
+#, fuzzy, kde-format
+#| msgid "Trusted Certificates"
+msgid "Not validated Certificates"
+msgstr "已信任憑證"
+
+#: ui/auditlogviewer.cpp:49
+#, kde-format
+msgid "View GnuPG Audit Log"
+msgstr "檢視 GnuPG 稽核紀錄"
+
+#: ui/auditlogviewer.cpp:53
+#, kde-format
+msgid "&Copy to Clipboard"
+msgstr "複製到剪貼簿(&C)"
+
+#: ui/auditlogviewer.cpp:59
+#, kde-format
+msgid "&Save to Disk..."
+msgstr "儲存到磁碟(&S)..."
+
+#: ui/auditlogviewer.cpp:95
+#, kde-format
+msgid "Choose File to Save GnuPG Audit Log to"
+msgstr "選擇用於儲存 GnuPG 稽核紀錄的檔案"
+
+#: ui/auditlogviewer.cpp:118
+#, kde-format
+msgid "Could not save to file \"%1\": %2"
+msgstr "無法儲存到檔案 \"%1\":%2"
+
+#: ui/auditlogviewer.cpp:120
+#, kde-format
+msgid "File Save Error"
+msgstr "檔案儲存錯誤"
+
+#: ui/cryptoconfigdialog.cpp:44
+#, kde-format
+msgid "Configure GnuPG Backend"
+msgstr "設定 GnuPG 後端介面"
+
+#: ui/cryptoconfigdialog.cpp:55
+#, kde-format
+msgid "&Reset"
+msgstr "重設(&R)"
+
+#: ui/cryptoconfigmodule.cpp:160
+#, kde-format
+msgid "GpgConf Error"
+msgstr "GpgConf 錯誤"
+
+#: ui/cryptoconfigmodule.cpp:216
+#, kde-format
+msgid ""
+"The gpgconf tool used to provide the information for this dialog does not "
+"seem to be installed properly. It did not return any components. Try running "
+"\"%1\" on the command line for more information."
+msgstr ""
+"用於提供此對話框的資訊的工具 gpgconf 似乎沒有正確安裝。它沒有傳回任何組件。請"
+"在命令列執行 \"%1\" 看看是怎麼回事。"
+
+#: ui/cryptoconfigmodule.cpp:496
+#, kde-format
+msgctxt ""
+"Translate this to 'yes' or 'no' (use the English words!) depending on "
+"whether your language uses Sentence style capitalisation in GUI labels (yes) "
+"or not (no). Context: We get some backend strings in that have the wrong "
+"capitalizaion (in English, at least) so we need to force the first character "
+"to upper-case. It is this behaviour you can control for your language with "
+"this translation."
+msgid "yes"
+msgstr "no"
+
+#: ui/cryptoconfigmodule.cpp:546
+#, kde-format
+msgid "0 - None"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:547
+#, kde-format
+msgid "1 - Basic"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:548
+#, kde-format
+msgid "2 - Verbose"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:549
+#, kde-format
+msgid "3 - More Verbose"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:550
+#, kde-format
+msgid "4 - All"
+msgstr ""
+
+#: ui/cryptoconfigmodule.cpp:559
+#, kde-format
+msgid "Set the debugging level to"
+msgstr "設定除錯等級"
+
+#: ui/cryptoconfigmodule.cpp:787
+#, kde-format
+msgid "Show..."
+msgstr "顯示..."
+
+#: ui/cryptoconfigmodule.cpp:787 ui/cryptoconfigmodule.cpp:876
+#, kde-format
+msgid "Edit..."
+msgstr "編輯..."
+
+#: ui/cryptoconfigmodule.cpp:841
+#, kde-format
+msgid "Configure LDAP Servers"
+msgstr "設定 LDAP 伺服器"
+
+#: ui/cryptoconfigmodule.cpp:862
+#, fuzzy, kde-format
+#| msgid "No server configured yet"
+msgid "None configured"
+msgstr "還沒設定伺服器"
+
+#: ui/cryptoconfigmodule.cpp:864
+#, kde-format
+msgid "1 server configured"
+msgid_plural "%1 servers configured"
+msgstr[0] "已設定 %1 個伺服器"
+
+#: ui/cryptoconfigmodule.cpp:879
+#, kde-format
+msgid "Use keyserver at"
+msgstr "使用金鑰伺服器:"
+
+#: ui/cryptoconfigmodule.cpp:968
+#, kde-format
+msgid "Configure Keyservers"
+msgstr "設定金鑰伺服器"
+
+#: ui/directoryserviceswidget.cpp:67
+#, kde-format
+msgctxt "default server name, keep it a valid domain name, ie. no spaces"
+msgid "server"
+msgstr "server"
+
+#: ui/directoryserviceswidget.cpp:95
+#, kde-format
+msgid "hkp"
+msgstr "hkp"
+
+#: ui/directoryserviceswidget.cpp:96
+#, kde-format
+msgid "http"
+msgstr "http"
+
+#: ui/directoryserviceswidget.cpp:97
+#, kde-format
+msgid "https"
+msgstr "https"
+
+#: ui/directoryserviceswidget.cpp:98
+#, kde-format
+msgid "ftp"
+msgstr "ftp"
+
+#: ui/directoryserviceswidget.cpp:99
+#, kde-format
+msgid "ftps"
+msgstr "ftps"
+
+#: ui/directoryserviceswidget.cpp:100
+#, kde-format
+msgid "ldap"
+msgstr "ldap"
+
+#: ui/directoryserviceswidget.cpp:101
+#, kde-format
+msgid "ldaps"
+msgstr "ldaps"
+
+#: ui/directoryserviceswidget.cpp:588
+#, kde-format
+msgid "Server Name"
+msgstr "伺服器名稱"
+
+#: ui/directoryserviceswidget.cpp:589
+#, kde-format
+msgid "Server Port"
+msgstr "伺服器連接埠"
+
+#: ui/directoryserviceswidget.cpp:590
+#, kde-format
+msgid "Base DN"
+msgstr "基礎 DN"
+
+#: ui/directoryserviceswidget.cpp:591
+#, kde-format
+msgid "User Name"
+msgstr "使用者名稱"
+
+#: ui/directoryserviceswidget.cpp:592
+#, kde-format
+msgid "Password"
+msgstr "密碼"
+
+#: ui/directoryserviceswidget.cpp:614
+#, kde-format
+msgid "(read-only)"
+msgstr "(唯讀)"
+
+#: ui/directoryserviceswidget.cpp:616
+#, kde-format
+msgctxt "amended tooltip; %1: original tooltip"
+msgid "%1 (read-only)"
+msgstr "%1(唯讀)"
+
+#: ui/directoryserviceswidget.cpp:739
+#, kde-format
+msgid ""
+"Enter the name or IP address of the server hosting the directory service."
+msgstr "輸入目錄服務伺服器的 IP 位址或主機名稱。"
+
+#: ui/directoryserviceswidget.cpp:741
+#, kde-format
+msgid ""
+"<b>(Optional, the default is fine in most cases)</b> Pick the port number "
+"the directory service is listening on."
+msgstr "<b>(選擇性的,預設值通常就可以了)</b>選擇目錄服務所監聽的連接埠。"
+
+#: ui/directoryserviceswidget.cpp:744
+#, kde-format
+msgid ""
+"<b>(Only for LDAP)</b> Enter the base DN for this LDAP server to limit "
+"searches to only that subtree of the directory."
+msgstr ""
+"<b>(只用於 LDAP)</b>輸入此 LDAP 伺服器的 base DN,搜尋都只會在其子樹下執"
+"行。"
+
+#: ui/directoryserviceswidget.cpp:747
+#, kde-format
+msgid "<b>(Optional)</b> Enter your user name here, if needed."
+msgstr "<b>(選擇性的)</b>輸入您的使用者名稱。"
+
+#: ui/directoryserviceswidget.cpp:749
+#, kde-format
+msgid ""
+"<b>(Optional, not recommended)</b> Enter your password here, if needed. Note "
+"that the password will be saved in the clear in a config file in your home "
+"directory."
+msgstr ""
+"<b>(選擇性的,通常不建議使用)</b>需要的話,在此輸入您的密碼。注意密碼會存在"
+"您家目錄中的一個純文字設定檔中。"
+
+#. i18n: ectx: property (windowTitle), widget (QWidget, DirectoryServicesWidget)
+#: ui/directoryserviceswidget.ui:14
+#, kde-format
+msgid "Directory Services Configuration"
+msgstr "目錄服務設定"
+
+#. i18n: ectx: property (text), widget (QLabel, pgpKSLabel)
+#: ui/directoryserviceswidget.ui:22
+#, fuzzy, kde-format
+#| msgid "OpenPGP Key Selection"
+msgid "OpenPGP Keyserver:"
+msgstr "選擇 OpenPGP 金鑰"
+
+#. i18n: ectx: property (title), widget (QGroupBox, x500LA)
+#: ui/directoryserviceswidget.ui:35
+#, fuzzy, kde-format
+#| msgid "Directory services:"
+msgid "X509 Directory services:"
+msgstr "目錄服務:"
+
+#. i18n: ectx: property (whatsThis), widget (QTreeView, treeView)
+#: ui/directoryserviceswidget.ui:43
+#, fuzzy, kde-format
+#| msgid ""
+#| "This is a list of all directory services that are configured for use with "
+#| "X.509 and OpenPGP."
+msgid ""
+"This is a list of all directory services that are configured for use with "
+"X.509."
+msgstr "這是一份所有設定給 X.509 與 OpenPGP 使用的目錄服務的清單。"
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:70
+#, kde-format
+msgid "Click to add a service"
+msgstr "按鍵以新增服務"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:73
+#, kde-format
+msgid ""
+"Click this button to create a new directory service entry as a clone of the "
+"currently selected one (or with default values, if no other is selected). "
+"You can then configure details in the table on the left hand."
+msgstr ""
+"點擊此按鍵來複製目前選取的目錄服務,建立新的目錄服務項目。若未選取任何項目則"
+"使用預設值。接下來您可以在左手邊的表格中設定詳情。"
+
+#. i18n: ectx: property (text), widget (QToolButton, newTB)
+#: ui/directoryserviceswidget.ui:76
+#, kde-format
+msgid "New"
+msgstr "新增"
+
+#. i18n: ectx: property (toolTip), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:92
+#, kde-format
+msgid "Click to remove the currently selected service"
+msgstr "按鍵以移除目前所選擇的服務"
+
+#. i18n: ectx: property (whatsThis), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:95
+#, kde-format
+msgid ""
+"Click this button to remove the currently selected directory service. The "
+"change will only take effect once you acknowledge the main configuration "
+"dialog."
+msgstr ""
+"點擊此按鍵用於移除目前選取的目錄服務。此變更只會在您確認了郵件設定對話框後生"
+"效。"
+
+#. i18n: ectx: property (text), widget (QToolButton, deleteTB)
+#: ui/directoryserviceswidget.ui:98
+#, kde-format
+msgid "Delete"
+msgstr "刪除"
+
+#. i18n: ectx: property (whatsThis), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:128
+#, kde-format
+msgid ""
+"Use this option to switch display of username and password information on or "
+"off in the above table."
+msgstr "使用此選項來切換是否要在上列的表格中顯示使用者名稱與密碼的資訊。"
+
+#. i18n: ectx: property (text), widget (QCheckBox, showUserAndPasswordCB)
+#: ui/directoryserviceswidget.ui:131
+#, kde-format
+msgid "Show user and password information"
+msgstr "顯示使用者帳號與密碼資訊"
+
+#: ui/dnattributeorderconfigwidget.cpp:73
+#, kde-format
+msgid "Description"
+msgstr "描述"
+
+#: ui/dnattributeorderconfigwidget.cpp:91
+#, kde-format
+msgid "Available attributes:"
+msgstr "可用的屬性:"
+
+#: ui/dnattributeorderconfigwidget.cpp:92
+#, kde-format
+msgid "Current attribute order:"
+msgstr "目前的屬性順序:"
+
+#: ui/dnattributeorderconfigwidget.cpp:112
+#, kde-format
+msgid "All others"
+msgstr "所有其他的"
+
+#: ui/dnattributeorderconfigwidget.cpp:129
+#, kde-format
+msgid "Move to top"
+msgstr "移到最上面"
+
+#: ui/dnattributeorderconfigwidget.cpp:130
+#, kde-format
+msgid "Move one up"
+msgstr "往上移一格"
+
+#: ui/dnattributeorderconfigwidget.cpp:131
+#, kde-format
+msgid "Remove from current attribute order"
+msgstr "從目前的屬性順序中移除"
+
+#: ui/dnattributeorderconfigwidget.cpp:132
+#, kde-format
+msgid "Add to current attribute order"
+msgstr "新增到目前的屬性順序"
+
+#: ui/dnattributeorderconfigwidget.cpp:133
+#, kde-format
+msgid "Move one down"
+msgstr "往下移一格"
+
+#: ui/dnattributeorderconfigwidget.cpp:134
+#, kde-format
+msgid "Move to bottom"
+msgstr "移到最下面"
+
+#: ui/keyapprovaldialog.cpp:87
+#, kde-kuit-format
+msgid "<placeholder>none</placeholder>"
+msgstr "<placeholder>none</placeholder>"
+
+#: ui/keyapprovaldialog.cpp:88
+#, kde-format
+msgid "Never Encrypt with This Key"
+msgstr "絕不用此金鑰加密"
+
+#: ui/keyapprovaldialog.cpp:89
+#, kde-format
+msgid "Always Encrypt with This Key"
+msgstr "永遠用此金鑰加密"
+
+#: ui/keyapprovaldialog.cpp:90
+#, kde-format
+msgid "Encrypt Whenever Encryption is Possible"
+msgstr "當可加密時加密"
+
+#: ui/keyapprovaldialog.cpp:91
+#, kde-format
+msgid "Always Ask"
+msgstr "一定先詢問"
+
+#: ui/keyapprovaldialog.cpp:92
+#, kde-format
+msgid "Ask Whenever Encryption is Possible"
+msgstr "當可加密時先詢問"
+
+#: ui/keyapprovaldialog.cpp:113
+#, kde-format
+msgid "Encryption Key Approval"
+msgstr "加密金鑰確認"
+
+#: ui/keyapprovaldialog.cpp:129
+#, kde-format
+msgid "The following keys will be used for encryption:"
+msgstr "以下的金鑰將用於加密:"
+
+#: ui/keyapprovaldialog.cpp:145
+#, kde-format
+msgid "Your keys:"
+msgstr "您的金鑰:"
+
+#: ui/keyapprovaldialog.cpp:157
+#, kde-format
+msgid "Recipient:"
+msgstr "收件人:"
+
+#: ui/keyapprovaldialog.cpp:162
+#, kde-format
+msgid "Encryption keys:"
+msgstr "加密金鑰:"
+
+#: ui/keyapprovaldialog.cpp:169
+#, kde-format
+msgid "Encryption preference:"
+msgstr "加密設定:"
+
+#: ui/keyrequester.cpp:118
+#, kde-format
+msgid "Clear"
+msgstr "清除"
+
+#: ui/keyrequester.cpp:121
+#, kde-format
+msgid "Change..."
+msgstr "變更..."
+
+#: ui/keyrequester.cpp:232 ui/keyselectiondialog.cpp:256
+#, kde-kuit-format
+msgid "<placeholder>unknown</placeholder>"
+msgstr "<placeholder>未知</placeholder>"
+
+#: ui/keyrequester.cpp:246 ui/keyselectiondialog.cpp:657
+#, kde-format
+msgid ""
+"<qt><p>An error occurred while fetching the keys from the backend:</p><p><b>"
+"%1</b></p></qt>"
+msgstr "<qt><p>從後端介面 <b>%1</b> 抓取金鑰時發生錯誤。</p></qt>"
+
+#: ui/keyrequester.cpp:251 ui/keyrequester.cpp:283 ui/keyrequester.cpp:306
+#: ui/keyselectiondialog.cpp:630 ui/keyselectiondialog.cpp:662
+#, kde-format
+msgid "Key Listing Failed"
+msgstr "列出金鑰失敗"
+
+#: ui/keyrequester.cpp:281
+#, kde-format
+msgid ""
+"The OpenPGP backend does not support listing keys. Check your installation."
+msgstr "OpenPGP 後端介面不支援列出金鑰。請檢查您的安裝。"
+
+#: ui/keyrequester.cpp:304
+#, kde-format
+msgid ""
+"The S/MIME backend does not support listing keys. Check your installation."
+msgstr "S/MIME 後端介面不支援列出金鑰。請檢查您的安裝。"
+
+#: ui/keyrequester.cpp:426
+#, kde-format
+msgid "OpenPGP Key Selection"
+msgstr "選擇 OpenPGP 金鑰"
+
+#: ui/keyrequester.cpp:427
+#, kde-format
+msgid "Please select an OpenPGP key to use."
+msgstr "請選擇要使用的 OpenPGP 金鑰。"
+
+#: ui/keyrequester.cpp:429
+#, kde-format
+msgid "S/MIME Key Selection"
+msgstr "選擇 S/MIME 金鑰"
+
+#: ui/keyrequester.cpp:430
+#, kde-format
+msgid "Please select an S/MIME key to use."
+msgstr "請選擇要使用的 S/MIME 金鑰。"
+
+#: ui/keyrequester.cpp:432
+#, kde-format
+msgid "Key Selection"
+msgstr "選擇金鑰"
+
+#: ui/keyrequester.cpp:433
+#, kde-format
+msgid "Please select an (OpenPGP or S/MIME) key to use."
+msgstr "請選擇要使用的 OpenPGP 或 S/MIME 金鑰。"
+
+#: ui/keyselectioncombo.cpp:195
+#, kde-format
+msgctxt "Name <email> (validity, type, created: date)"
+msgid "%1 (%2, %3, created: %4)"
+msgstr ""
+
+#: ui/keyselectioncombo.cpp:196
+#, kde-format
+msgctxt "Name <email>"
+msgid "%1 <%2>"
+msgstr ""
+
+#: ui/keyselectioncombo.cpp:198
+#, kde-format
+msgid "OpenPGP"
+msgstr "OpenPGP"
+
+#: ui/keyselectioncombo.cpp:347
+#, fuzzy, kde-format
+#| msgid "Fetching keys..."
+msgid "Loading keys ..."
+msgstr "抓取金鑰中..."
+
+#: ui/keyselectiondialog.cpp:98
+#, kde-format
+msgid "The key is not valid."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:106
+#, kde-format
+msgid "The key is expired."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:110
+#, kde-format
+msgid "The key is revoked."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:114
+#, kde-format
+msgid "The key is disabled."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:122
+#, fuzzy, kde-format
+#| msgid "The following keys will be used for encryption:"
+msgid "The key is not designated for encryption."
+msgstr "以下的金鑰將用於加密:"
+
+#: ui/keyselectiondialog.cpp:128
+#, kde-format
+msgid "The key is not designated for signing."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:134
+#, kde-format
+msgid "The key is not designated for certifying."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:140
+#, kde-format
+msgid "The key is not designated for authentication."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:148
+#, kde-format
+msgid "The key is not secret."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:163
+#, kde-format
+msgid "The key is not trusted enough."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:169
+#, kde-format
+msgid "The key can be used."
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:230
+#, kde-format
+msgid "Key ID"
+msgstr "金鑰 ID"
+
+#: ui/keyselectiondialog.cpp:231
+#, kde-format
+msgid "User ID"
+msgstr "使用者 ID"
+
+#: ui/keyselectiondialog.cpp:279
+#, kde-format
+msgid "never"
+msgstr "絕不"
+
+#: ui/keyselectiondialog.cpp:289 ui/keyselectiondialog.cpp:291
+#: ui/keyselectiondialog.cpp:300 ui/keyselectiondialog.cpp:302
+#, kde-format
+msgid "unknown"
+msgstr "未知"
+
+#: ui/keyselectiondialog.cpp:289
+#, kde-format
+msgid "OpenPGP key for <b>%1</b>"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:291
+#, kde-format
+msgid "S/MIME key for <b>%1</b>"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:298
+#, kde-format
+msgctxt "Key creation date"
+msgid "Created"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:299
+#, kde-format
+msgctxt "Key Expiration date"
+msgid "Expiry"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:300
+#, kde-format
+msgctxt "Key fingerprint"
+msgid "Fingerprint"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:302
+#, kde-format
+msgctxt "Key issuer"
+msgid "Issuer"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:304
+#, kde-format
+msgctxt "Key status"
+msgid "Status"
+msgstr ""
+
+#: ui/keyselectiondialog.cpp:456
+#, kde-format
+msgid "Search for &External Certificates"
+msgstr "搜尋外部憑證(&E)"
+
+#: ui/keyselectiondialog.cpp:470
+#, kde-format
+msgid "&Search for:"
+msgstr "搜尋(&S):"
+
+#: ui/keyselectiondialog.cpp:494
+#, kde-format
+msgid "&Remember choice"
+msgstr "記住選擇(&R)"
+
+#: ui/keyselectiondialog.cpp:497
+#, kde-format
+msgid ""
+"<qt><p>If you check this box your choice will be stored and you will not be "
+"asked again.</p></qt>"
+msgstr ""
+"<qt><p>如果勾選此選項,您的選擇會被儲存起來,並且不會再詢問您。</p></qt>"
+
+#: ui/keyselectiondialog.cpp:509
+#, kde-format
+msgid "&Reread Keys"
+msgstr "重新讀取金鑰(&R)"
+
+#: ui/keyselectiondialog.cpp:510
+#, kde-format
+msgid "&Start Certificate Manager"
+msgstr "啟動憑證管理員(&S)"
+
+#: ui/keyselectiondialog.cpp:628
+#, kde-format
+msgid "No backends found for listing keys. Check your installation."
+msgstr "找不到可列出金鑰的後端介面。請檢查您的安裝。"
+
+#: ui/keyselectiondialog.cpp:644
+#, kde-format
+msgid "Could not start certificate manager; please check your installation."
+msgstr "無法啟動憑證管理員。請檢查安裝是否完全!"
+
+#: ui/keyselectiondialog.cpp:646
+#, kde-format
+msgid "Certificate Manager Error"
+msgstr "憑證管理員錯誤"
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Checking selected keys..."
+msgstr "檢查所選擇的金鑰中..."
+
+#: ui/keyselectiondialog.cpp:700
+#, kde-format
+msgid "Fetching keys..."
+msgstr "抓取金鑰中..."
+
+#: ui/keyselectiondialog.cpp:731
+#, kde-format
+msgid ""
+"<qt>One backend returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgid_plural ""
+"<qt>%1 backends returned truncated output.<p>Not all available keys are "
+"shown</p></qt>"
+msgstr[0] ""
+"<qt>%1 個後端介面傳回的輸出被截斷了。<p>所列出的金鑰並非所有的金鑰。</p></qt>"
+
+#: ui/keyselectiondialog.cpp:736
+#, kde-format
+msgid "Key List Result"
+msgstr "列出金鑰結果"
+
+#: ui/keyselectiondialog.cpp:856
+#, kde-format
+msgid "Recheck Key"
+msgstr "重新檢查金鑰"
+
+#: ui/messagebox.cpp:71
+#, kde-format
+msgid "Your system does not have support for GnuPG Audit Logs"
+msgstr "您的系統不支援 GnuPG 稽核紀錄"
+
+#: ui/messagebox.cpp:72
+#, kde-format
+msgid "System Error"
+msgstr "系統錯誤"
+
+#: ui/messagebox.cpp:79
+#, kde-format
+msgid ""
+"An error occurred while trying to retrieve the GnuPG Audit Log:\n"
+"%1"
+msgstr ""
+"試著取得 GnuPG 稽核紀錄時發生錯誤:\n"
+"%1"
+
+#: ui/messagebox.cpp:81
+#, kde-format
+msgid "GnuPG Audit Log Error"
+msgstr "GnuPG 稽核紀錄錯誤"
+
+#: ui/messagebox.cpp:88
+#, kde-format
+msgid "No GnuPG Audit Log available for this operation."
+msgstr "沒有可用的 GnuPG 稽核紀錄。"
+
+#: ui/messagebox.cpp:89
+#, kde-format
+msgid "No GnuPG Audit Log"
+msgstr "沒有 GnuPG 稽核紀錄"
+
+#: ui/messagebox.cpp:109 ui/messagebox.cpp:115
+#, kde-format
+msgid "GnuPG Audit Log Viewer"
+msgstr "GnuPG 稽核紀錄檢視器"
+
+#: ui/messagebox.cpp:121
+#, kde-format
+msgid "Signing failed: %1"
+msgstr "簽署失敗:%1"
+
+#: ui/messagebox.cpp:122
+#, kde-format
+msgid "Signing successful"
+msgstr "簽署成功"
+
+#: ui/messagebox.cpp:133
+#, kde-format
+msgid "Encryption failed: %1"
+msgstr "加密失敗:%1"
+
+#: ui/messagebox.cpp:134
+#, kde-format
+msgid "Encryption successful"
+msgstr "加密成功"
+
+#: ui/messagebox.cpp:155
+#, kde-format
+msgid "Signing Result"
+msgstr "簽署結果"
+
+#: ui/messagebox.cpp:167
+#, kde-format
+msgid "Signing Error"
+msgstr "簽署錯誤"
+
+#: ui/messagebox.cpp:179 ui/messagebox.cpp:203
+#, kde-format
+msgid "Encryption Result"
+msgstr "加密結果"
+
+#: ui/messagebox.cpp:191 ui/messagebox.cpp:215
+#, kde-format
+msgid "Encryption Error"
+msgstr "加密錯誤"
+
+#: ui/messagebox.cpp:263
+#, kde-format
+msgid "&Show Audit Log"
+msgstr "顯示稽核紀錄(&S)"
+
+#: ui/progressdialog.cpp:91
+#, kde-format
+msgid "%1: %2"
+msgstr "%1:%2"
+
+#~ msgctxt "New X.509 Directory Server"
+#~ msgid "X.509"
+#~ msgstr "X.509"
+
+#~ msgctxt "New OpenPGP Directory Server"
+#~ msgid "OpenPGP"
+#~ msgstr "OpenPGP"
+
+#~ msgid "Scheme"
+#~ msgstr "機制"
+
+#~ msgid "X.509"
+#~ msgstr "X.509"
+
+#~ msgid ""
+#~ "Select the access scheme (scheme) that the directory service is available "
+#~ "through."
+#~ msgstr "選擇此目錄服務使用的存取機制(機制)"
+
+#~ msgid ""
+#~ "Check this column if this directory service is providing S/MIME (X.509) "
+#~ "certificates."
+#~ msgstr "如果此目錄服務提供 S/MIME(X.509)憑證的話請勾選此欄位。"
+
+#~ msgid ""
+#~ "Check this column if this directory service is providing OpenPGP "
+#~ "certificates."
+#~ msgstr "如果此目錄服務提供 OpenPGP 憑證的話請勾選此欄位。"
+
+#~ msgid "0 - None (no debugging at all)"
+#~ msgstr "0 - 無(不除錯)"
+
+#~ msgid "1 - Basic (some basic debug messages)"
+#~ msgstr "1 =基本(一些基本除錯訊息)"
+
+#~ msgid "2 - Advanced (more verbose debug messages)"
+#~ msgstr "2 - 進階(比較詳細的除錯訊息)"
+
+#~ msgid "3 - Expert (even more detailed messages)"
+#~ msgstr "3 - 專家(更多詳細除錯訊息)"
+
+#~ msgid "4 - Guru (all of the debug messages you can get)"
+#~ msgstr "4 - 大師(所有的除錯訊息)"
+
+#~ msgid "General"
+#~ msgstr "一般"
+
+#~ msgid "Chiasmus"
+#~ msgstr "Chiasmus"
+
+#~ msgid "Chiasmus command line tool"
+#~ msgstr "Chiasmus 命令列工具"
+
+#~ msgid "Unsupported protocol \"%1\""
+#~ msgstr "不支援的協定:%1"
+
+#~ msgid "File \"%1\" does not exist or is not executable."
+#~ msgstr "檔案 %1 不存在或無法執行。"
+
+#~ msgid "Output from chiasmus"
+#~ msgstr "Chiasmus 輸出"
+
+#~ msgid "Decryption failed: %1"
+#~ msgstr "解密失敗:%1"
+
+#~ msgid ""
+#~ "The following was received on stderr:\n"
+#~ "%1"
+#~ msgstr ""
+#~ "從標準錯誤(stderr)中接收到的輸出:\n"
+#~ "%1"
+
+#~ msgid "Failed to load %1: %2"
+#~ msgstr "載入 %1 時失敗:%2"
+
+#~ msgid "Library does not contain the symbol \"Chiasmus\"."
+#~ msgstr "函式庫中沒有 Chiasmus 符號。"
+
+#~ msgid "Scanning directory %1..."
+#~ msgstr "掃描目錄 %1 中..."
+
+#~ msgid "GpgME"
+#~ msgstr "GpgME"
+
+#~ msgid "GPGME was compiled without support for %1."
+#~ msgstr "GPGME 未將 %1 支援編入。"
+
+#~ msgid "Engine %1 is not installed properly."
+#~ msgstr "%1 未完整安裝。"
+
+#~ msgid "Engine %1 version %2 installed, but at least version %3 is required."
+#~ msgstr "目前安裝的 %1 版本為 %2,但是至少需要版本 %3。"
+
+#~ msgid "Unknown problem with engine for protocol %1."
+#~ msgstr "通訊協定 %1 遇到未知的問題。"
+
+#~ msgid "program terminated unexpectedly"
+#~ msgstr "程式無預警結束"
+
+#~ msgid "program not found or cannot be started"
+#~ msgstr "找不到程式,或無法執行程式"
+
+#~ msgid "<qt>Failed to execute gpgconf:<p>%1</p></qt>"
+#~ msgstr "<qt>執行 gpgconf 時失敗:<p>%1</p></qt>"
+
+#~ msgid ""
+#~ "Could not start gpgconf.\n"
+#~ "Check that gpgconf is in the PATH and that it can be started."
+#~ msgstr ""
+#~ "無法啟動 gpgconf\n"
+#~ "請檢查 gpgconf 是否在您的執行路徑設定中,並且可執行。"
+
+#~ msgid "Error from gpgconf while saving configuration: %1"
+#~ msgstr "gpgconf 儲存設定時錯誤:%1"
+
+#~ msgid "Generating DSA key..."
+#~ msgstr "產生 DSA 金鑰中..."
+
+#~ msgid "Generating ElGamal key..."
+#~ msgstr "產生 ElGamal 金鑰中..."
+
+#~ msgid "Searching for a large prime number..."
+#~ msgstr "搜尋大的質數中..."
+
+#~ msgid ""
+#~ "Waiting for new entropy from random number generator (you might want to "
+#~ "exercise the harddisks or move the mouse)..."
+#~ msgstr ""
+#~ "正等待從亂數產生器中產生新的熵數中(您可能需要讓硬碟讀寫一陣或動一動滑"
+#~ "鼠)..."
+
+#~ msgid "Please wait..."
+#~ msgstr "請稍候..."
+
+#~ msgid ""
+#~ "Starting gpg-agent (you should consider starting a global instance "
+#~ "instead)..."
+#~ msgstr "gpg-agent 啟動中(您應該考慮啟動全域的實體)..."
+
+#~ msgid "While scanning for %1 support in backend %2:"
+#~ msgstr "在後端介面 %2 掃描 %1 的支援中"
+
+#~ msgctxt "progress info: \"%1 of %2\""
+#~ msgid "%1/%2"
+#~ msgstr "%1/%2"
+
+#~ msgid ""
+#~ "OpenPGP key for %1\n"
+#~ "Created: %2\n"
+#~ "Expiry: %3\n"
+#~ "Fingerprint: %4"
+#~ msgstr ""
+#~ "%1 的 OpenPGP 金鑰\n"
+#~ "建立時間:%2\n"
+#~ "逾期時間:%3\n"
+#~ "指印:%4"
+
+#~ msgid ""
+#~ "S/MIME key for %1\n"
+#~ "Created: %2\n"
+#~ "Expiry: %3\n"
+#~ "Fingerprint: %4\n"
+#~ "Issuer: %5"
+#~ msgstr ""
+#~ "%1 的 S/MIME 金鑰\n"
+#~ "建立時間:%2\n"
+#~ "逾期時間:%3\n"
+#~ "指印:%4\n"
+#~ "產生者:%5"
+
+#~ msgid "Copy Audit Log to Clipboard"
+#~ msgstr "複製稽核紀錄到剪貼簿"
+
+#~ msgid "Add or Change Directory Service"
+#~ msgstr "新增或變更目錄服務"
+
+#~ msgid "&Server name:"
+#~ msgstr "伺服器名稱(&S):"
+
+#~ msgid "389"
+#~ msgstr "389"
+
+#~ msgid "&User name (optional):"
+#~ msgstr "使用者名稱(可不輸入)(&U):"
+
+#~ msgid "Pass&word (optional):"
+#~ msgstr "密碼(可不輸入)(&W):"
+
+#~ msgid "&OK"
+#~ msgstr "確定(&O)"
+
+#~ msgid "&Cancel"
+#~ msgstr "取消(&C)"
+
+#~ msgid "&Base DN:"
+#~ msgstr "基礎 DN(&B):"
+
+#~ msgid "&Port:"
+#~ msgstr "連接埠(&P):"
+
+#~ msgid "'%1' not found in filesystem"
+#~ msgstr "'%1' 在檔案系統中找不到"
+
+#~ msgctxt "NAME OF TRANSLATORS"
+#~ msgid "Your names"
+#~ msgstr "Frank Weng (a.k.a. Franklin)"
+
+#~ msgctxt "EMAIL OF TRANSLATORS"
+#~ msgid "Your emails"
+#~ msgstr "franklin@goodhorse.idv.tw"
+
+#~ msgid "'create-command' entry is empty/missing"
+#~ msgstr "'create-command' 項目不存在,或者是空的"
+
+#~ msgid "Cannot use both %f and | in verify-command"
+#~ msgstr "在 verify-command 中不能同時使用 %f 與 |"
+
+#~ msgid "Quoting error in 'verify-command' entry"
+#~ msgstr "'verify-command' 項目中引號錯誤"
+
+#~ msgid "'verify-command' too complex (would need shell)"
+#~ msgstr "'verify-command' 太複雜(需要用 shell)"
+
+#~ msgid "'verify-command' entry is empty/missing"
+#~ msgstr "'verify-command' 項目不存在,或者是空的"
+
+#~ msgid "'verify-command' not found in filesystem"
+#~ msgstr "'verify-command' 在檔案系統中找不到"
+
+#~ msgid "'verify-command' empty or not found"
+#~ msgstr "'verify-command' 是空的或找不到"
+
+#~ msgid "failed"
+#~ msgstr "失敗"
+
+#~ msgctxt ""
+#~ "Items in Kleo::BackendConfigWidget listview (1: protocol; 2: "
+#~ "implementation name)"
+#~ msgid "%1 (%2)"
+#~ msgstr "%1 (%2)"
+
+#~ msgid "Available Backends"
+#~ msgstr "可用的後端介面"
+
+#~ msgid "Confi&gure..."
+#~ msgstr "設定(&G)..."
+
+#~ msgid "Rescan"
+#~ msgstr "重新掃描"
+
+#~ msgid "The following problems where encountered during scanning:"
+#~ msgstr "掃描時遇到以下的問題:"
+
+#~ msgctxt "@title:window Results of the scanning"
+#~ msgid "Scan Results"
+#~ msgstr "掃描結果"
+
+#~ msgid "(Unknown Protocol)"
+#~ msgstr "(未知的協定)"
+
+#~ msgid "Error while initializing plugin \"%1\""
+#~ msgstr "初始化外掛程式 %1 時發生錯誤"
--- /dev/null
+
+# target_include_directories does not handle empty include paths
+include_directories(${GPGME_INCLUDES})
+
+add_definitions(-DTRANSLATION_DOMAIN=\"libkleopatra\")
+
+#add_definitions( -DQT_NO_CAST_FROM_ASCII )
+#add_definitions( -DQT_NO_CAST_TO_ASCII )
+
+kde_enable_exceptions()
+
+add_definitions( -DGPGMEPP_ERR_SOURCE_DEFAULT=13 ) # 13 is GPG_ERR_SOURCE_KLEO, even if gpg-error's too old to know about
+
+add_subdirectory( pics )
+if (BUILD_TESTING)
+ add_subdirectory( tests )
+endif()
+
+########### next target ###############
+set(libkleo_core_SRCS
+ kleo/checksumdefinition.cpp
+ kleo/defaultkeyfilter.cpp
+ kleo/defaultkeygenerationjob.cpp
+ kleo/dn.cpp
+ kleo/enum.cpp
+ kleo/exception.cpp
+ kleo/kconfigbasedkeyfilter.cpp
+ kleo/keyfiltermanager.cpp
+ models/keycache.cpp
+ models/keylistmodel.cpp
+ models/keylistsortfilterproxymodel.cpp
+ models/keyrearrangecolumnsproxymodel.cpp
+ models/modeltest.cpp
+ models/subkeylistmodel.cpp
+ models/useridlistmodel.cpp
+ utils/filesystemwatcher.cpp
+ utils/formatting.cpp
+ utils/classify.cpp
+ )
+ecm_qt_declare_logging_category(libkleo_core_SRCS HEADER libkleo_debug.h IDENTIFIER LIBKLEO_LOG CATEGORY_NAME org.kde.pim.libkleo)
+
+set(libkleo_ui_common_SRCS
+ ui/dnattributeorderconfigwidget.cpp
+ ui/kdhorizontalline.cpp
+ ui/filenamerequester.cpp
+ ui/messagebox.cpp
+ ui/cryptoconfigmodule.cpp
+ ui/cryptoconfigdialog.cpp
+ ui/directoryserviceswidget.cpp
+ ui/progressbar.cpp
+ ui/progressdialog.cpp
+ ui/auditlogviewer.cpp
+ )
+ecm_qt_declare_logging_category(libkleo_ui_common_SRCS HEADER kleo_ui_debug.h IDENTIFIER KLEO_UI_LOG CATEGORY_NAME org.kde.pim.kleo_ui)
+
+set(libkleo_ui_SRCS # make this a separate lib.
+ ui/keylistview.cpp
+ ui/keyselectiondialog.cpp
+ ui/keyrequester.cpp
+ ui/keyapprovaldialog.cpp
+ ui/keyselectioncombo.cpp
+ )
+
+ki18n_wrap_ui(libkleo_ui_common_SRCS
+ ui/directoryserviceswidget.ui
+)
+
+set(kleo_LIB_SRCS ${libkleo_core_SRCS} ${libkleo_ui_SRCS}
+ ${libkleo_ui_common_SRCS})
+
+set(kleo_LIB_LIBS PUBLIC QGpgme Gpgmepp PRIVATE Qt5::Widgets
+ KF5::I18n
+ KF5::Completion
+ KF5::ConfigCore
+ KF5::CoreAddons
+ KF5::WindowSystem
+ KF5::WidgetsAddons
+ KF5::ItemModels
+ KF5::Codecs)
+
+if (KF5PimTextEdit_FOUND)
+ add_definitions(-DHAVE_PIMTEXTEDIT)
+ set(kleo_LIB_LIBS ${kleo_LIB_LIBS} PRIVATE KF5::PimTextEdit)
+endif()
+
+add_library(KF5Libkleo ${kleo_LIB_SRCS})
+generate_export_header(KF5Libkleo BASE_NAME kleo)
+add_library(KF5::Libkleo ALIAS KF5Libkleo)
+if(WIN32)
+target_link_libraries(KF5Libkleo ${kleo_LIB_LIBS} ${GPGME_VANILLA_LIBRARIES} )
+else()
+target_link_libraries(KF5Libkleo ${kleo_LIB_LIBS} )
+endif()
+
+set_target_properties(KF5Libkleo PROPERTIES
+ VERSION ${LIBKLEO_VERSION_STRING}
+ SOVERSION ${LIBKLEO_SOVERSION}
+ EXPORT_NAME Libkleo
+)
+
+install(TARGETS
+ KF5Libkleo
+ EXPORT KF5LibkleoTargets ${KF5_INSTALL_TARGETS_DEFAULT_ARGS} ${LIBRARY_NAMELINK}
+)
+
+
+
+target_include_directories(KF5Libkleo PUBLIC "$<BUILD_INTERFACE:${libkleo_SOURCE_DIR}/src;${libkleo_BINARY_DIR}/src>")
+target_include_directories(KF5Libkleo INTERFACE "$<INSTALL_INTERFACE:${KDE_INSTALL_INCLUDEDIR_KF5}/Libkleo/;${KDE_INSTALL_INCLUDEDIR_KF5}/libkleo>")
+
+ecm_generate_headers(libkleo_CamelCase_HEADERS
+ HEADER_NAMES
+ ChecksumDefinition
+ DefaultKeyFilter
+ DefaultKeyGenerationJob
+ Dn
+ Enum
+ Exception
+ KConfigBasedKeyFilter
+ KeyFilter
+ KeyFilterManager
+ OidMap
+ Predicates
+ Stl_Util
+ REQUIRED_HEADERS libkleo_HEADERS
+ PREFIX Libkleo
+ RELATIVE kleo
+)
+
+ecm_generate_headers(libkleo_CamelCase_models_HEADERS
+ HEADER_NAMES
+ KeyCache
+ KeyListModel
+ KeyListModelInterface
+ KeyListSortFilterProxyModel
+ KeyRearrangeColumnsProxyModel
+ SubkeyListModel
+ UserIDListModel
+ REQUIRED_HEADERS libkleo_models_HEADERS
+ PREFIX Libkleo
+ RELATIVE models
+)
+
+ecm_generate_headers(libkleo_CamelCase_utils_HEADERS
+ HEADER_NAMES
+ Classify
+ FileSystemWatcher
+ Formatting
+ REQUIRED_HEADERS libkleo_utils_HEADERS
+ PREFIX Libkleo
+ RELATIVE utils
+)
+
+ecm_generate_headers(libkleo_CamelCase_ui_HEADERS
+ HEADER_NAMES
+ CryptoConfigDialog
+ CryptoConfigModule
+ DNAttributeOrderConfigWidget
+ DirectoryServicesWidget
+ FileNameRequester
+ KDHorizontalLine
+ KeyApprovalDialog
+ KeyRequester
+ KeySelectionCombo
+ KeySelectionDialog
+ MessageBox
+ ProgressDialog
+ REQUIRED_HEADERS libkleo_ui_HEADERS
+ PREFIX Libkleo
+ RELATIVE ui
+)
+
+ecm_generate_pri_file(BASE_NAME Libkleo
+ LIB_NAME KF5Libkleo
+ DEPS "QGpgme" FILENAME_VAR PRI_FILENAME INCLUDE_INSTALL_DIR ${KDE_INSTALL_INCLUDEDIR_KF5}/Libkleo
+)
+
+
+install(FILES
+ ${libkleo_CamelCase_HEADERS}
+ ${libkleo_CamelCase_models_HEADERS}
+ ${libkleo_CamelCase_ui_HEADERS}
+ ${libkleo_CamelCase_utils_HEADERS}
+ DESTINATION ${KDE_INSTALL_INCLUDEDIR_KF5}/Libkleo
+ COMPONENT Devel
+)
+
+install(FILES
+ ${CMAKE_CURRENT_BINARY_DIR}/kleo_export.h
+ ${libkleo_HEADERS}
+ ${libkleo_models_HEADERS}
+ ${libkleo_ui_HEADERS}
+ ${libkleo_utils_HEADERS}
+ DESTINATION ${KDE_INSTALL_INCLUDEDIR_KF5}/libkleo
+ COMPONENT Devel
+)
+install(FILES
+ ${PRI_FILENAME}
+ DESTINATION ${ECM_MKSPECS_INSTALL_DIR})
+
+
+if ( WIN32 )
+install ( FILES libkleopatrarc-win32.desktop DESTINATION ${KDE_INSTALL_CONFDIR} RENAME libkleopatrarc )
+else ()
+install ( FILES libkleopatrarc.desktop DESTINATION ${KDE_INSTALL_CONFDIR} RENAME libkleopatrarc )
+endif ()
--- /dev/null
+#! /bin/sh
+$EXTRACTRC */*.ui >> rc.cpp || exit 11
+$XGETTEXT *.cpp kleo/*.cpp kleo/*.h ui/*.cpp ui/*.h -o $podir/libkleopatra.pot
--- /dev/null
+/* -*- mode: c++; c-basic-offset:4 -*-
+ checksumdefinition.cpp
+
+ This file is part of libkleopatra, the KDE keymanagement library
+ Copyright (c) 2010 Klarälvdalens Datakonsult AB
+
+ Libkleopatra is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ Libkleopatra 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#include "checksumdefinition.h"
+
+#include "exception.h"
+
+#include "libkleo_debug.h"
+
+#include <KConfigGroup>
+#include <KLocalizedString>
+#include <KConfig>
+#include <KShell>
+
+#include <QString>
+#include <QStringList>
+#include <QDebug>
+#include <QFileInfo>
+#include <QProcess>
+#include <QByteArray>
+#include <QMutex>
+#include <QCoreApplication>
+#include <QRegularExpression>
+
+#include <KSharedConfig>
+#include <QStandardPaths>
+
+#ifdef stdin
+# undef stdin // pah..
+#endif
+
+using namespace Kleo;
+
+static QMutex installPathMutex;
+Q_GLOBAL_STATIC(QString, _installPath)
+QString ChecksumDefinition::installPath()
+{
+ const QMutexLocker locker(&installPathMutex);
+ QString *const ip = _installPath();
+ if (ip->isEmpty()) {
+ if (QCoreApplication::instance()) {
+ *ip = QCoreApplication::applicationDirPath();
+ } else {
+ qCWarning(LIBKLEO_LOG) << "checksumdefinition.cpp: installPath() called before QCoreApplication was constructed";
+ }
+ }
+ return *ip;
+}
+void ChecksumDefinition::setInstallPath(const QString &ip)
+{
+ const QMutexLocker locker(&installPathMutex);
+ *_installPath() = ip;
+}
+
+// Checksum Definition #N groups
+static const QLatin1String ID_ENTRY("id");
+static const QLatin1String NAME_ENTRY("Name");
+static const QLatin1String CREATE_COMMAND_ENTRY("create-command");
+static const QLatin1String VERIFY_COMMAND_ENTRY("verify-command");
+static const QLatin1String FILE_PATTERNS_ENTRY("file-patterns");
+static const QLatin1String OUTPUT_FILE_ENTRY("output-file");
+static const QLatin1String FILE_PLACEHOLDER("%f");
+static const QLatin1String INSTALLPATH_PLACEHOLDER("%I");
+static const QLatin1String NULL_SEPARATED_STDIN_INDICATOR("0|");
+static const QLatin1Char NEWLINE_SEPARATED_STDIN_INDICATOR('|');
+
+// ChecksumOperations group
+static const QLatin1String CHECKSUM_DEFINITION_ID_ENTRY("checksum-definition-id");
+
+namespace
+{
+
+class ChecksumDefinitionError : public Kleo::Exception
+{
+ const QString m_id;
+public:
+ ChecksumDefinitionError(const QString &id, const QString &message)
+ : Kleo::Exception(GPG_ERR_INV_PARAMETER, i18n("Error in checksum definition %1: %2", id, message), MessageOnly),
+ m_id(id)
+ {
+
+ }
+ ~ChecksumDefinitionError() throw() {}
+
+ const QString &checksumDefinitionId() const
+ {
+ return m_id;
+ }
+};
+
+}
+
+static QString try_extensions(const QString &path)
+{
+ static const char exts[][4] = {
+ "", "exe", "bat", "bin", "cmd",
+ };
+ static const size_t numExts = sizeof exts / sizeof * exts;
+ for (unsigned int i = 0; i < numExts; ++i) {
+ const QFileInfo fi(path + QLatin1Char('.') + QLatin1String(exts[i]));
+ if (fi.exists()) {
+ return fi.filePath();
+ }
+ }
+ return QString();
+}
+
+static void parse_command(QString cmdline, const QString &id, const QString &whichCommand,
+ QString *command, QStringList *prefix, QStringList *suffix, ChecksumDefinition::ArgumentPassingMethod *method)
+{
+ Q_ASSERT(prefix);
+ Q_ASSERT(suffix);
+ Q_ASSERT(method);
+
+ KShell::Errors errors;
+ QStringList l;
+
+ if (cmdline.startsWith(NULL_SEPARATED_STDIN_INDICATOR)) {
+ *method = ChecksumDefinition::NullSeparatedInputFile;
+ cmdline.remove(0, 2);
+ } else if (cmdline.startsWith(NEWLINE_SEPARATED_STDIN_INDICATOR)) {
+ *method = ChecksumDefinition::NewlineSeparatedInputFile;
+ cmdline.remove(0, 1);
+ } else {
+ *method = ChecksumDefinition::CommandLine;
+ }
+ if (*method != ChecksumDefinition::CommandLine && cmdline.contains(FILE_PLACEHOLDER)) {
+ throw ChecksumDefinitionError(id, i18n("Cannot use both %f and | in '%1'", whichCommand));
+ }
+ cmdline.replace(FILE_PLACEHOLDER, QLatin1String("__files_go_here__"))
+ .replace(INSTALLPATH_PLACEHOLDER, QStringLiteral("__path_goes_here__"));
+ l = KShell::splitArgs(cmdline, KShell::AbortOnMeta | KShell::TildeExpand, &errors);
+ l = l.replaceInStrings(QStringLiteral("__files_go_here__"), FILE_PLACEHOLDER);
+ if (l.indexOf(QRegExp(QLatin1String(".*__path_goes_here__.*"))) >= 0) {
+ l = l.replaceInStrings(QStringLiteral("__path_goes_here__"), ChecksumDefinition::installPath());
+ }
+ if (errors == KShell::BadQuoting) {
+ throw ChecksumDefinitionError(id, i18n("Quoting error in '%1' entry", whichCommand));
+ }
+ if (errors == KShell::FoundMeta) {
+ throw ChecksumDefinitionError(id, i18n("'%1' too complex (would need shell)", whichCommand));
+ }
+ qCDebug(LIBKLEO_LOG) << "ChecksumDefinition[" << id << ']' << l;
+ if (l.empty()) {
+ throw ChecksumDefinitionError(id, i18n("'%1' entry is empty/missing", whichCommand));
+ }
+ const QFileInfo fi1(l.front());
+ if (fi1.isAbsolute()) {
+ *command = try_extensions(l.front());
+ } else {
+ *command = QStandardPaths::findExecutable(fi1.fileName());
+ }
+ if (command->isEmpty()) {
+ throw ChecksumDefinitionError(id, i18n("'%1' empty or not found", whichCommand));
+ }
+ const int idx1 = l.indexOf(FILE_PLACEHOLDER);
+ if (idx1 < 0) {
+ // none -> append
+ *prefix = l.mid(1);
+ } else {
+ *prefix = l.mid(1, idx1 - 1);
+ *suffix = l.mid(idx1 + 1);
+ }
+ switch (*method) {
+ case ChecksumDefinition::CommandLine:
+ qCDebug(LIBKLEO_LOG) << "ChecksumDefinition[" << id << ']' << *command << *prefix << FILE_PLACEHOLDER << *suffix;
+ break;
+ case ChecksumDefinition::NewlineSeparatedInputFile:
+ qCDebug(LIBKLEO_LOG) << "ChecksumDefinition[" << id << ']' << "find | " << *command << *prefix;
+ break;
+ case ChecksumDefinition::NullSeparatedInputFile:
+ qCDebug(LIBKLEO_LOG) << "ChecksumDefinition[" << id << ']' << "find -print0 | " << *command << *prefix;
+ break;
+ case ChecksumDefinition::NumArgumentPassingMethods:
+ Q_ASSERT(!"Should not happen");
+ break;
+ }
+}
+
+namespace
+{
+
+class KConfigBasedChecksumDefinition : public ChecksumDefinition
+{
+public:
+ explicit KConfigBasedChecksumDefinition(const KConfigGroup &group)
+ : ChecksumDefinition(group.readEntryUntranslated(ID_ENTRY),
+ group.readEntry(NAME_ENTRY),
+ group.readEntry(OUTPUT_FILE_ENTRY),
+ group.readEntry(FILE_PATTERNS_ENTRY, QStringList()))
+ {
+ if (id().isEmpty()) {
+ throw ChecksumDefinitionError(group.name(), i18n("'id' entry is empty/missing"));
+ }
+ if (outputFileName().isEmpty()) {
+ throw ChecksumDefinitionError(id(), i18n("'output-file' entry is empty/missing"));
+ }
+ if (patterns().empty()) {
+ throw ChecksumDefinitionError(id(), i18n("'file-patterns' entry is empty/missing"));
+ }
+
+ // create-command
+ ArgumentPassingMethod method;
+ parse_command(group.readEntry(CREATE_COMMAND_ENTRY), id(), CREATE_COMMAND_ENTRY,
+ &m_createCommand, &m_createPrefixArguments, &m_createPostfixArguments, &method);
+ setCreateCommandArgumentPassingMethod(method);
+
+ // verify-command
+ parse_command(group.readEntry(VERIFY_COMMAND_ENTRY), id(), VERIFY_COMMAND_ENTRY,
+ &m_verifyCommand, &m_verifyPrefixArguments, &m_verifyPostfixArguments, &method);
+ setVerifyCommandArgumentPassingMethod(method);
+ }
+
+private:
+ QString doGetCreateCommand() const override
+ {
+ return m_createCommand;
+ }
+ QStringList doGetCreateArguments(const QStringList &files) const override
+ {
+ return m_createPrefixArguments + files + m_createPostfixArguments;
+ }
+ QString doGetVerifyCommand() const override
+ {
+ return m_verifyCommand;
+ }
+ QStringList doGetVerifyArguments(const QStringList &files) const override
+ {
+ return m_verifyPrefixArguments + files + m_verifyPostfixArguments;
+ }
+
+private:
+ QString m_createCommand, m_verifyCommand;
+ QStringList m_createPrefixArguments, m_createPostfixArguments;
+ QStringList m_verifyPrefixArguments, m_verifyPostfixArguments;
+};
+
+}
+
+ChecksumDefinition::ChecksumDefinition(const QString &id, const QString &label, const QString &outputFileName, const QStringList &patterns)
+ : m_id(id),
+ m_label(label.isEmpty() ? id : label),
+ m_outputFileName(outputFileName),
+ m_patterns(patterns),
+ m_createMethod(CommandLine),
+ m_verifyMethod(CommandLine)
+{
+
+}
+
+ChecksumDefinition::~ChecksumDefinition() {}
+
+QString ChecksumDefinition::createCommand() const
+{
+ return doGetCreateCommand();
+}
+
+QString ChecksumDefinition::verifyCommand() const
+{
+ return doGetVerifyCommand();
+}
+
+#if 0
+QStringList ChecksumDefinition::createCommandArguments(const QStringList &files) const
+{
+ return doGetCreateArguments(files);
+}
+
+QStringList ChecksumDefinition::verifyCommandArguments(const QStringList &files) const
+{
+ return doGetVerifyArguments(files);
+}
+#endif
+
+static QByteArray make_input(const QStringList &files, char sep)
+{
+ QByteArray result;
+ for (const QString &file : files) {
+ result += QFile::encodeName(file);
+ result += sep;
+ }
+ return result;
+}
+
+static bool start_command(QProcess *p, const char *functionName,
+ const QString &cmd, const QStringList &args,
+ const QStringList &files, ChecksumDefinition::ArgumentPassingMethod method)
+{
+ if (!p) {
+ qCWarning(LIBKLEO_LOG) << functionName << ": process == NULL";
+ return false;
+ }
+
+ switch (method) {
+
+ case ChecksumDefinition::NumArgumentPassingMethods:
+ Q_ASSERT(!"Should not happen");
+
+ case ChecksumDefinition::CommandLine:
+ qCDebug(LIBKLEO_LOG) << "Starting: " << cmd << " " << args.join(QLatin1Char(' '));
+ p->start(cmd, args, QIODevice::ReadOnly);
+ return true;
+
+ case ChecksumDefinition::NewlineSeparatedInputFile:
+ case ChecksumDefinition::NullSeparatedInputFile:
+ qCDebug(LIBKLEO_LOG) << "Starting: " << cmd << " " << args.join(QLatin1Char(' '));
+ p->start(cmd, args, QIODevice::ReadWrite);
+ if (!p->waitForStarted()) {
+ return false;
+ }
+ const char sep =
+ method == ChecksumDefinition::NewlineSeparatedInputFile ? '\n' :
+ /* else */ '\0';
+ const QByteArray stdin = make_input(files, sep);
+ if (p->write(stdin) != stdin.size()) {
+ return false;
+ }
+ p->closeWriteChannel();
+ return true;
+ }
+
+ return false; // make compiler happy
+
+}
+
+bool ChecksumDefinition::startCreateCommand(QProcess *p, const QStringList &files) const
+{
+ return start_command(p, Q_FUNC_INFO,
+ doGetCreateCommand(),
+ m_createMethod == CommandLine ? doGetCreateArguments(files) :
+ /* else */ doGetCreateArguments(QStringList()),
+ files, m_createMethod);
+}
+
+bool ChecksumDefinition::startVerifyCommand(QProcess *p, const QStringList &files) const
+{
+ return start_command(p, Q_FUNC_INFO,
+ doGetVerifyCommand(),
+ m_verifyMethod == CommandLine ? doGetVerifyArguments(files) :
+ /* else */ doGetVerifyArguments(QStringList()),
+ files, m_verifyMethod);
+}
+
+// static
+std::vector< std::shared_ptr<ChecksumDefinition> > ChecksumDefinition::getChecksumDefinitions()
+{
+ QStringList errors;
+ return getChecksumDefinitions(errors);
+}
+
+// static
+std::vector< std::shared_ptr<ChecksumDefinition> > ChecksumDefinition::getChecksumDefinitions(QStringList &errors)
+{
+ std::vector< std::shared_ptr<ChecksumDefinition> > result;
+ KSharedConfigPtr config = KSharedConfig::openConfig(QStringLiteral("libkleopatrarc"));
+ const QStringList groups = config->groupList().filter(QRegularExpression(QStringLiteral("^Checksum Definition #")));
+ result.reserve(groups.size());
+ for (const QString &group : groups)
+ try {
+ const std::shared_ptr<ChecksumDefinition> ad(new KConfigBasedChecksumDefinition(KConfigGroup(config, group)));
+ result.push_back(ad);
+ } catch (const std::exception &e) {
+ qDebug() << e.what();
+ errors.push_back(QString::fromLocal8Bit(e.what()));
+ } catch (...) {
+ errors.push_back(i18n("Caught unknown exception in group %1", group));
+ }
+ return result;
+}
+
+// static
+std::shared_ptr<ChecksumDefinition> ChecksumDefinition::getDefaultChecksumDefinition(const std::vector< std::shared_ptr<ChecksumDefinition> > &checksumDefinitions)
+{
+ const KConfigGroup group(KSharedConfig::openConfig(), "ChecksumOperations");
+ const QString checksumDefinitionId = group.readEntry(CHECKSUM_DEFINITION_ID_ENTRY);
+ if (!checksumDefinitionId.isEmpty())
+ for (const std::shared_ptr<ChecksumDefinition> &cd : checksumDefinitions)
+ if (cd && cd->id() == checksumDefinitionId) {
+ return cd;
+ }
+ if (!checksumDefinitions.empty()) {
+ return checksumDefinitions.front();
+ } else {
+ return std::shared_ptr<ChecksumDefinition>();
+ }
+}
+
+// static
+void ChecksumDefinition::setDefaultChecksumDefinition(const std::shared_ptr<ChecksumDefinition> &checksumDefinition)
+{
+ if (!checksumDefinition) {
+ return;
+ }
+ KConfigGroup group(KSharedConfig::openConfig(), "ChecksumOperations");
+ group.writeEntry(CHECKSUM_DEFINITION_ID_ENTRY, checksumDefinition->id());
+ group.sync();
+}
--- /dev/null
+/* -*- mode: c++; c-basic-offset:4 -*-
+ checksumdefinition.h
+
+ This file is part of libkleopatra, the KDE keymanagement library
+ Copyright (c) 2010 Klarälvdalens Datakonsult AB
+
+ Libkleopatra is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ Libkleopatra 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#ifndef __KLEO_CHECKSUMDEFINITION_H__
+#define __KLEO_CHECKSUMDEFINITION_H__
+
+#include "kleo_export.h"
+
+#include <QString>
+#include <QStringList>
+
+#include <memory>
+#include <vector>
+
+class QProcess;
+
+namespace Kleo
+{
+
+class KLEO_EXPORT ChecksumDefinition
+{
+protected:
+ ChecksumDefinition(const QString &id, const QString &label, const QString &outputFileName, const QStringList &extensions);
+public:
+ virtual ~ChecksumDefinition();
+
+ enum ArgumentPassingMethod {
+ CommandLine,
+ NewlineSeparatedInputFile,
+ NullSeparatedInputFile,
+
+ NumArgumentPassingMethods
+ };
+
+ QString id() const
+ {
+ return m_id;
+ }
+ QString label() const
+ {
+ return m_label;
+ }
+
+ const QStringList &patterns() const
+ {
+ return m_patterns;
+ }
+ QString outputFileName() const
+ {
+ return m_outputFileName;
+ }
+
+ QString createCommand() const;
+ ArgumentPassingMethod createCommandArgumentPassingMethod() const
+ {
+ return m_createMethod;
+ }
+
+ QString verifyCommand() const;
+ ArgumentPassingMethod verifyCommandArgumentPassingMethod() const
+ {
+ return m_verifyMethod;
+ }
+
+ bool startCreateCommand(QProcess *process, const QStringList &files) const;
+ bool startVerifyCommand(QProcess *process, const QStringList &files) const;
+
+ static QString installPath();
+ static void setInstallPath(const QString &ip);
+
+ static std::vector< std::shared_ptr<ChecksumDefinition> > getChecksumDefinitions();
+ static std::vector< std::shared_ptr<ChecksumDefinition> > getChecksumDefinitions(QStringList &errors);
+
+ static std::shared_ptr<ChecksumDefinition> getDefaultChecksumDefinition(const std::vector< std::shared_ptr<ChecksumDefinition> > &available);
+ static void setDefaultChecksumDefinition(const std::shared_ptr<ChecksumDefinition> &checksumDefinition);
+
+protected:
+ void setCreateCommandArgumentPassingMethod(ArgumentPassingMethod method)
+ {
+ m_createMethod = method;
+ }
+ void setVerifyCommandArgumentPassingMethod(ArgumentPassingMethod method)
+ {
+ m_verifyMethod = method;
+ }
+
+private:
+ virtual QString doGetCreateCommand() const = 0;
+ virtual QString doGetVerifyCommand() const = 0;
+ virtual QStringList doGetCreateArguments(const QStringList &files) const = 0;
+ virtual QStringList doGetVerifyArguments(const QStringList &files) const = 0;
+private:
+ const QString m_id;
+ const QString m_label;
+ const QString m_outputFileName;
+ const QStringList m_patterns;
+ ArgumentPassingMethod m_createMethod, m_verifyMethod;
+};
+
+}
+
+#endif /* __KLEO_CHECKSUMDEFINITION_H__ */
+
--- /dev/null
+/*
+ defaultkeyfilter.cpp
+
+ This file is part of libkleopatra, the KDE keymanagement library
+ Copyright (c) 2004 Klarälvdalens Datakonsult AB
+ 2016 by Bundesamt für Sicherheit in der Informationstechnik
+ Software engineering by Intevation GmbH
+
+ Libkleopatra is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ Libkleopatra 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#include "defaultkeyfilter.h"
+
+#include <functional>
+#include <memory>
+
+using namespace GpgME;
+using namespace Kleo;
+
+static bool is_card_key(const Key &key)
+{
+ const std::vector<Subkey> sks = key.subkeys();
+ return std::find_if(sks.begin(), sks.end(),
+ std::mem_fn(&Subkey::isCardKey)) != sks.end();
+}
+
+class DefaultKeyFilter::Private
+{
+
+public:
+ Private() :
+ mMatchContexts(AnyMatchContext),
+ mSpecificity(0),
+ mItalic(false),
+ mBold(false),
+ mStrikeOut(false),
+ mUseFullFont(false),
+ mRevoked(DoesNotMatter),
+ mExpired(DoesNotMatter),
+ mDisabled(DoesNotMatter),
+ mRoot(DoesNotMatter),
+ mCanEncrypt(DoesNotMatter),
+ mCanSign(DoesNotMatter),
+ mCanCertify(DoesNotMatter),
+ mCanAuthenticate(DoesNotMatter),
+ mQualified(DoesNotMatter),
+ mCardKey(DoesNotMatter),
+ mHasSecret(DoesNotMatter),
+ mIsOpenPGP(DoesNotMatter),
+ mWasValidated(DoesNotMatter),
+ mOwnerTrust(LevelDoesNotMatter),
+ mOwnerTrustReferenceLevel(Key::Unknown),
+ mValidity(LevelDoesNotMatter),
+ mValidityReferenceLevel(UserID::Unknown)
+ {}
+ QColor mFgColor, mBgColor;
+ QString mName;
+ QString mIcon;
+ QString mId;
+ MatchContexts mMatchContexts;
+ unsigned int mSpecificity;
+ bool mItalic;
+ bool mBold;
+ bool mStrikeOut;
+ bool mUseFullFont;
+ QFont mFont;
+
+ TriState mRevoked;
+ TriState mExpired;
+ TriState mDisabled;
+ TriState mRoot;
+ TriState mCanEncrypt;
+ TriState mCanSign;
+ TriState mCanCertify;
+ TriState mCanAuthenticate;
+ TriState mQualified;
+ TriState mCardKey;
+ TriState mHasSecret;
+ TriState mIsOpenPGP;
+ TriState mWasValidated;
+
+ LevelState mOwnerTrust;
+ GpgME::Key::OwnerTrust mOwnerTrustReferenceLevel;
+ LevelState mValidity;
+ GpgME::UserID::Validity mValidityReferenceLevel;
+
+};
+
+DefaultKeyFilter::DefaultKeyFilter()
+ : KeyFilter(),
+ d_ptr(new Private())
+{
+}
+
+DefaultKeyFilter::~DefaultKeyFilter() {}
+
+bool DefaultKeyFilter::matches(const Key &key, MatchContexts contexts) const
+{
+ if (!(d_ptr->mMatchContexts & contexts)) {
+ return false;
+ }
+#ifdef MATCH
+#undef MATCH
+#endif
+#define MATCH(member,method) \
+ if ( member != DoesNotMatter && key.method() != bool( member == Set ) ) \
+ return false
+#define IS_MATCH(what) MATCH( d_ptr->m##what, is##what )
+#define CAN_MATCH(what) MATCH( d_ptr->mCan##what, can##what )
+ IS_MATCH(Revoked);
+ IS_MATCH(Expired);
+ IS_MATCH(Disabled);
+ IS_MATCH(Root);
+ CAN_MATCH(Encrypt);
+ CAN_MATCH(Sign);
+ CAN_MATCH(Certify);
+ CAN_MATCH(Authenticate);
+ IS_MATCH(Qualified);
+ if (d_ptr->mCardKey != DoesNotMatter)
+ if ((d_ptr->mCardKey == Set && !is_card_key(key)) ||
+ (d_ptr->mCardKey == NotSet && is_card_key(key))) {
+ return false;
+ }
+ MATCH(d_ptr->mHasSecret, hasSecret);
+#undef MATCH
+ if (d_ptr->mIsOpenPGP != DoesNotMatter &&
+ bool(key.protocol() == GpgME::OpenPGP) != bool(d_ptr->mIsOpenPGP == Set)) {
+ return false;
+ }
+ if (d_ptr->mWasValidated != DoesNotMatter &&
+ bool(key.keyListMode() & GpgME::Validate) != bool(d_ptr->mWasValidated == Set)) {
+ return false;
+ }
+ switch (d_ptr->mOwnerTrust) {
+ default:
+ case LevelDoesNotMatter:
+ break;
+ case Is:
+ if (key.ownerTrust() != d_ptr->mOwnerTrustReferenceLevel) {
+ return false;
+ }
+ break;
+ case IsNot:
+ if (key.ownerTrust() == d_ptr->mOwnerTrustReferenceLevel) {
+ return false;
+ }
+ break;
+ case IsAtLeast:
+ if ((int)key.ownerTrust() < (int)d_ptr->mOwnerTrustReferenceLevel) {
+ return false;
+ }
+ break;
+ case IsAtMost:
+ if ((int)key.ownerTrust() > (int)d_ptr->mOwnerTrustReferenceLevel) {
+ return false;
+ }
+ break;
+ }
+ const UserID uid = key.userID(0);
+ switch (d_ptr->mValidity) {
+ default:
+ case LevelDoesNotMatter:
+ break;
+ case Is:
+ if (uid.validity() != d_ptr->mValidityReferenceLevel) {
+ return false;
+ }
+ break;
+ case IsNot:
+ if (uid.validity() == d_ptr->mValidityReferenceLevel) {
+ return false;
+ }
+ break;
+ case IsAtLeast:
+ if ((int)uid.validity() < (int)d_ptr->mValidityReferenceLevel) {
+ return false;
+ }
+ break;
+ case IsAtMost:
+ if ((int)uid.validity() > (int)d_ptr->mValidityReferenceLevel) {
+ return false;
+ }
+ break;
+ }
+ return true;
+}
+
+KeyFilter::FontDescription DefaultKeyFilter::fontDescription() const
+{
+ if (d_ptr->mUseFullFont) {
+ return FontDescription::create(font(), bold(), italic(), strikeOut());
+ } else {
+ return FontDescription::create(bold(), italic(), strikeOut());
+ }
+}
+
+void DefaultKeyFilter::setFgColor(const QColor &value) const
+{
+ d_ptr->mFgColor = value;
+}
+
+void DefaultKeyFilter::setBgColor(const QColor &value) const
+{
+ d_ptr->mBgColor = value;
+}
+
+void DefaultKeyFilter::setName(const QString &value) const
+{
+ d_ptr->mName = value;
+}
+
+void DefaultKeyFilter::setIcon(const QString &value) const
+{
+ d_ptr->mIcon = value;
+}
+
+void DefaultKeyFilter::setId(const QString &value) const
+{
+ d_ptr->mId = value;
+}
+
+void DefaultKeyFilter::setMatchContexts(MatchContexts value) const
+{
+ d_ptr->mMatchContexts = value;
+}
+
+void DefaultKeyFilter::setSpecificity(unsigned int value) const
+{
+ d_ptr->mSpecificity = value;
+}
+
+void DefaultKeyFilter::setItalic(bool value) const
+{
+ d_ptr->mItalic = value;
+}
+
+void DefaultKeyFilter::setBold(bool value) const
+{
+ d_ptr->mBold = value;
+}
+
+void DefaultKeyFilter::setStrikeOut(bool value) const
+{
+ d_ptr->mStrikeOut = value;
+}
+
+void DefaultKeyFilter::setUseFullFont(bool value) const
+{
+ d_ptr->mUseFullFont = value;
+}
+
+void DefaultKeyFilter::setFont(const QFont &value) const
+{
+ d_ptr->mFont = value;
+}
+
+void DefaultKeyFilter::setRevoked(DefaultKeyFilter::TriState value) const
+{
+ d_ptr->mRevoked = value;
+}
+
+void DefaultKeyFilter::setExpired(DefaultKeyFilter::TriState value) const
+{
+ d_ptr->mExpired = value;
+}
+
+void DefaultKeyFilter::setDisabled(DefaultKeyFilter::TriState value) const
+{
+ d_ptr->mDisabled = value;
+}
+
+void DefaultKeyFilter::setRoot(DefaultKeyFilter::TriState value) const
+{
+ d_ptr->mRoot = value;
+}
+
+void DefaultKeyFilter::setCanEncrypt(DefaultKeyFilter::TriState value) const
+{
+ d_ptr->mCanEncrypt = value;
+}
+
+void DefaultKeyFilter::setCanSign(DefaultKeyFilter::TriState value) const
+{
+ d_ptr->mCanSign = value;
+}
+
+void DefaultKeyFilter::setCanCertify(DefaultKeyFilter::TriState value) const
+{
+ d_ptr->mCanCertify = value;
+}
+
+void DefaultKeyFilter::setCanAuthenticate(DefaultKeyFilter::TriState value) const
+{
+ d_ptr->mCanAuthenticate = value;
+}
+
+void DefaultKeyFilter::setQualified(DefaultKeyFilter::TriState value) const
+{
+ d_ptr->mQualified = value;
+}
+
+void DefaultKeyFilter::setCardKey(DefaultKeyFilter::TriState value) const
+{
+ d_ptr->mCardKey = value;
+}
+
+void DefaultKeyFilter::setHasSecret(DefaultKeyFilter::TriState value) const
+{
+ d_ptr->mHasSecret = value;
+}
+
+void DefaultKeyFilter::setIsOpenPGP(DefaultKeyFilter::TriState value) const
+{
+ d_ptr->mIsOpenPGP = value;
+}
+
+void DefaultKeyFilter::setWasValidated(DefaultKeyFilter::TriState value) const
+{
+ d_ptr->mWasValidated = value;
+}
+
+void DefaultKeyFilter::setOwnerTrust(DefaultKeyFilter::LevelState value) const
+{
+ d_ptr->mOwnerTrust = value;
+}
+
+void DefaultKeyFilter::setOwnerTrustReferenceLevel(GpgME::Key::OwnerTrust value) const
+{
+ d_ptr->mOwnerTrustReferenceLevel = value;
+}
+
+void DefaultKeyFilter::setValidity(DefaultKeyFilter::LevelState value) const
+{
+ d_ptr->mValidity = value;
+}
+
+void DefaultKeyFilter::setValidityReferenceLevel(GpgME::UserID::Validity value) const
+{
+ d_ptr->mValidityReferenceLevel = value;
+}
+
+QColor DefaultKeyFilter::fgColor() const
+{
+ return d_ptr->mFgColor;
+}
+
+QColor DefaultKeyFilter::bgColor() const
+{
+ return d_ptr->mBgColor;
+}
+
+QString DefaultKeyFilter::name() const
+{
+ return d_ptr->mName;
+}
+
+QString DefaultKeyFilter::icon() const
+{
+ return d_ptr->mIcon;
+}
+
+QString DefaultKeyFilter::id() const
+{
+ return d_ptr->mId;
+}
+
+QFont DefaultKeyFilter::font() const
+{
+ return d_ptr->mFont;
+}
+
+KeyFilter::MatchContexts DefaultKeyFilter::availableMatchContexts() const
+{
+ return d_ptr->mMatchContexts;
+}
+
+unsigned int DefaultKeyFilter::specificity() const
+{
+ return d_ptr->mSpecificity;
+}
+
+bool DefaultKeyFilter::italic() const
+{
+ return d_ptr->mItalic;
+}
+
+bool DefaultKeyFilter::bold() const
+{
+ return d_ptr->mBold;
+}
+
+bool DefaultKeyFilter::strikeOut() const
+{
+ return d_ptr->mStrikeOut;
+}
+
+bool DefaultKeyFilter::useFullFont() const
+{
+ return d_ptr->mUseFullFont;
+}
+
+DefaultKeyFilter::TriState DefaultKeyFilter::revoked() const
+{
+ return d_ptr->mRevoked;
+}
+
+DefaultKeyFilter::TriState DefaultKeyFilter::expired() const
+{
+ return d_ptr->mExpired;
+}
+
+DefaultKeyFilter::TriState DefaultKeyFilter::disabled() const
+{
+ return d_ptr->mDisabled;
+}
+
+DefaultKeyFilter::TriState DefaultKeyFilter::root() const
+{
+ return d_ptr->mRoot;
+}
+
+DefaultKeyFilter::TriState DefaultKeyFilter::canEncrypt() const
+{
+ return d_ptr->mCanEncrypt;
+}
+
+DefaultKeyFilter::TriState DefaultKeyFilter::canSign() const
+{
+ return d_ptr->mCanSign;
+}
+
+DefaultKeyFilter::TriState DefaultKeyFilter::canCertify() const
+{
+ return d_ptr->mCanCertify;
+}
+
+DefaultKeyFilter::TriState DefaultKeyFilter::canAuthenticate() const
+{
+ return d_ptr->mCanAuthenticate;
+}
+
+DefaultKeyFilter::TriState DefaultKeyFilter::qualified() const
+{
+ return d_ptr->mQualified;
+}
+
+DefaultKeyFilter::TriState DefaultKeyFilter::cardKey() const
+{
+ return d_ptr->mCardKey;
+}
+
+DefaultKeyFilter::TriState DefaultKeyFilter::hasSecret() const
+{
+ return d_ptr->mHasSecret;
+}
+
+DefaultKeyFilter::TriState DefaultKeyFilter::isOpenPGP() const
+{
+ return d_ptr->mIsOpenPGP;
+}
+
+DefaultKeyFilter::TriState DefaultKeyFilter::wasValidated() const
+{
+ return d_ptr->mWasValidated;
+}
+
+DefaultKeyFilter::LevelState DefaultKeyFilter::ownerTrust() const
+{
+ return d_ptr->mOwnerTrust;
+}
+
+GpgME::Key::OwnerTrust DefaultKeyFilter::ownerTrustReferenceLevel() const
+{
+ return d_ptr->mOwnerTrustReferenceLevel;
+}
+
+DefaultKeyFilter::LevelState DefaultKeyFilter::validity() const
+{
+ return d_ptr->mValidity;
+}
+
+GpgME::UserID::Validity DefaultKeyFilter::validityReferenceLevel() const
+{
+ return d_ptr->mValidityReferenceLevel;
+}
--- /dev/null
+/*
+ defaultkeyfilter.h
+
+ This file is part of libkleopatra, the KDE keymanagement library
+ Copyright (c) 2004 Klarälvdalens Datakonsult AB
+ 2016 by Bundesamt für Sicherheit in der Informationstechnik
+ Software engineering by Intevation GmbH
+
+ Libkleopatra is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ Libkleopatra 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#ifndef __KLEO_DEFAULTKEYFILTER_H__
+#define __KLEO_DEFAULTKEYFILTER_H__
+
+#include "keyfilter.h"
+
+#include "kleo_export.h"
+
+#include <QFont>
+#include <QString>
+#include <QColor>
+#include <QScopedPointer>
+
+#include <gpgme++/key.h>
+
+namespace Kleo
+{
+
+/** Default implemation of key filter class. */
+class KLEO_EXPORT DefaultKeyFilter : public KeyFilter
+{
+public:
+ DefaultKeyFilter();
+ ~DefaultKeyFilter();
+
+ /** Used for bool checks */
+ enum TriState {
+ DoesNotMatter = 0,
+ Set = 1,
+ NotSet = 2
+ };
+
+ /** Used for level checks */
+ enum LevelState {
+ LevelDoesNotMatter = 0,
+ Is = 1,
+ IsNot = 2,
+ IsAtLeast = 3,
+ IsAtMost = 4
+ };
+
+ bool matches(const GpgME::Key &key, MatchContexts ctx) const override;
+
+ unsigned int specificity() const override;
+ void setSpecificity(unsigned int value) const;
+ QString id() const override;
+ void setId(const QString &value) const;
+ KeyFilter::MatchContexts availableMatchContexts() const override;
+ void setMatchContexts(KeyFilter::MatchContexts value) const;
+
+ QColor fgColor() const override;
+ void setFgColor(const QColor &value) const;
+
+ QColor bgColor() const override;
+ void setBgColor(const QColor &value) const;
+
+ FontDescription fontDescription() const override;
+ QString name() const override;
+ void setName(const QString &value) const;
+ QString icon() const override;
+ void setIcon(const QString &value) const;
+ QFont font() const;
+ void setFont(const QFont &value) const;
+
+ TriState revoked() const;
+ TriState expired() const;
+ TriState disabled() const;
+ TriState root() const;
+ TriState canEncrypt() const;
+ TriState canSign() const;
+ TriState canCertify() const;
+ TriState canAuthenticate() const;
+ TriState qualified() const;
+ TriState cardKey() const;
+ TriState hasSecret() const;
+ TriState isOpenPGP() const;
+ TriState wasValidated() const;
+
+ LevelState ownerTrust() const;
+ GpgME::Key::OwnerTrust ownerTrustReferenceLevel() const;
+
+ LevelState validity() const;
+ GpgME::UserID::Validity validityReferenceLevel() const;
+ bool italic() const;
+ bool bold() const;
+ bool strikeOut() const;
+ bool useFullFont() const;
+
+ void setRevoked(const TriState) const;
+ void setExpired(const TriState) const;
+ void setDisabled(const TriState) const;
+ void setRoot(const TriState) const;
+ void setCanEncrypt(const TriState) const;
+ void setCanSign(const TriState) const;
+ void setCanCertify(const TriState) const;
+ void setCanAuthenticate(const TriState) const;
+ void setQualified(const TriState) const;
+ void setCardKey(const TriState) const;
+ void setHasSecret(const TriState) const;
+ void setIsOpenPGP(const TriState) const;
+ void setWasValidated(const TriState) const;
+
+ void setOwnerTrust(const LevelState) const;
+ void setOwnerTrustReferenceLevel(const GpgME::Key::OwnerTrust) const;
+
+ void setValidity(const LevelState) const;
+ void setValidityReferenceLevel(const GpgME::UserID::Validity) const;
+
+ void setItalic(bool value) const;
+ void setBold(bool value) const;
+ void setStrikeOut(bool value) const;
+ void setUseFullFont(bool value) const;
+
+
+private:
+ class Private;
+ const QScopedPointer<Private> d_ptr;
+};
+
+} // namespace Kleo
+#endif
--- /dev/null
+/* This file is part of Kleopatra, the KDE keymanager
+ Copyright (c) 2016 Klarälvdalens Datakonsult AB
+
+ Kleopatra is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Kleopatra 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+*/
+
+#include "defaultkeygenerationjob.h"
+
+#include <qgpgme/protocol.h>
+#include <qgpgme/keygenerationjob.h>
+
+#include <QPointer>
+#include <QEvent>
+
+using namespace Kleo;
+
+namespace Kleo {
+
+class DefaultKeyGenerationJob::Private
+{
+public:
+ Private()
+ {}
+
+ ~Private()
+ {
+ if (job) {
+ job->deleteLater();
+ }
+ }
+
+ QString passphrase;
+ QPointer<QGpgME::KeyGenerationJob> job;
+};
+}
+
+
+DefaultKeyGenerationJob::DefaultKeyGenerationJob(QObject* parent)
+ : Job(parent)
+ , d(new DefaultKeyGenerationJob::Private())
+{
+}
+
+DefaultKeyGenerationJob::~DefaultKeyGenerationJob()
+{
+ delete d;
+}
+
+QString DefaultKeyGenerationJob::auditLogAsHtml() const
+{
+ return d->job ? d->job->auditLogAsHtml() : QString();
+}
+
+GpgME::Error DefaultKeyGenerationJob::auditLogError() const
+{
+ return d->job ? d->job->auditLogError() : GpgME::Error();
+}
+
+void DefaultKeyGenerationJob::slotCancel()
+{
+ if (d->job) {
+ d->job->slotCancel();
+ }
+}
+
+void DefaultKeyGenerationJob::setPassphrase(const QString &passphrase)
+{
+ // null QString = ask for passphrase
+ // empty QString = empty passphrase
+ // non-empty QString = passphrase
+ d->passphrase = passphrase.isNull() ? QLatin1String("") : passphrase;
+}
+
+GpgME::Error DefaultKeyGenerationJob::start(const QString &email, const QString &name)
+{
+ const QString passphrase = d->passphrase.isNull() ? QStringLiteral("%ask-passphrase") :
+ d->passphrase.isEmpty() ? QStringLiteral("%no-protection") :
+ QStringLiteral("passphrase: %1").arg(d->passphrase);
+
+ const QString args = QStringLiteral("<GnupgKeyParms format=\"internal\">\n"
+ "key-type: RSA\n"
+ "key-length: 2048\n"
+ "key-usage: sign\n"
+ "subkey-type: RSA\n"
+ "subkey-length: 2048\n"
+ "subkey-usage: encrypt\n"
+ "%1\n"
+ "name-email: %2\n"
+ "name-real: %3\n"
+ "</GnupgKeyParms>").arg(passphrase, email, name);
+
+ d->job = QGpgME::openpgp()->keyGenerationJob();
+ d->job->installEventFilter(this);
+ connect(d->job.data(), &QGpgME::KeyGenerationJob::result, this, &DefaultKeyGenerationJob::result);
+ connect(d->job.data(), &QGpgME::KeyGenerationJob::done, this, &DefaultKeyGenerationJob::done);
+ connect(d->job.data(), &QGpgME::KeyGenerationJob::done, this, &QObject::deleteLater);
+ return d->job->start(args);
+}
+
+bool DefaultKeyGenerationJob::eventFilter(QObject *watched, QEvent *event)
+{
+ // Intercept the KeyGenerationJob's deferred delete event. We want the job
+ // to live at least as long as we do so we can delegate calls to it. We will
+ // delete the job manually afterwards.
+ if (watched == d->job && event->type() == QEvent::DeferredDelete) {
+ return true;
+ }
+
+ return Job::eventFilter(watched, event);
+}
--- /dev/null
+/* This file is part of Kleopatra, the KDE keymanager
+ Copyright (c) 2016 Klarälvdalens Datakonsult AB
+
+ Kleopatra is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Kleopatra 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+*/
+
+#ifndef LIBKLEO_DEFAULTKEYGENERATION_H
+#define LIBKLEO_DEFAULTKEYGENERATION_H
+
+#include <qgpgme/job.h>
+
+#include <kleo_export.h>
+
+namespace GpgME {
+class KeyGenerationResult;
+}
+
+namespace Kleo {
+
+/**
+ * Generates a PGP RSA/2048 bit key pair for given name and email address.
+ *
+ * @since 5.4
+ */
+class KLEO_EXPORT DefaultKeyGenerationJob : public QGpgME::Job
+{
+ Q_OBJECT
+public:
+ explicit DefaultKeyGenerationJob(QObject *parent = nullptr);
+ ~DefaultKeyGenerationJob();
+
+ /**
+ * Set key passphrase
+ *
+ * Use this method to specify custom passphrase, including an empty
+ * one. If no passphrase (not even empty) is specified, gpg me will
+ * automatically prompt for passphrase using Pinentry dialog.
+ */
+ void setPassphrase(const QString &passphrase);
+
+ GpgME::Error start(const QString &email, const QString &name);
+
+ QString auditLogAsHtml() const override;
+ GpgME::Error auditLogError() const override;
+
+
+public Q_SLOTS:
+ void slotCancel() override;
+
+Q_SIGNALS:
+ void result(const GpgME::KeyGenerationResult &result, const QByteArray &pubkeyData,
+ const QString &auditLogAsHtml, const GpgME::Error &auditLogError);
+
+protected:
+ bool eventFilter(QObject *watched, QEvent *event) override;
+
+private:
+ class Private;
+ Private * const d;
+};
+
+}
+
+#endif
--- /dev/null
+/*
+ dn.cpp
+
+ This file is part of libkleopatra, the KDE keymanagement library
+ Copyright (c) 2004 Klarälvdalens Datakonsult AB
+
+ DN parsing:
+ Copyright (c) 2002 g10 Code GmbH
+ Copyright (c) 2004 Klarälvdalens Datakonsult AB
+
+ Libkleopatra is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ Libkleopatra 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#include "dn.h"
+
+#include "oidmap.h"
+
+#include "ui/dnattributeorderconfigwidget.h"
+
+#include <kconfig.h>
+#include <KLocalizedString>
+
+#include <QStringList>
+
+#include <iostream>
+#include <iterator>
+#include <algorithm>
+#include <map>
+
+#include <string.h>
+#include <ctype.h>
+#include <stdlib.h>
+#include <kconfiggroup.h>
+#include <KSharedConfig>
+
+class Kleo::DN::Private
+{
+public:
+ Private() : mRefCount(0) {}
+ Private(const Private &other)
+ : attributes(other.attributes),
+ reorderedAttributes(other.reorderedAttributes),
+ mRefCount(0)
+ {
+
+ }
+
+ int ref()
+ {
+ return ++mRefCount;
+ }
+
+ int unref()
+ {
+ if (--mRefCount <= 0) {
+ delete this;
+ return 0;
+ } else {
+ return mRefCount;
+ }
+ }
+
+ int refCount() const
+ {
+ return mRefCount;
+ }
+
+ DN::Attribute::List attributes;
+ DN::Attribute::List reorderedAttributes;
+private:
+ int mRefCount;
+};
+
+namespace
+{
+struct DnPair {
+ char *key;
+ char *value;
+};
+}
+
+// copied from CryptPlug and adapted to work on DN::Attribute::List:
+
+#define digitp(p) (*(p) >= '0' && *(p) <= '9')
+#define hexdigitp(a) (digitp (a) \
+ || (*(a) >= 'A' && *(a) <= 'F') \
+ || (*(a) >= 'a' && *(a) <= 'f'))
+#define xtoi_1(p) (*(p) <= '9'? (*(p)- '0'): \
+ *(p) <= 'F'? (*(p)-'A'+10):(*(p)-'a'+10))
+#define xtoi_2(p) ((xtoi_1(p) * 16) + xtoi_1((p)+1))
+
+static char *
+trim_trailing_spaces(char *string)
+{
+ char *p, *mark;
+
+ for (mark = nullptr, p = string; *p; p++) {
+ if (isspace(*p)) {
+ if (!mark) {
+ mark = p;
+ }
+ } else {
+ mark = nullptr;
+ }
+ }
+ if (mark) {
+ *mark = '\0';
+ }
+
+ return string;
+}
+
+/* Parse a DN and return an array-ized one. This is not a validating
+ parser and it does not support any old-stylish syntax; gpgme is
+ expected to return only rfc2253 compatible strings. */
+static const unsigned char *
+parse_dn_part(DnPair *array, const unsigned char *string)
+{
+ const unsigned char *s, *s1;
+ size_t n;
+ char *p;
+
+ /* parse attributeType */
+ for (s = string + 1; *s && *s != '='; s++)
+ ;
+ if (!*s) {
+ return nullptr; /* error */
+ }
+ n = s - string;
+ if (!n) {
+ return nullptr; /* empty key */
+ }
+ p = (char *)malloc(n + 1);
+
+ memcpy(p, string, n);
+ p[n] = 0;
+ trim_trailing_spaces((char *)p);
+ // map OIDs to their names:
+ for (unsigned int i = 0; i < numOidMaps; ++i)
+ if (!strcasecmp((char *)p, oidmap[i].oid)) {
+ free(p);
+ p = strdup(oidmap[i].name);
+ break;
+ }
+ array->key = p;
+ string = s + 1;
+
+ if (*string == '#') {
+ /* hexstring */
+ string++;
+ for (s = string; hexdigitp(s); s++) {
+ s++;
+ }
+ n = s - string;
+ if (!n || (n & 1)) {
+ return nullptr; /* empty or odd number of digits */
+ }
+ n /= 2;
+ array->value = p = (char *)malloc(n + 1);
+
+ for (s1 = string; n; s1 += 2, n--) {
+ *p++ = xtoi_2(s1);
+ }
+ *p = 0;
+ } else {
+ /* regular v3 quoted string */
+ for (n = 0, s = string; *s; s++) {
+ if (*s == '\\') {
+ /* pair */
+ s++;
+ if (*s == ',' || *s == '=' || *s == '+'
+ || *s == '<' || *s == '>' || *s == '#' || *s == ';'
+ || *s == '\\' || *s == '\"' || *s == ' ') {
+ n++;
+ } else if (hexdigitp(s) && hexdigitp(s + 1)) {
+ s++;
+ n++;
+ } else {
+ return nullptr; /* invalid escape sequence */
+ }
+ } else if (*s == '\"') {
+ return nullptr; /* invalid encoding */
+ } else if (*s == ',' || *s == '=' || *s == '+'
+ || *s == '<' || *s == '>' || *s == '#' || *s == ';') {
+ break;
+ } else {
+ n++;
+ }
+ }
+
+ array->value = p = (char *)malloc(n + 1);
+
+ for (s = string; n; s++, n--) {
+ if (*s == '\\') {
+ s++;
+ if (hexdigitp(s)) {
+ *p++ = xtoi_2(s);
+ s++;
+ } else {
+ *p++ = *s;
+ }
+ } else {
+ *p++ = *s;
+ }
+ }
+ *p = 0;
+ }
+ return s;
+}
+
+/* Parse a DN and return an array-ized one. This is not a validating
+ parser and it does not support any old-stylish syntax; gpgme is
+ expected to return only rfc2253 compatible strings. */
+static Kleo::DN::Attribute::List
+parse_dn(const unsigned char *string)
+{
+ if (!string) {
+ return QVector<Kleo::DN::Attribute>();
+ }
+
+ QVector<Kleo::DN::Attribute> result;
+ while (*string) {
+ while (*string == ' ') {
+ string++;
+ }
+ if (!*string) {
+ break; /* ready */
+ }
+
+ DnPair pair = { nullptr, nullptr };
+ string = parse_dn_part(&pair, string);
+ if (!string) {
+ goto failure;
+ }
+ if (pair.key && pair.value)
+ result.push_back(Kleo::DN::Attribute(QString::fromUtf8(pair.key),
+ QString::fromUtf8(pair.value)));
+ free(pair.key);
+ free(pair.value);
+
+ while (*string == ' ') {
+ string++;
+ }
+ if (*string && *string != ',' && *string != ';' && *string != '+') {
+ goto failure; /* invalid delimiter */
+ }
+ if (*string) {
+ string++;
+ }
+ }
+ return result;
+
+failure:
+ return QVector<Kleo::DN::Attribute>();
+}
+
+static QVector<Kleo::DN::Attribute>
+parse_dn(const QString &dn)
+{
+ return parse_dn((const unsigned char *)dn.toUtf8().data());
+}
+
+static QString dn_escape(const QString &s)
+{
+ QString result;
+ for (unsigned int i = 0, end = s.length(); i != end; ++i) {
+ const QChar ch = s[i];
+ switch (ch.unicode()) {
+ case ',':
+ case '+':
+ case '"':
+ case '\\':
+ case '<':
+ case '>':
+ case ';':
+ result += QLatin1Char('\\');
+ // fall through
+#if QT_VERSION >= QT_VERSION_CHECK(5,8,0)
+ Q_FALLTHROUGH();
+#endif
+ default:
+ result += ch;
+ }
+ }
+ return result;
+}
+
+static QString
+serialise(const QVector<Kleo::DN::Attribute> &dn, const QString &sep)
+{
+ QStringList result;
+ for (QVector<Kleo::DN::Attribute>::const_iterator it = dn.begin(); it != dn.end(); ++it)
+ if (!(*it).name().isEmpty() && !(*it).value().isEmpty()) {
+ result.push_back((*it).name().trimmed() + QLatin1Char('=') + dn_escape((*it).value().trimmed()));
+ }
+ return result.join(sep);
+}
+
+static Kleo::DN::Attribute::List
+reorder_dn(const Kleo::DN::Attribute::List &dn)
+{
+ const QStringList &attrOrder = Kleo::DNAttributeMapper::instance()->attributeOrder();
+
+ Kleo::DN::Attribute::List unknownEntries;
+ Kleo::DN::Attribute::List result;
+ unknownEntries.reserve(dn.size());
+ result.reserve(dn.size());
+
+ // find all unknown entries in their order of appearance
+ for (Kleo::DN::const_iterator it = dn.begin(); it != dn.end(); ++it)
+ if (!attrOrder.contains((*it).name())) {
+ unknownEntries.push_back(*it);
+ }
+
+ // process the known attrs in the desired order
+ for (QStringList::const_iterator oit = attrOrder.begin(); oit != attrOrder.end(); ++oit)
+ if (*oit == QLatin1String("_X_")) {
+ // insert the unknown attrs
+ std::copy(unknownEntries.begin(), unknownEntries.end(),
+ std::back_inserter(result));
+ unknownEntries.clear(); // don't produce dup's
+ } else {
+ for (Kleo::DN::const_iterator dnit = dn.begin(); dnit != dn.end(); ++dnit)
+ if ((*dnit).name() == *oit) {
+ result.push_back(*dnit);
+ }
+ }
+
+ return result;
+}
+
+//
+//
+// class DN
+//
+//
+
+Kleo::DN::DN()
+{
+ d = new Private();
+ d->ref();
+}
+
+Kleo::DN::DN(const QString &dn)
+{
+ d = new Private();
+ d->ref();
+ d->attributes = parse_dn(dn);
+}
+
+Kleo::DN::DN(const char *utf8DN)
+{
+ d = new Private();
+ d->ref();
+ if (utf8DN) {
+ d->attributes = parse_dn((const unsigned char *)utf8DN);
+ }
+}
+
+Kleo::DN::DN(const DN &other)
+ : d(other.d)
+{
+ if (d) {
+ d->ref();
+ }
+}
+
+Kleo::DN::~DN()
+{
+ if (d) {
+ d->unref();
+ }
+}
+
+const Kleo::DN &Kleo::DN::operator=(const DN &that)
+{
+ if (this->d == that.d) {
+ return *this;
+ }
+
+ if (that.d) {
+ that.d->ref();
+ }
+ if (this->d) {
+ this->d->unref();
+ }
+
+ this->d = that.d;
+
+ return *this;
+}
+
+QString Kleo::DN::prettyDN() const
+{
+ if (!d) {
+ return QString();
+ }
+ if (d->reorderedAttributes.empty()) {
+ d->reorderedAttributes = reorder_dn(d->attributes);
+ }
+ return serialise(d->reorderedAttributes, QStringLiteral(","));
+}
+
+QString Kleo::DN::dn() const
+{
+ return d ? serialise(d->attributes, QStringLiteral(",")) : QString();
+}
+
+QString Kleo::DN::dn(const QString &sep) const
+{
+ return d ? serialise(d->attributes, sep) : QString();
+}
+
+// static
+QString Kleo::DN::escape(const QString &value)
+{
+ return dn_escape(value);
+}
+
+void Kleo::DN::detach()
+{
+ if (!d) {
+ d = new Kleo::DN::Private();
+ d->ref();
+ } else if (d->refCount() > 1) {
+ Kleo::DN::Private *d_save = d;
+ d = new Kleo::DN::Private(*d);
+ d->ref();
+ d_save->unref();
+ }
+}
+
+void Kleo::DN::append(const Attribute &attr)
+{
+ detach();
+ d->attributes.push_back(attr);
+ d->reorderedAttributes.clear();
+}
+
+QString Kleo::DN::operator[](const QString &attr) const
+{
+ if (!d) {
+ return QString();
+ }
+ const QString attrUpper = attr.toUpper();
+ for (QVector<Attribute>::const_iterator it = d->attributes.constBegin();
+ it != d->attributes.constEnd(); ++it)
+ if ((*it).name() == attrUpper) {
+ return (*it).value();
+ }
+ return QString();
+}
+
+static QVector<Kleo::DN::Attribute> empty;
+
+Kleo::DN::const_iterator Kleo::DN::begin() const
+{
+ return d ? d->attributes.constBegin() : empty.constBegin();
+}
+
+Kleo::DN::const_iterator Kleo::DN::end() const
+{
+ return d ? d->attributes.constEnd() : empty.constEnd();
+}
+
+/////////////////////
+
+namespace
+{
+struct ltstr {
+ bool operator()(const char *s1, const char *s2) const
+ {
+ return qstrcmp(s1, s2) < 0;
+ }
+};
+}
+
+static const char *const defaultOrder[] = {
+ "CN", "L", "_X_", "OU", "O", "C"
+};
+
+static std::pair<const char *, const char *> const attributeLabels[] = {
+#define MAKE_PAIR(x,y) std::pair<const char*,const char*>( x, y )
+ MAKE_PAIR("CN", I18N_NOOP("Common name")),
+ MAKE_PAIR("SN", I18N_NOOP("Surname")),
+ MAKE_PAIR("GN", I18N_NOOP("Given name")),
+ MAKE_PAIR("L", I18N_NOOP("Location")),
+ MAKE_PAIR("T", I18N_NOOP("Title")),
+ MAKE_PAIR("OU", I18N_NOOP("Organizational unit")),
+ MAKE_PAIR("O", I18N_NOOP("Organization")),
+ MAKE_PAIR("PC", I18N_NOOP("Postal code")),
+ MAKE_PAIR("C", I18N_NOOP("Country code")),
+ MAKE_PAIR("SP", I18N_NOOP("State or province")),
+ MAKE_PAIR("DC", I18N_NOOP("Domain component")),
+ MAKE_PAIR("BC", I18N_NOOP("Business category")),
+ MAKE_PAIR("EMAIL", I18N_NOOP("Email address")),
+ MAKE_PAIR("MAIL", I18N_NOOP("Mail address")),
+ MAKE_PAIR("MOBILE", I18N_NOOP("Mobile phone number")),
+ MAKE_PAIR("TEL", I18N_NOOP("Telephone number")),
+ MAKE_PAIR("FAX", I18N_NOOP("Fax number")),
+ MAKE_PAIR("STREET", I18N_NOOP("Street address")),
+ MAKE_PAIR("UID", I18N_NOOP("Unique ID"))
+#undef MAKE_PAIR
+};
+static const unsigned int numAttributeLabels = sizeof attributeLabels / sizeof * attributeLabels;
+
+class Kleo::DNAttributeMapper::Private
+{
+public:
+ Private();
+ std::map<const char *, const char *, ltstr> map;
+ QStringList attributeOrder;
+};
+
+Kleo::DNAttributeMapper::Private::Private()
+ : map(attributeLabels, attributeLabels + numAttributeLabels) {}
+
+Kleo::DNAttributeMapper::DNAttributeMapper()
+{
+ d = new Private();
+ const KConfigGroup config(KSharedConfig::openConfig(), "DN");
+ d->attributeOrder = config.readEntry("AttributeOrder", QStringList());
+ if (d->attributeOrder.empty())
+ std::copy(defaultOrder, defaultOrder + sizeof defaultOrder / sizeof * defaultOrder,
+ std::back_inserter(d->attributeOrder));
+ mSelf = this;
+}
+
+Kleo::DNAttributeMapper::~DNAttributeMapper()
+{
+ mSelf = nullptr;
+ delete d; d = nullptr;
+}
+
+Kleo::DNAttributeMapper *Kleo::DNAttributeMapper::mSelf = nullptr;
+
+const Kleo::DNAttributeMapper *Kleo::DNAttributeMapper::instance()
+{
+ if (!mSelf) {
+ (void)new DNAttributeMapper();
+ }
+ return mSelf;
+}
+
+QString Kleo::DNAttributeMapper::name2label(const QString &s) const
+{
+ const std::map<const char *, const char *, ltstr>::const_iterator it
+ = d->map.find(s.trimmed().toUpper().toLatin1().constData());
+ if (it == d->map.end()) {
+ return QString();
+ }
+ return i18n(it->second);
+}
+
+QStringList Kleo::DNAttributeMapper::names() const
+{
+ QStringList result;
+ for (std::map<const char *, const char *, ltstr>::const_iterator it = d->map.begin(); it != d->map.end(); ++it) {
+ result.push_back(QLatin1String(it->first));
+ }
+ return result;
+}
+
+const QStringList &Kleo::DNAttributeMapper::attributeOrder() const
+{
+ return d->attributeOrder;
+}
+
+void Kleo::DNAttributeMapper::setAttributeOrder(const QStringList &order)
+{
+ d->attributeOrder = order;
+ if (order.empty())
+ std::copy(defaultOrder, defaultOrder + sizeof defaultOrder / sizeof * defaultOrder,
+ std::back_inserter(d->attributeOrder));
+ KConfigGroup config(KSharedConfig::openConfig(), "DN");
+ config.writeEntry("AttributeOrder", order);
+}
+
+Kleo::DNAttributeOrderConfigWidget *Kleo::DNAttributeMapper::configWidget(QWidget *parent) const
+{
+ return new DNAttributeOrderConfigWidget(mSelf, parent);
+}
--- /dev/null
+/*
+ dn.h
+
+ This file is part of libkleopatra, the KDE keymanagement library
+ Copyright (c) 2004 Klarälvdalens Datakonsult AB
+
+ Libkleopatra is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ Libkleopatra 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#ifndef __KLEO_DN_H__
+#define __KLEO_DN_H__
+
+#include "kleo_export.h"
+
+#include <QString>
+#include <QVector>
+
+class QStringList;
+class QWidget;
+
+namespace Kleo
+{
+class DNAttributeOrderConfigWidget;
+}
+
+namespace Kleo
+{
+
+/**
+ @short DN Attribute mapper
+*/
+class KLEO_EXPORT DNAttributeMapper
+{
+ DNAttributeMapper();
+ ~DNAttributeMapper();
+public:
+ static const DNAttributeMapper *instance();
+
+ QString name2label(const QString &s) const;
+ QStringList names() const;
+
+ const QStringList &attributeOrder() const;
+
+ void setAttributeOrder(const QStringList &order);
+
+ DNAttributeOrderConfigWidget *configWidget(QWidget *parent = nullptr) const;
+
+private:
+ class Private;
+ Private *d;
+ static DNAttributeMapper *mSelf;
+};
+
+/**
+ @short DN parser and reorderer
+*/
+class KLEO_EXPORT DN
+{
+public:
+ class Attribute;
+ typedef QVector<Attribute> AttributeList;
+ typedef AttributeList::const_iterator const_iterator;
+
+ DN();
+ explicit DN(const QString &dn);
+ explicit DN(const char *utf8DN);
+ DN(const DN &other);
+ ~DN();
+
+ const DN &operator=(const DN &other);
+
+ /** @return the value in rfc-2253-escaped form */
+ static QString escape(const QString &value);
+
+ /** @return the DN in a reordered form, according to the settings in
+ the [DN] group of the application's config file */
+ QString prettyDN() const;
+ /** @return the DN in the original form */
+ QString dn() const;
+ /**
+ \overload
+ Uses \a sep as separator (default: ,)
+ */
+ QString dn(const QString &sep) const;
+
+ QString operator[](const QString &attr) const;
+
+ void append(const Attribute &attr);
+
+ const_iterator begin() const;
+ const_iterator end() const;
+
+private:
+ void detach();
+private:
+ class Private;
+ Private *d;
+};
+
+class KLEO_EXPORT DN::Attribute
+{
+public:
+ typedef DN::AttributeList List;
+
+ explicit Attribute(const QString &name = QString(), const QString &value = QString())
+ : mName(name.toUpper()), mValue(value) {}
+ Attribute(const Attribute &other)
+ : mName(other.name()), mValue(other.value()) {}
+
+ const Attribute &operator=(const Attribute &other)
+ {
+ if (this != &other) {
+ mName = other.name();
+ mValue = other.value();
+ }
+ return *this;
+ }
+
+ const QString &name() const
+ {
+ return mName;
+ }
+ const QString &value() const
+ {
+ return mValue;
+ }
+
+ void setValue(const QString &value)
+ {
+ mValue = value;
+ }
+
+private:
+ QString mName;
+ QString mValue;
+};
+
+}
+
+#endif // __KLEO_DN_H__
--- /dev/null
+/*
+ kleo/enum.cpp
+
+ This file is part of libkleopatra, the KDE keymanagement library
+ Copyright (c) 2004 Klarälvdalens Datakonsult AB
+
+ Libkleopatra is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ Libkleopatra 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#include "enum.h"
+#include "libkleo_debug.h"
+#include "models/keycache.h"
+
+#include <functional>
+
+#include <KLocalizedString>
+
+#include <gpgme++/key.h>
+#include <gpgme++/tofuinfo.h>
+
+#include <QString>
+#include <QStringList>
+#include <QEventLoop>
+
+#include <functional>
+
+static const struct {
+ Kleo::CryptoMessageFormat format;
+ const char *displayName;
+ const char *configName;
+} cryptoMessageFormats[] = {
+ {
+ Kleo::InlineOpenPGPFormat,
+ I18N_NOOP("Inline OpenPGP (deprecated)"),
+ "inline openpgp"
+ },
+ {
+ Kleo::OpenPGPMIMEFormat,
+ I18N_NOOP("OpenPGP/MIME"),
+ "openpgp/mime"
+ },
+ {
+ Kleo::SMIMEFormat,
+ I18N_NOOP("S/MIME"),
+ "s/mime"
+ },
+ {
+ Kleo::SMIMEOpaqueFormat,
+ I18N_NOOP("S/MIME Opaque"),
+ "s/mime opaque"
+ },
+};
+static const unsigned int numCryptoMessageFormats
+ = sizeof cryptoMessageFormats / sizeof * cryptoMessageFormats;
+
+const char *Kleo::cryptoMessageFormatToString(Kleo::CryptoMessageFormat f)
+{
+ if (f == AutoFormat) {
+ return "auto";
+ }
+ for (unsigned int i = 0; i < numCryptoMessageFormats; ++i)
+ if (f == cryptoMessageFormats[i].format) {
+ return cryptoMessageFormats[i].configName;
+ }
+ return nullptr;
+}
+
+QStringList Kleo::cryptoMessageFormatsToStringList(unsigned int f)
+{
+ QStringList result;
+ for (unsigned int i = 0; i < numCryptoMessageFormats; ++i)
+ if (f & cryptoMessageFormats[i].format) {
+ result.push_back(QLatin1String(cryptoMessageFormats[i].configName));
+ }
+ return result;
+}
+
+QString Kleo::cryptoMessageFormatToLabel(Kleo::CryptoMessageFormat f)
+{
+ if (f == AutoFormat) {
+ return i18n("Any");
+ }
+ for (unsigned int i = 0; i < numCryptoMessageFormats; ++i)
+ if (f == cryptoMessageFormats[i].format) {
+ return i18n(cryptoMessageFormats[i].displayName);
+ }
+ return QString();
+}
+
+Kleo::CryptoMessageFormat Kleo::stringToCryptoMessageFormat(const QString &s)
+{
+ const QString t = s.toLower();
+ for (unsigned int i = 0; i < numCryptoMessageFormats; ++i)
+ if (t == QLatin1String(cryptoMessageFormats[i].configName)) {
+ return cryptoMessageFormats[i].format;
+ }
+ return AutoFormat;
+}
+
+unsigned int Kleo::stringListToCryptoMessageFormats(const QStringList &sl)
+{
+ unsigned int result = 0;
+ for (QStringList::const_iterator it = sl.begin(); it != sl.end(); ++it) {
+ result |= stringToCryptoMessageFormat(*it);
+ }
+ return result;
+}
+
+// For the config values used below, see also kaddressbook/editors/cryptowidget.cpp
+
+const char *Kleo::encryptionPreferenceToString(EncryptionPreference pref)
+{
+ switch (pref) {
+ case UnknownPreference:
+ return nullptr;
+ case NeverEncrypt:
+ return "never";
+ case AlwaysEncrypt:
+ return "always";
+ case AlwaysEncryptIfPossible:
+ return "alwaysIfPossible";
+ case AlwaysAskForEncryption:
+ return "askAlways";
+ case AskWheneverPossible:
+ return "askWhenPossible";
+ }
+ return nullptr; // keep the compiler happy
+}
+
+Kleo::EncryptionPreference Kleo::stringToEncryptionPreference(const QString &str)
+{
+ if (str == QLatin1String("never")) {
+ return NeverEncrypt;
+ }
+ if (str == QLatin1String("always")) {
+ return AlwaysEncrypt;
+ }
+ if (str == QLatin1String("alwaysIfPossible")) {
+ return AlwaysEncryptIfPossible;
+ }
+ if (str == QLatin1String("askAlways")) {
+ return AlwaysAskForEncryption;
+ }
+ if (str == QLatin1String("askWhenPossible")) {
+ return AskWheneverPossible;
+ }
+ return UnknownPreference;
+}
+
+QString Kleo::encryptionPreferenceToLabel(EncryptionPreference pref)
+{
+ switch (pref) {
+ case NeverEncrypt:
+ return i18n("Never Encrypt");
+ case AlwaysEncrypt:
+ return i18n("Always Encrypt");
+ case AlwaysEncryptIfPossible:
+ return i18n("Always Encrypt If Possible");
+ case AlwaysAskForEncryption:
+ return i18n("Ask");
+ case AskWheneverPossible:
+ return i18n("Ask Whenever Possible");
+ default:
+ return xi18nc("no specific preference", "<placeholder>none</placeholder>");
+ }
+}
+
+const char *Kleo::signingPreferenceToString(SigningPreference pref)
+{
+ switch (pref) {
+ case UnknownSigningPreference:
+ return nullptr;
+ case NeverSign:
+ return "never";
+ case AlwaysSign:
+ return "always";
+ case AlwaysSignIfPossible:
+ return "alwaysIfPossible";
+ case AlwaysAskForSigning:
+ return "askAlways";
+ case AskSigningWheneverPossible:
+ return "askWhenPossible";
+ }
+ return nullptr; // keep the compiler happy
+}
+
+Kleo::SigningPreference Kleo::stringToSigningPreference(const QString &str)
+{
+ if (str == QLatin1String("never")) {
+ return NeverSign;
+ }
+ if (str == QLatin1String("always")) {
+ return AlwaysSign;
+ }
+ if (str == QLatin1String("alwaysIfPossible")) {
+ return AlwaysSignIfPossible;
+ }
+ if (str == QLatin1String("askAlways")) {
+ return AlwaysAskForSigning;
+ }
+ if (str == QLatin1String("askWhenPossible")) {
+ return AskSigningWheneverPossible;
+ }
+ return UnknownSigningPreference;
+}
+
+QString Kleo::signingPreferenceToLabel(SigningPreference pref)
+{
+ switch (pref) {
+ case NeverSign:
+ return i18n("Never Sign");
+ case AlwaysSign:
+ return i18n("Always Sign");
+ case AlwaysSignIfPossible:
+ return i18n("Always Sign If Possible");
+ case AlwaysAskForSigning:
+ return i18n("Ask");
+ case AskSigningWheneverPossible:
+ return i18n("Ask Whenever Possible");
+ default:
+ return i18nc("no specific preference", "<none>");
+ }
+}
+
+Kleo::TrustLevel Kleo::trustLevel(const GpgME::Key &key)
+{
+ TrustLevel maxTl = Level0;
+ for (int i = 0, c = key.numUserIDs(); i < c; ++i) {
+ const auto tl = trustLevel(key.userID(i));
+ maxTl = qMax(maxTl, tl);
+ if (maxTl == Level4) {
+ break;
+ }
+ }
+
+ return maxTl;
+}
+
+namespace {
+
+bool hasTrustedSignature(const GpgME::UserID &uid)
+{
+ // lazily intialized cache
+ static std::shared_ptr<const Kleo::KeyCache> keyCache;
+ if (!keyCache) {
+ keyCache = Kleo::KeyCache::instance();
+ }
+ if (!keyCache->initialized()) {
+ QEventLoop el;
+ QObject::connect(keyCache.get(), &Kleo::KeyCache::keyListingDone,
+ &el, &QEventLoop::quit);
+ el.exec();
+ }
+
+ const auto signatures = uid.signatures();
+ std::vector<std::string> sigKeyIDs;
+ std::transform(signatures.cbegin(), signatures.cend(),
+ std::back_inserter(sigKeyIDs),
+ std::bind(&GpgME::UserID::Signature::signerKeyID, std::placeholders::_1));
+
+ const auto keys = keyCache->findByKeyIDOrFingerprint(sigKeyIDs);
+ return std::any_of(keys.cbegin(), keys.cend(),
+ [](const GpgME::Key &key) {
+ return key.ownerTrust() == GpgME::Key::Ultimate;
+ });
+}
+
+}
+
+Kleo::TrustLevel Kleo::trustLevel(const GpgME::UserID &uid)
+{
+ // Modelled after https://wiki.gnupg.org/EasyGpg2016/AutomatedEncryption,
+ // but modified to cover all cases, unlike the pseudocode in the document.
+ //
+ // TODO: Check whether the key comes from a trusted source (Cert/PKA/DANE/WKD)
+
+ switch (uid.validity()) {
+ case GpgME::UserID::Unknown:
+ case GpgME::UserID::Undefined:
+ case GpgME::UserID::Never:
+ // Not enough trust -> level 0
+ return Level0;
+
+ case GpgME::UserID::Marginal:
+ // Marginal trust without TOFU data means the key is still trusted
+ // through the Web of Trust -> level 2
+ if (uid.tofuInfo().isNull()) {
+ return Level2;
+ }
+ // Marginal trust with TOFU, level will depend on TOFU history
+ switch (uid.tofuInfo().validity()) {
+ case GpgME::TofuInfo::ValidityUnknown:
+ case GpgME::TofuInfo::Conflict:
+ case GpgME::TofuInfo::NoHistory:
+ // Marginal trust, but not enough history -> level 0
+ return Level0;
+ case GpgME::TofuInfo::LittleHistory:
+ // Marginal trust, but too little history -> level 1
+ return Level1;
+ case GpgME::TofuInfo::BasicHistory:
+ case GpgME::TofuInfo::LargeHistory:
+ // Marginal trust and enough history -> level 2
+ return Level2;
+ }
+
+ case GpgME::UserID::Full:
+ // Full trust, trust level depends whether the UserID is signed with
+ // at least one key with Ultimate ownertrust.
+ return hasTrustedSignature(uid) ? Level4 : Level3;
+
+ case GpgME::UserID::Ultimate:
+ // Ultimate trust -> leve 4
+ return Level4;
+ }
+
+ Q_UNREACHABLE();
+}
--- /dev/null
+/*
+ kleo/enum.h
+
+ This file is part of libkleopatra, the KDE keymanagement library
+ Copyright (c) 2004 Klarälvdalens Datakonsult AB
+
+ Libkleopatra is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ Libkleopatra 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#ifndef __KLEO_ENUM_H__
+#define __KLEO_ENUM_H__
+
+#include "kleo_export.h"
+
+class QString;
+class QStringList;
+
+namespace GpgME {
+class Key;
+class UserID;
+}
+
+namespace Kleo
+{
+
+enum CryptoMessageFormat {
+ InlineOpenPGPFormat = 1,
+ OpenPGPMIMEFormat = 2,
+ SMIMEFormat = 4,
+ SMIMEOpaqueFormat = 8,
+ AnyOpenPGP = InlineOpenPGPFormat | OpenPGPMIMEFormat,
+ AnySMIME = SMIMEOpaqueFormat | SMIMEFormat,
+ AutoFormat = AnyOpenPGP | AnySMIME
+};
+
+KLEO_EXPORT QString cryptoMessageFormatToLabel(CryptoMessageFormat f);
+
+KLEO_EXPORT const char *cryptoMessageFormatToString(CryptoMessageFormat f);
+KLEO_EXPORT QStringList cryptoMessageFormatsToStringList(unsigned int f);
+KLEO_EXPORT CryptoMessageFormat stringToCryptoMessageFormat(const QString &s);
+KLEO_EXPORT unsigned int stringListToCryptoMessageFormats(const QStringList &sl);
+
+enum Action {
+ Conflict, DoIt, DontDoIt, Ask, AskOpportunistic, Impossible
+};
+
+enum EncryptionPreference {
+ UnknownPreference = 0,
+ NeverEncrypt = 1,
+ AlwaysEncrypt = 2,
+ AlwaysEncryptIfPossible = 3,
+ AlwaysAskForEncryption = 4,
+ AskWheneverPossible = 5,
+ MaxEncryptionPreference = AskWheneverPossible
+};
+
+KLEO_EXPORT QString encryptionPreferenceToLabel(EncryptionPreference pref);
+KLEO_EXPORT const char *encryptionPreferenceToString(EncryptionPreference pref);
+KLEO_EXPORT EncryptionPreference stringToEncryptionPreference(const QString &str);
+
+enum SigningPreference {
+ UnknownSigningPreference = 0,
+ NeverSign = 1,
+ AlwaysSign = 2,
+ AlwaysSignIfPossible = 3,
+ AlwaysAskForSigning = 4,
+ AskSigningWheneverPossible = 5,
+ MaxSigningPreference = AskSigningWheneverPossible
+};
+
+KLEO_EXPORT QString signingPreferenceToLabel(SigningPreference pref);
+KLEO_EXPORT const char *signingPreferenceToString(SigningPreference pref);
+KLEO_EXPORT SigningPreference stringToSigningPreference(const QString &str);
+
+enum TrustLevel {
+ Level0,
+ Level1,
+ Level2,
+ Level3,
+ Level4
+};
+
+KLEO_EXPORT TrustLevel trustLevel(const GpgME::Key &key);
+KLEO_EXPORT TrustLevel trustLevel(const GpgME::UserID &uid);
+
+
+}
+
+#endif // __KLEO_CRYPTOBACKEND_H__
--- /dev/null
+/* -*- mode: c++; c-basic-offset:4 -*-
+ exception.cpp
+
+ This file is part of libkleopatra, the KDE keymanagement library
+ Copyright (c) 2008 Klarälvdalens Datakonsult AB
+
+ Libkleopatra is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ Libkleopatra 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#include "exception.h"
+
+Kleo::Exception::~Exception() throw() {}
--- /dev/null
+/* -*- mode: c++; c-basic-offset:4 -*-
+ exception.h
+
+ This file is part of libkleopatra, the KDE keymanagement library
+ Copyright (c) 2008 Klarälvdalens Datakonsult AB
+
+ Libkleopatra is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ Libkleopatra 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#ifndef __KLEO_EXCEPTION_H__
+#define __KLEO_EXCEPTION_H__
+
+#include "kleo_export.h"
+
+#include <gpg-error.h>
+#include <gpgme++/exception.h>
+
+#include <QString>
+
+namespace Kleo
+{
+
+class KLEO_EXPORT Exception : public GpgME::Exception
+{
+public:
+ Exception(gpg_error_t e, const std::string &msg, Options opt = NoOptions)
+ : GpgME::Exception(GpgME::Error(e), msg, opt) {}
+ Exception(gpg_error_t e, const char *msg, Options opt = NoOptions)
+ : GpgME::Exception(GpgME::Error(e), msg, opt) {}
+ Exception(gpg_error_t e, const QString &msg, Options opt = NoOptions)
+ : GpgME::Exception(GpgME::Error(e), msg.toLocal8Bit().constData(), opt) {}
+
+ Exception(const GpgME::Error &e, const std::string &msg)
+ : GpgME::Exception(e, msg) {}
+ Exception(const GpgME::Error &e, const char *msg)
+ : GpgME::Exception(e, msg) {}
+ Exception(const GpgME::Error &e, const QString &msg)
+ : GpgME::Exception(e, msg.toLocal8Bit().constData()) {}
+
+ ~Exception() throw ();
+
+ const std::string &messageLocal8Bit() const
+ {
+ return GpgME::Exception::message();
+ }
+ gpg_error_t error_code() const
+ {
+ return error().encodedError();
+ }
+
+ QString message() const
+ {
+ return QString::fromLocal8Bit(GpgME::Exception::message().c_str());
+ }
+};
+
+}
+
+#endif /* __KLEO_EXCEPTION_H__ */
--- /dev/null
+/*
+ kconfigbasedkeyfilter.cpp
+
+ This file is part of libkleopatra, the KDE keymanagement library
+ Copyright (c) 2004 Klarälvdalens Datakonsult AB
+
+ Libkleopatra is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ Libkleopatra 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#include "kconfigbasedkeyfilter.h"
+
+#include <kconfigbase.h>
+#include <kconfiggroup.h>
+
+#include <algorithm>
+#include <QDebug>
+
+using namespace Kleo;
+using namespace GpgME;
+
+//
+//
+// FontDescription - intuitive font property resolving
+// (QFont::resolve doesn't work for us)
+//
+//
+struct KeyFilter::FontDescription::Private {
+ bool bold, italic, strikeOut, fullFont;
+ QFont font;
+};
+
+KeyFilter::FontDescription::FontDescription()
+ : d(new Private)
+{
+ d->bold = d->italic = d->strikeOut = d->fullFont = false;
+}
+
+KeyFilter::FontDescription::FontDescription(const FontDescription &other)
+ : d(new Private(*other.d))
+{
+
+}
+
+KeyFilter::FontDescription::~FontDescription()
+{
+ delete d;
+}
+
+KeyFilter::FontDescription KeyFilter::FontDescription::create(bool b, bool i, bool s)
+{
+ FontDescription fd;
+ fd.d->bold = b;
+ fd.d->italic = i;
+ fd.d->strikeOut = s;
+ return fd;
+}
+
+KeyFilter::FontDescription KeyFilter::FontDescription::create(const QFont &f, bool b, bool i, bool s)
+{
+ FontDescription fd;
+ fd.d->fullFont = true;
+ fd.d->font = f;
+ fd.d->bold = b;
+ fd.d->italic = i;
+ fd.d->strikeOut = s;
+ return fd;
+}
+
+QFont KeyFilter::FontDescription::font(const QFont &base) const
+{
+ QFont font;
+ if (d->fullFont) {
+ font = d->font;
+ font.setPointSize(base.pointSize());
+ } else {
+ font = base;
+ }
+ if (d->bold) {
+ font.setBold(true);
+ }
+ if (d->italic) {
+ font.setItalic(true);
+ }
+ if (d->strikeOut) {
+ font.setStrikeOut(true);
+ }
+ return font;
+}
+
+KeyFilter::FontDescription KeyFilter::FontDescription::resolve(const FontDescription &other) const
+{
+ FontDescription fd;
+ fd.d->fullFont = this->d->fullFont || other.d->fullFont;
+ if (fd.d->fullFont) {
+ fd.d->font = this->d->fullFont ? this->d->font : other.d->font;
+ }
+ fd.d->bold = this->d->bold || other.d->bold;
+ fd.d->italic = this->d->italic || other.d->italic;
+ fd.d->strikeOut = this->d->strikeOut || other.d->strikeOut;
+ return fd;
+}
+
+static const struct {
+ const char *name;
+ Key::OwnerTrust trust;
+ UserID::Validity validity;
+} ownerTrustAndValidityMap[] = {
+ { "unknown", Key::Unknown, UserID::Unknown },
+ { "undefined", Key::Undefined, UserID::Undefined },
+ { "never", Key::Never, UserID::Never },
+ { "marginal", Key::Marginal, UserID::Marginal },
+ { "full", Key::Full, UserID::Full },
+ { "ultimate", Key::Ultimate, UserID::Ultimate },
+};
+
+static Key::OwnerTrust map2OwnerTrust(const QString &s)
+{
+ for (unsigned int i = 0; i < sizeof ownerTrustAndValidityMap / sizeof * ownerTrustAndValidityMap; ++i)
+ if (s.toLower() == QLatin1String(ownerTrustAndValidityMap[i].name)) {
+ return ownerTrustAndValidityMap[i].trust;
+ }
+ return ownerTrustAndValidityMap[0].trust;
+}
+
+static UserID::Validity map2Validity(const QString &s)
+{
+ for (unsigned int i = 0; i < sizeof ownerTrustAndValidityMap / sizeof * ownerTrustAndValidityMap; ++i)
+ if (s.toLower() == QLatin1String(ownerTrustAndValidityMap[i].name)) {
+ return ownerTrustAndValidityMap[i].validity;
+ }
+ return ownerTrustAndValidityMap[0].validity;
+}
+
+KConfigBasedKeyFilter::KConfigBasedKeyFilter(const KConfigGroup &config)
+ : DefaultKeyFilter()
+{
+ setFgColor(config.readEntry<QColor>("foreground-color", QColor()));
+ setBgColor(config.readEntry<QColor>("background-color", QColor()));
+ setName(config.readEntry("Name", config.name()));
+ setIcon(config.readEntry("icon"));
+ setId(config.readEntry("id", config.name()));
+ if (config.hasKey("font")) {
+ setUseFullFont(true);
+ setFont(config.readEntry("font"));
+ } else {
+ setUseFullFont(false);
+ setItalic(config.readEntry("font-italic", false));
+ setBold(config.readEntry("font-bold", false));
+ }
+ setStrikeOut(config.readEntry("font-strikeout", false));
+#ifdef SET
+#undef SET
+#endif
+#define SET(member,key) \
+ if ( config.hasKey( key ) ) { \
+ set##member(config.readEntry( key, false ) ? Set : NotSet); \
+ setSpecificity(specificity() + 1); \
+ }
+ SET(Revoked, "is-revoked");
+ SET(Expired, "is-expired");
+ SET(Disabled, "is-disabled");
+ SET(Root, "is-root-certificate");
+ SET(CanEncrypt, "can-encrypt");
+ SET(CanSign, "can-sign");
+ SET(CanCertify, "can-certify");
+ SET(CanAuthenticate, "can-authenticate");
+ SET(Qualified, "is-qualified");
+ SET(CardKey, "is-cardkey");
+ SET(HasSecret, "has-secret-key");
+ SET(IsOpenPGP, "is-openpgp-key");
+ SET(WasValidated, "was-validated");
+#undef SET
+ static const struct {
+ const char *prefix;
+ LevelState state;
+ } prefixMap[] = {
+ { "is-", Is },
+ { "is-not-", IsNot },
+ { "is-at-least-", IsAtLeast },
+ { "is-at-most-", IsAtMost },
+ };
+ for (unsigned int i = 0; i < sizeof prefixMap / sizeof * prefixMap; ++i) {
+ const QString key = QLatin1String(prefixMap[i].prefix) + QLatin1String("ownertrust");
+ if (config.hasKey(key)) {
+ setOwnerTrust(prefixMap[i].state);
+ setOwnerTrustReferenceLevel(map2OwnerTrust(config.readEntry(key, QString())));
+ setSpecificity(specificity() + 1);
+ break;
+ }
+ }
+ for (unsigned int i = 0; i < sizeof prefixMap / sizeof * prefixMap; ++i) {
+ const QString key = QLatin1String(prefixMap[i].prefix) + QLatin1String("validity");
+ if (config.hasKey(key)) {
+ setValidity(prefixMap[i].state);
+ setValidityReferenceLevel(map2Validity(config.readEntry(key, QString())));
+ setSpecificity(specificity() + 1);
+ break;
+ }
+ }
+ static const struct {
+ const char *key;
+ MatchContext context;
+ } matchMap[] = {
+ { "any", AnyMatchContext },
+ { "appearance", Appearance },
+ { "filtering", Filtering },
+ };
+ const QStringList contexts = config.readEntry("match-contexts", "any").toLower().split(QRegExp(QLatin1String("[^a-zA-Z0-9_-!]+")), QString::SkipEmptyParts);
+ setMatchContexts(NoMatchContext);
+ for (const QString & ctx : contexts) {
+ bool found = false;
+ for (unsigned int i = 0; i < sizeof matchMap / sizeof * matchMap; ++i)
+ if (ctx == QLatin1String(matchMap[i].key)) {
+ setMatchContexts(availableMatchContexts() |= matchMap[i].context);
+ found = true;
+ break;
+ } else if (ctx.startsWith(QLatin1Char('!')) && ctx.mid(1) == QLatin1String(matchMap[i].key)) {
+ setMatchContexts(availableMatchContexts() &= matchMap[i].context);
+ found = true;
+ break;
+ }
+ if (!found) {
+ qWarning() << QStringLiteral("KConfigBasedKeyFilter: found unknown match context '%1' in group '%2'").arg(ctx).arg(config.name());
+ }
+ }
+ if (availableMatchContexts() == NoMatchContext) {
+ qWarning() << QStringLiteral("KConfigBasedKeyFilter: match context in group '%1' evaluates to NoMatchContext, "
+ "replaced by AnyMatchContext").arg(config.name());
+ setMatchContexts(AnyMatchContext);
+ }
+}
--- /dev/null
+/*
+ kconfigbasedkeyfilter.h
+
+ This file is part of libkleopatra, the KDE keymanagement library
+ Copyright (c) 2004 Klarälvdalens Datakonsult AB
+
+ Libkleopatra is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ Libkleopatra 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#ifndef __KLEO_KCONFIGBASEDKEYFILTER_H__
+#define __KLEO_KCONFIGBASEDKEYFILTER_H__
+
+#include "defaultkeyfilter.h"
+
+class KConfigGroup;
+
+namespace Kleo
+{
+
+class KLEO_EXPORT KConfigBasedKeyFilter : public DefaultKeyFilter
+{
+public:
+ explicit KConfigBasedKeyFilter(const KConfigGroup &group);
+};
+
+}
+
+#endif // __KLEO_KCONFIGBASEDKEYFILTER_H__
--- /dev/null
+/*
+ keyfilter.h
+
+ This file is part of libkleopatra, the KDE keymanagement library
+ Copyright (c) 2004 Klarälvdalens Datakonsult AB
+
+ Libkleopatra is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ Libkleopatra 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#ifndef __KLEO_KEYFILTER_H__
+#define __KLEO_KEYFILTER_H__
+
+#include <QtCore/QFlags>
+
+#include <algorithm>
+
+#include <kleo_export.h>
+
+namespace GpgME
+{
+class Key;
+}
+
+class QFont;
+class QColor;
+class QString;
+
+namespace Kleo
+{
+
+/**
+ @short An abstract base class key filters
+
+*/
+class KLEO_EXPORT KeyFilter
+{
+public:
+ virtual ~KeyFilter() {}
+
+ enum MatchContext {
+ NoMatchContext = 0x0,
+ Appearance = 0x1,
+ Filtering = 0x2,
+
+ AnyMatchContext = Appearance | Filtering
+ };
+ Q_DECLARE_FLAGS(MatchContexts, MatchContext)
+
+ virtual bool matches(const GpgME::Key &key, MatchContexts ctx) const = 0;
+
+ virtual unsigned int specificity() const = 0;
+ virtual QString id() const = 0;
+ virtual MatchContexts availableMatchContexts() const = 0;
+
+ // not sure if we want these here, but for the time being, it's
+ // the easiest way:
+ virtual QColor fgColor() const = 0;
+ virtual QColor bgColor() const = 0;
+ virtual QString name() const = 0;
+ virtual QString icon() const = 0;
+
+ class FontDescription
+ {
+ public:
+ FontDescription();
+ FontDescription(const FontDescription &other);
+ FontDescription &operator=(const FontDescription &other)
+ {
+ FontDescription copy(other);
+ swap(copy);
+ return *this;
+ }
+ ~FontDescription();
+
+ static FontDescription create(bool bold, bool italic, bool strikeOut);
+ static FontDescription create(const QFont &font, bool bold, bool italic, bool strikeOut);
+
+ QFont font(const QFont &base) const;
+
+ FontDescription resolve(const FontDescription &other) const;
+
+ void swap(FontDescription &other)
+ {
+ std::swap(this->d, other.d);
+ }
+ struct Private;
+ private:
+ Private *d;
+ };
+
+ virtual FontDescription fontDescription() const = 0;
+};
+
+Q_DECLARE_OPERATORS_FOR_FLAGS(KeyFilter::MatchContexts)
+
+}
+
+#endif // __KLEO_KEYFILTER_H__
--- /dev/null
+/*
+ keyfiltermanager.cpp
+
+ This file is part of libkleopatra, the KDE keymanagement library
+ Copyright (c) 2004 Klarälvdalens Datakonsult AB
+
+ Libkleopatra is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ Libkleopatra 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#include "keyfiltermanager.h"
+#include "kconfigbasedkeyfilter.h"
+#include "defaultkeyfilter.h"
+
+#include "stl_util.h"
+
+#include "libkleo_debug.h"
+#include "utils/formatting.h"
+
+#include <kconfig.h>
+#include <kconfiggroup.h>
+#include <KSharedConfig>
+#include <KLocalizedString>
+#include <QIcon>
+#include <QDebug>
+
+#include <QCoreApplication>
+#include <QRegularExpression>
+#include <QStringList>
+#include <QAbstractListModel>
+#include <QModelIndex>
+
+#include <algorithm>
+#include <vector>
+#include <climits>
+#include <functional>
+
+using namespace Kleo;
+using namespace GpgME;
+
+namespace
+{
+
+class Model : public QAbstractListModel
+{
+ KeyFilterManager::Private *m_keyFilterManagerPrivate;
+public:
+ explicit Model(KeyFilterManager::Private *p)
+ : QAbstractListModel(nullptr), m_keyFilterManagerPrivate(p) {}
+
+ int rowCount(const QModelIndex &) const override;
+ QVariant data(const QModelIndex &idx, int role) const override;
+ /* upgrade to public */ using QAbstractListModel::reset;
+};
+
+class AllCertificatesKeyFilter : public DefaultKeyFilter
+{
+public:
+ AllCertificatesKeyFilter()
+ : DefaultKeyFilter()
+ {
+ setSpecificity(UINT_MAX); // overly high for ordering
+ setName(i18n("All Certificates"));
+ setId(QStringLiteral("all-certificates"));
+ setMatchContexts(Filtering);
+ }
+};
+
+class MyCertificatesKeyFilter : public DefaultKeyFilter
+{
+public:
+ MyCertificatesKeyFilter()
+ : DefaultKeyFilter()
+ {
+ setHasSecret(Set);
+ setSpecificity(UINT_MAX - 1); // overly high for ordering
+
+ setName(i18n("My Certificates"));
+ setId(QStringLiteral("my-certificates"));
+ setMatchContexts(AnyMatchContext);
+ setBold(true);
+ }
+};
+
+class TrustedCertificatesKeyFilter : public DefaultKeyFilter
+{
+public:
+ TrustedCertificatesKeyFilter()
+ : DefaultKeyFilter()
+ {
+ setRevoked(NotSet);
+ setValidity(IsAtLeast);
+ setValidityReferenceLevel(UserID::Marginal);
+ setSpecificity(UINT_MAX - 2); // overly high for ordering
+
+ setName(i18n("Trusted Certificates"));
+ setId(QStringLiteral("trusted-certificates"));
+ setMatchContexts(Filtering);
+ }
+};
+
+class FullCertificatesKeyFilter : public DefaultKeyFilter
+{
+public:
+ FullCertificatesKeyFilter()
+ : DefaultKeyFilter()
+ {
+ setRevoked(NotSet);
+ setValidity(IsAtLeast);
+ setValidityReferenceLevel(UserID::Full);
+ setSpecificity(UINT_MAX - 3);
+
+ setName(i18n("Fully Trusted Certificates"));
+ setId(QStringLiteral("full-certificates"));
+ setMatchContexts(Filtering);
+ }
+};
+
+class OtherCertificatesKeyFilter : public DefaultKeyFilter
+{
+public:
+ OtherCertificatesKeyFilter()
+ : DefaultKeyFilter()
+ {
+ setHasSecret(NotSet);
+ setValidity(IsAtMost);
+ setValidityReferenceLevel(UserID::Never);
+ setSpecificity(UINT_MAX - 4); // overly high for ordering
+
+ setName(i18n("Other Certificates"));
+ setId(QStringLiteral("other-certificates"));
+ setMatchContexts(Filtering);
+ }
+};
+
+/* This filter selects only VS-compliant keys if Kleopatra is used in
+ * CO_DE_VS mode. */
+class DeVsCompliantKeyFilter : public DefaultKeyFilter
+{
+public:
+ DeVsCompliantKeyFilter()
+ : DefaultKeyFilter()
+ {
+ setName(i18n("VS-compliant Certificates"));
+ setId(QStringLiteral("vs-compliant-certificates"));
+ setSpecificity(UINT_MAX - 5); // overly high for ordering
+ }
+ bool matches (const Key &key, MatchContexts contexts) const override
+ {
+ return (contexts & Filtering) && Formatting::isKeyDeVs(key);
+ }
+};
+
+/* This filter selects only invalid keys (i.e. those where not all
+ * UIDs are at least fully valid). */
+class KeyNotValidFilter : public DefaultKeyFilter
+{
+public:
+ KeyNotValidFilter()
+ : DefaultKeyFilter()
+ {
+ setName(i18n("Not validated Certificates"));
+ setId(QStringLiteral("not-validated-certificates"));
+ setSpecificity(UINT_MAX - 6); // overly high for ordering
+ }
+ bool matches (const Key &key, MatchContexts contexts) const override
+ {
+ return (contexts & Filtering) && !Formatting::uidsHaveFullValidity(key);
+ }
+};
+
+/* This filter gives valid keys (i.e. those where all UIDs are at
+ * least fully valid) a light green background if Kleopatra is used in
+ * CO_DE_VS mode. */
+class KeyValidAppearanceFilter : public DefaultKeyFilter
+{
+public:
+ KeyValidAppearanceFilter()
+ : DefaultKeyFilter()
+ {
+ setBgColor(QColor("lightgreen"));
+ }
+ bool matches (const Key &key, MatchContexts contexts) const override
+ {
+ return (contexts & Appearance) && Formatting::uidsHaveFullValidity(key);
+ }
+};
+
+/* This filter gives invalid keys (i.e. those where not all UIDs are
+ * at least fully valid) a light red background if Kleopatra is used
+ * in CO_DE_VS mode. */
+class KeyNotValidAppearanceFilter : public DefaultKeyFilter
+{
+public:
+ KeyNotValidAppearanceFilter()
+ : DefaultKeyFilter()
+ {
+ setBgColor(QColor("lightpink"));
+ }
+ bool matches (const Key &key, MatchContexts contexts) const override
+ {
+ return (contexts & Appearance) && !Formatting::uidsHaveFullValidity(key);
+ }
+};
+
+}
+
+static std::vector<std::shared_ptr<KeyFilter>> defaultFilters()
+{
+ std::vector<std::shared_ptr<KeyFilter> > result;
+ result.reserve(6);
+ result.push_back(std::shared_ptr<KeyFilter>(new MyCertificatesKeyFilter));
+ result.push_back(std::shared_ptr<KeyFilter>(new TrustedCertificatesKeyFilter));
+ result.push_back(std::shared_ptr<KeyFilter>(new FullCertificatesKeyFilter));
+ result.push_back(std::shared_ptr<KeyFilter>(new OtherCertificatesKeyFilter));
+ result.push_back(std::shared_ptr<KeyFilter>(new AllCertificatesKeyFilter));
+ result.push_back(std::shared_ptr<KeyFilter>(new KeyNotValidFilter));
+ if (Formatting::complianceMode() == QStringLiteral("de-vs")) {
+ result.push_back(std::shared_ptr<KeyFilter>(new DeVsCompliantKeyFilter));
+ }
+ return result;
+}
+
+static std::vector<std::shared_ptr<KeyFilter>> defaultAppearanceFilters()
+{
+ std::vector<std::shared_ptr<KeyFilter> > result;
+ if (Formatting::complianceMode() == QStringLiteral("de-vs")) {
+ result.reserve(2);
+ result.push_back(std::shared_ptr<KeyFilter>(new KeyValidAppearanceFilter));
+ result.push_back(std::shared_ptr<KeyFilter>(new KeyNotValidAppearanceFilter));
+ }
+ return result;
+}
+
+class KeyFilterManager::Private
+{
+public:
+ Private() : filters(), appearanceFilters(), model(this) {}
+ void clear()
+ {
+ filters.clear();
+ appearanceFilters.clear();
+ model.reset();
+ }
+
+ std::vector<std::shared_ptr<KeyFilter>> filters;
+ std::vector<std::shared_ptr<KeyFilter>> appearanceFilters;
+ Model model;
+};
+
+KeyFilterManager *KeyFilterManager::mSelf = nullptr;
+
+KeyFilterManager::KeyFilterManager(QObject *parent)
+ : QObject(parent), d(new Private)
+{
+ mSelf = this;
+ // ### DF: doesn't a KStaticDeleter work more reliably?
+ if (QCoreApplication *app = QCoreApplication::instance()) {
+ connect(app, &QCoreApplication::aboutToQuit, this, &QObject::deleteLater);
+ }
+ reload();
+}
+
+KeyFilterManager::~KeyFilterManager()
+{
+ mSelf = nullptr;
+ if (d) {
+ d->clear();
+ }
+ delete d; d = nullptr;
+}
+
+KeyFilterManager *KeyFilterManager::instance()
+{
+ if (!mSelf) {
+ mSelf = new KeyFilterManager();
+ }
+ return mSelf;
+}
+
+const std::shared_ptr<KeyFilter> &KeyFilterManager::filterMatching(const Key &key, KeyFilter::MatchContexts contexts) const
+{
+ const auto it = std::find_if(d->filters.cbegin(), d->filters.cend(),
+ [&key, contexts](const std::shared_ptr<KeyFilter> &filter) {
+ return filter->matches(key, contexts);
+ });
+ if (it != d->filters.cend()) {
+ return *it;
+ }
+ static const std::shared_ptr<KeyFilter> null;
+ return null;
+}
+
+std::vector<std::shared_ptr<KeyFilter>> KeyFilterManager::filtersMatching(const Key &key, KeyFilter::MatchContexts contexts) const
+{
+ std::vector<std::shared_ptr<KeyFilter>> result;
+ result.reserve(d->filters.size());
+ std::remove_copy_if(d->filters.begin(), d->filters.end(),
+ std::back_inserter(result),
+ [&key, contexts](const std::shared_ptr<KeyFilter> &filter) {
+ return !filter->matches(key, contexts);
+ });
+ return result;
+}
+
+namespace
+{
+struct ByDecreasingSpecificity : std::binary_function<std::shared_ptr<KeyFilter>, std::shared_ptr<KeyFilter>, bool> {
+ bool operator()(const std::shared_ptr<KeyFilter> &lhs, const std::shared_ptr<KeyFilter> &rhs) const
+ {
+ return lhs->specificity() > rhs->specificity();
+ }
+};
+}
+
+void KeyFilterManager::reload()
+{
+ d->clear();
+
+ d->filters = defaultFilters();
+ d->appearanceFilters = defaultAppearanceFilters();
+ KSharedConfigPtr config = KSharedConfig::openConfig(QStringLiteral("libkleopatrarc"));
+
+ const QStringList groups = config->groupList().filter(QRegularExpression(QStringLiteral("^Key Filter #\\d+$")));
+ for (QStringList::const_iterator it = groups.begin(); it != groups.end(); ++it) {
+ const KConfigGroup cfg(config, *it);
+ d->filters.push_back(std::shared_ptr<KeyFilter>(new KConfigBasedKeyFilter(cfg)));
+ }
+ std::stable_sort(d->filters.begin(), d->filters.end(), ByDecreasingSpecificity());
+ qCDebug(LIBKLEO_LOG) << "final filter count is" << d->filters.size();
+}
+
+QAbstractItemModel *KeyFilterManager::model() const
+{
+ return &d->model;
+}
+
+const std::shared_ptr<KeyFilter> &KeyFilterManager::keyFilterByID(const QString &id) const
+{
+ const auto it = std::find_if(d->filters.begin(), d->filters.end(),
+ [id](const std::shared_ptr<KeyFilter> &filter) {
+ return filter->id() == id;
+ });
+ if (it != d->filters.end()) {
+ return *it;
+ }
+ static const std::shared_ptr<KeyFilter> null;
+ return null;
+}
+
+const std::shared_ptr<KeyFilter> &KeyFilterManager::fromModelIndex(const QModelIndex &idx) const
+{
+ if (!idx.isValid() || idx.model() != &d->model || idx.row() < 0 ||
+ static_cast<unsigned>(idx.row()) >= d->filters.size()) {
+ static const std::shared_ptr<KeyFilter> null;
+ return null;
+ }
+ return d->filters[idx.row()];
+}
+
+QModelIndex KeyFilterManager::toModelIndex(const std::shared_ptr<KeyFilter> &kf) const
+{
+ if (!kf) {
+ return QModelIndex();
+ }
+ const auto pair = std::equal_range(d->filters.cbegin(), d->filters.cend(), kf, ByDecreasingSpecificity());
+ const auto it = std::find(pair.first, pair.second, kf);
+ if (it != pair.second) {
+ return d->model.index(it - d->filters.begin());
+ } else {
+ return QModelIndex();
+ }
+}
+
+int Model::rowCount(const QModelIndex &) const
+{
+ return m_keyFilterManagerPrivate->filters.size();
+}
+
+QVariant Model::data(const QModelIndex &idx, int role) const
+{
+ if (!idx.isValid()
+ || idx.model() != this
+ || idx.row() < 0
+ || static_cast<unsigned>(idx.row()) > m_keyFilterManagerPrivate->filters.size()) {
+ return QVariant();
+ }
+
+ const auto filter = m_keyFilterManagerPrivate->filters[idx.row()];
+ switch (role) {
+ case Qt::DecorationRole:
+ return filter->icon();
+
+ case Qt::DisplayRole:
+ case Qt::EditRole:
+ case Qt::ToolTipRole: /* Most useless tooltip ever. */
+ return filter->name();
+
+ case Qt::UserRole:
+ return filter->id();
+
+ default:
+ return QVariant();
+ }
+}
+
+static KeyFilter::FontDescription get_fontdescription(const std::vector<std::shared_ptr<KeyFilter>> &filters, const Key &key, const KeyFilter::FontDescription &initial)
+{
+ return kdtools::accumulate_if(filters.begin(), filters.end(),
+ [&key](const std::shared_ptr<KeyFilter> &filter) {
+ return filter->matches(key, KeyFilter::Appearance);
+ },
+ initial,
+ [](const KeyFilter::FontDescription &lhs,
+ const std::shared_ptr<KeyFilter> &rhs) {
+ return lhs.resolve(rhs->fontDescription());
+ });
+}
+
+QFont KeyFilterManager::font(const Key &key, const QFont &baseFont) const
+{
+ KeyFilter::FontDescription fd;
+
+ fd = get_fontdescription(d->appearanceFilters, key, KeyFilter::FontDescription());
+ fd = get_fontdescription(d->filters, key, fd);
+
+ return fd.font(baseFont);
+}
+
+static QColor get_color(const std::vector<std::shared_ptr<KeyFilter>> &filters, const Key &key, QColor(KeyFilter::*fun)() const)
+{
+ const auto it = std::find_if(filters.cbegin(), filters.cend(),
+ [&fun, &key](const std::shared_ptr<KeyFilter> &filter) {
+ return filter->matches(key, KeyFilter::Appearance)
+ && (filter.get()->*fun)().isValid();
+ });
+ if (it == filters.cend()) {
+ return QColor();
+ } else {
+ return (it->get()->*fun)();
+ }
+}
+
+static QString get_string(const std::vector<std::shared_ptr<KeyFilter>> &filters, const Key &key, QString(KeyFilter::*fun)() const)
+{
+ const auto it = std::find_if(filters.cbegin(), filters.cend(),
+ [&fun, &key](const std::shared_ptr<KeyFilter> &filter) {
+ return filter->matches(key, KeyFilter::Appearance)
+ && !(filter.get()->*fun)().isEmpty();
+ });
+ if (it == filters.cend()) {
+ return QString();
+ } else {
+ return (*it)->icon();
+ }
+}
+
+QColor KeyFilterManager::bgColor(const Key &key) const
+{
+ QColor color;
+
+ color = get_color(d->appearanceFilters, key, &KeyFilter::bgColor);
+ if (!color.isValid()) {
+ color = get_color(d->filters, key, &KeyFilter::bgColor);
+ }
+ return color;
+}
+
+QColor KeyFilterManager::fgColor(const Key &key) const
+{
+ QColor color;
+
+ color = get_color(d->appearanceFilters, key, &KeyFilter::fgColor);
+ if (!color.isValid()) {
+ color = get_color(d->filters, key, &KeyFilter::fgColor);
+ }
+ return color;
+}
+
+QIcon KeyFilterManager::icon(const Key &key) const
+{
+ QString icon;
+
+ icon = get_string(d->appearanceFilters, key, &KeyFilter::icon);
+ if (icon.isEmpty()) {
+ icon = get_string(d->filters, key, &KeyFilter::icon);
+ }
+ return icon.isEmpty() ? QIcon() : QIcon::fromTheme(icon);
+}
+
--- /dev/null
+/*
+ keyfiltermanager.h
+
+ This file is part of libkleopatra, the KDE keymanagement library
+ Copyright (c) 2004 Klarälvdalens Datakonsult AB
+
+ Libkleopatra is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ Libkleopatra 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#ifndef __KLEO_KEYFILTERMANAGER_H__
+#define __KLEO_KEYFILTERMANAGER_H__
+
+#include "kleo_export.h"
+#include <QObject>
+
+#include <libkleo/keyfilter.h>
+
+#include <memory>
+#include <vector>
+
+namespace GpgME
+{
+class Key;
+}
+
+class QAbstractItemModel;
+class QModelIndex;
+class QFont;
+class QColor;
+class QIcon;
+
+namespace Kleo
+{
+
+class KLEO_EXPORT KeyFilterManager : public QObject
+{
+ Q_OBJECT
+protected:
+ explicit KeyFilterManager(QObject *parent = nullptr);
+ ~KeyFilterManager();
+
+public:
+ static KeyFilterManager *instance();
+
+ const std::shared_ptr<KeyFilter> &filterMatching(const GpgME::Key &key, KeyFilter::MatchContexts contexts) const;
+ std::vector<std::shared_ptr<KeyFilter>> filtersMatching(const GpgME::Key &key, KeyFilter::MatchContexts contexts) const;
+
+ QAbstractItemModel *model() const;
+
+ const std::shared_ptr<KeyFilter> &keyFilterByID(const QString &id) const;
+ const std::shared_ptr<KeyFilter> &fromModelIndex(const QModelIndex &mi) const;
+ QModelIndex toModelIndex(const std::shared_ptr<KeyFilter> &kf) const;
+
+ void reload();
+
+ QFont font(const GpgME::Key &key, const QFont &baseFont) const;
+ QColor bgColor(const GpgME::Key &key) const;
+ QColor fgColor(const GpgME::Key &key) const;
+ QIcon icon(const GpgME::Key &key) const;
+
+ class Private;
+private:
+ Private *d;
+ static KeyFilterManager *mSelf;
+};
+
+}
+
+#endif // __KLEO_KEYFILTERMANAGER_H__
--- /dev/null
+/*
+ oidmap.h
+
+ This file is part of libkleopatra, the KDE keymanagement library
+ Copyright (c) 2004 Klarälvdalens Datakonsult AB
+
+ Libkleopatra is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ Libkleopatra 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#ifndef __KLEO_OIDMAP_H__
+#define __KLEO_OIDMAP_H__
+
+static const struct {
+ const char *name;
+ const char *oid;
+} oidmap[] = {
+ // keep them ordered by oid:
+ { "SP", "ST" }, // hack to show the Sphinx-required/desired SP for
+ // StateOrProvince, otherwise known as ST or even S
+ { "NameDistinguisher", "0.2.262.1.10.7.20" },
+ { "EMAIL", "1.2.840.113549.1.9.1" },
+ { "SN", "2.5.4.4" },
+ { "SerialNumber", "2.5.4.5" },
+ { "T", "2.5.4.12" },
+ { "D", "2.5.4.13" },
+ { "BC", "2.5.4.15" },
+ { "ADDR", "2.5.4.16" },
+ { "PC", "2.5.4.17" },
+ { "GN", "2.5.4.42" },
+ { "Pseudo", "2.5.4.65" },
+};
+static const unsigned int numOidMaps = sizeof oidmap / sizeof * oidmap;
+
+#endif // __KLEO_OIDMAP_H__
--- /dev/null
+/* -*- mode: c++; c-basic-offset:4 -*-
+ models/predicates.h
+
+ This file is part of Kleopatra, the KDE keymanager
+ Copyright (c) 2007 Klarälvdalens Datakonsult AB
+
+ Kleopatra is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Kleopatra 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#ifndef __KLEOPATRA_MODELS_PREDICATES_H__
+#define __KLEOPATRA_MODELS_PREDICATES_H__
+
+#include <gpgme++/key.h>
+
+#include <string>
+#include <cstring>
+#include <algorithm>
+#include <iterator>
+#include <functional>
+
+namespace Kleo
+{
+namespace _detail
+{
+
+inline int mystrcmp(const char *s1, const char *s2)
+{
+ using namespace std;
+ return s1 ? s2 ? strcmp(s1, s2) : 1 : s2 ? -1 : 0;
+}
+
+#define make_comparator_str_impl( Name, expr, cmp ) \
+ template <template <typename U> class Op> \
+ struct Name { \
+ typedef bool result_type; \
+ \
+ bool operator()( const char * lhs, const char * rhs ) const { \
+ return Op<int>()( cmp, 0 ); \
+ } \
+ \
+ bool operator()( const std::string & lhs, const std::string & rhs ) const { \
+ return operator()( lhs.c_str(), rhs.c_str() ); \
+ } \
+ bool operator()( const char * lhs, const std::string & rhs ) const { \
+ return operator()( lhs, rhs.c_str() ); \
+ } \
+ bool operator()( const std::string & lhs, const char * rhs ) const { \
+ return operator()( lhs.c_str(), rhs ); \
+ } \
+ \
+ template <typename T> \
+ bool operator()( const T & lhs, const T & rhs ) const { \
+ return operator()( (lhs expr), (rhs expr) ); \
+ } \
+ template <typename T> \
+ bool operator()( const T & lhs, const char * rhs ) const { \
+ return operator()( (lhs expr), rhs ); \
+ } \
+ template <typename T> \
+ bool operator()( const char * lhs, const T & rhs ) const { \
+ return operator()( lhs, (rhs expr) ); \
+ } \
+ template <typename T> \
+ bool operator()( const T & lhs, const std::string & rhs ) const { \
+ return operator()( (lhs expr), rhs ); \
+ } \
+ template <typename T> \
+ bool operator()( const std::string & lhs, const T & rhs ) const { \
+ return operator()( lhs, (rhs expr) ); \
+ } \
+ }
+
+#define make_comparator_str_fast( Name, expr ) \
+ make_comparator_str_impl( Name, expr, _detail::mystrcmp( lhs, rhs ) )
+#define make_comparator_str( Name, expr ) \
+ make_comparator_str_impl( Name, expr, qstricmp( lhs, rhs ) )
+
+make_comparator_str_fast(ByFingerprint, .primaryFingerprint());
+make_comparator_str_fast(ByKeyID, .keyID());
+make_comparator_str_fast(ByShortKeyID, .shortKeyID());
+make_comparator_str_fast(ByChainID, .chainID());
+
+template <typename T>
+void sort_by_fpr(T &t)
+{
+ std::sort(t.begin(), t.end(), ByFingerprint<std::less>());
+}
+
+template <typename T>
+void remove_duplicates_by_fpr(T &t)
+{
+ t.erase(std::unique(t.begin(), t.end(), ByFingerprint<std::equal_to>()), t.end());
+}
+
+template <typename T>
+T union_by_fpr(const T &t1, const T &t2)
+{
+ T result;
+ result.reserve(t1.size() + t2.size());
+ std::set_union(t1.begin(), t1.end(),
+ t2.begin(), t2.end(),
+ std::back_inserter(result),
+ ByFingerprint<std::less>());
+ return result;
+}
+
+template <typename T>
+T union_by_fpr_dirty(const T &t1, const T &t2)
+{
+ T cleaned(t1);
+ sort_by_fpr(cleaned);
+ remove_duplicates_by_fpr(cleaned);
+ return union_by_fpr(cleaned, t2);
+}
+
+template <typename T>
+void grep_protocol(T &t, GpgME::Protocol proto)
+{
+ t.erase(std::remove_if(t.begin(), t.end(),
+ [proto](const GpgME::Key &key) {
+ return key.protocol() != proto;
+ }), t.end());
+}
+
+template <typename T>
+bool any_protocol(const T &t, GpgME::Protocol proto)
+{
+ return std::any_of(t.cbegin(), t.cend(),
+ [proto](const GpgME::Key &key) {
+ return key.protocol() == proto;
+ });
+}
+
+template <typename T>
+bool all_protocol(const T &t, GpgME::Protocol proto)
+{
+ return std::all_of(t.cbegin(), t.cend(),
+ [proto](const GpgME::Key &key) {
+ return key.protocol() == proto;
+ });
+}
+
+template <typename T>
+bool none_of_protocol(const T &t, GpgME::Protocol proto)
+{
+ return std::none_of(t.cbegin(), t.cend(),
+ [proto](const GpgME::Key &key) {
+ return key.protocol() == proto;
+ });
+}
+
+template <typename T>
+void grep_secret(T &t)
+{
+ t.erase(std::remove_if(t.begin(), t.end(), std::mem_fn(&GpgME::Key::hasSecret)), t.end());
+}
+
+template <typename T>
+bool any_secret(const T &t)
+{
+ return std::any_of(t.cbegin(), t.cend(), std::mem_fn(&GpgME::Key::hasSecret));
+}
+
+template <typename T>
+bool all_secret(const T &t)
+{
+ return std::all_of(t.cbegin(), t.cend(), std::mem_fn(&GpgME::Key::hasSecret));
+}
+
+template <typename T>
+bool none_of_secret(const T &t)
+{
+ return std::none_of(t.cbegin(), t.cend(), std::mem_fn(&GpgME::Key::hasSecret));
+}
+
+template <typename T>
+void grep_can_encrypt(T &t)
+{
+ t.erase(std::remove_if(t.begin(), t.end(),
+ [](const GpgME::Key &key) {
+ return !key.canEncrypt();
+ }), t.end());
+}
+
+}
+}
+
+#endif /* __KLEOPATRA_MODELS_PREDICATES_H__ */
--- /dev/null
+/****************************************************************************
+** Copyright (C) 2001-2007 Klarälvdalens Datakonsult AB. All rights reserved.
+**
+** This file is part of the KD Tools library.
+**
+** This file may be distributed and/or modified under the terms of the
+** GNU General Public License version 2 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file.
+**
+** Licensees holding valid commercial KD Tools licenses may use this file in
+** accordance with the KD Tools Commercial License Agreement provided with
+** the Software.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+** Contact info@klaralvdalens-datakonsult.se if any conditions of this
+** licensing are not clear to you.
+**
+**********************************************************************/
+#ifndef __KDTOOLSCORE_STL_UTIL_H__
+#define __KDTOOLSCORE_STL_UTIL_H__
+
+#include <algorithm>
+#include <numeric>
+#include <utility>
+#include <iterator>
+#include <functional>
+
+namespace kdtools
+{
+template<typename _Iterator, typename UnaryPredicate>
+struct filter_iterator
+{
+ using value_type = typename std::iterator_traits<_Iterator>::value_type;
+ using reference = typename std::iterator_traits<_Iterator>::reference;
+ using pointer = typename std::iterator_traits<_Iterator>::pointer;
+ using difference_type = typename std::iterator_traits<_Iterator>::difference_type;
+
+ filter_iterator(UnaryPredicate pred, _Iterator it, _Iterator last) : it(it), last(last), pred(pred) {}
+ template<typename _OtherIter>
+ filter_iterator(const filter_iterator<_OtherIter, UnaryPredicate> &other) : it(other.it), last(other.last), pred(other.pred) {}
+ filter_iterator &operator++() { while (++it != last && !pred(*it)){} return *this; }
+ filter_iterator operator++(int) { auto retval = *this; while(++it != last && !pred(*it)){} return retval; }
+ bool operator==(filter_iterator other) const { return it == other.it; }
+ bool operator!=(filter_iterator other) const { return it != other.it; }
+ typename _Iterator::reference operator*() const { return *it; }
+private:
+ _Iterator it, last;
+ UnaryPredicate pred;
+};
+
+template<typename _Iterator, typename UnaryPredicate>
+filter_iterator<typename std::decay<_Iterator>::type,
+ UnaryPredicate>
+make_filter_iterator(UnaryPredicate &&pred, _Iterator &&it, _Iterator &&last)
+{
+ return filter_iterator<typename std::decay<_Iterator>::type,
+ UnaryPredicate>(
+ std::forward<UnaryPredicate>(pred),
+ std::forward<_Iterator>(it),
+ std::forward<_Iterator>(last));
+}
+
+template <typename InputIterator, typename OutputIterator, typename UnaryPredicate>
+OutputIterator copy_if(InputIterator first, InputIterator last, OutputIterator dest, UnaryPredicate pred)
+{
+ while (first != last) {
+ if (pred(*first)) {
+ *dest = *first;
+ ++dest;
+ }
+ ++first;
+ }
+ return dest;
+}
+
+template <typename OutputIterator, typename InputIterator, typename UnaryFunction, typename UnaryPredicate>
+void transform_if(InputIterator first, InputIterator last, OutputIterator dest, UnaryPredicate pred, UnaryFunction filter)
+{
+ for (; first != last; ++first) {
+ if (filter(*first)) {
+ *dest++ = pred(*first);
+ }
+ }
+}
+
+template <typename InputIterator, typename OutputIterator, typename Predicate>
+OutputIterator copy_1st_if(InputIterator first, InputIterator last, OutputIterator dest, Predicate pred)
+{
+ const auto trans = [](typename std::iterator_traits<InputIterator>::reference v) {
+ return std::get<0>(v);
+ };
+ kdtools::transform_if(first, last, dest, trans,
+ [&pred, &trans](typename std::iterator_traits<InputIterator>::reference v) {
+ return pred(trans(v));
+ });
+ return dest;
+}
+
+template <typename InputIterator, typename OutputIterator, typename Predicate>
+OutputIterator copy_2nd_if(InputIterator first, InputIterator last, OutputIterator dest, Predicate pred)
+{
+ const auto trans = [](typename std::iterator_traits<InputIterator>::reference v) {
+ return std::get<1>(v);
+ };
+ kdtools::transform_if(first, last, dest, trans,
+ [&pred, &trans](typename std::iterator_traits<InputIterator>::reference v) {
+ return pred(trans(v));
+ });
+ return dest;
+}
+
+
+template <typename OutputIterator, typename InputIterator, typename UnaryFunction>
+OutputIterator transform_1st(InputIterator first, InputIterator last, OutputIterator dest, UnaryFunction func)
+{
+ return std::transform(first, last, dest,
+ [func](typename std::iterator_traits<InputIterator>::reference v) {
+ return func(std::get<0>(v));
+ });
+}
+
+template <typename OutputIterator, typename InputIterator, typename UnaryFunction>
+OutputIterator transform_2nd(InputIterator first, InputIterator last, OutputIterator dest, UnaryFunction func)
+{
+ return std::transform(first, last, dest,
+ [func](typename std::iterator_traits<InputIterator>::reference v) {
+ return func(std::get<1>(v));
+ });
+}
+
+template <typename Value, typename InputIterator, typename UnaryPredicate>
+Value accumulate_if(InputIterator first, InputIterator last, UnaryPredicate filter, const Value &value = Value())
+{
+ return std::accumulate(make_filter_iterator(filter, first, last),
+ make_filter_iterator(filter, last, last), value);
+}
+
+template <typename Value, typename InputIterator, typename UnaryPredicate, typename BinaryOperation>
+Value accumulate_if(InputIterator first, InputIterator last, UnaryPredicate filter, const Value &value, BinaryOperation op)
+{
+ return std::accumulate(make_filter_iterator(filter, first, last),
+ make_filter_iterator(filter, last, last), value, op);
+}
+
+template <typename Value, typename InputIterator, typename UnaryFunction>
+Value accumulate_transform(InputIterator first, InputIterator last, UnaryFunction map, const Value &value = Value())
+{
+ return std::accumulate(first, last, value,
+ [map](Value lhs,
+ typename std::iterator_traits<InputIterator>::reference rhs)
+ {
+ return lhs + map(rhs);
+ });
+}
+
+template <typename Value, typename InputIterator, typename UnaryFunction, typename BinaryOperation>
+Value accumulate_transform(InputIterator first, InputIterator last, UnaryFunction map, const Value &value, BinaryOperation op)
+{
+ return std::accumulate(first, last, value,
+ [map, op](typename InputIterator::reference lhs,
+ typename InputIterator::reference rhs) {
+ return op(map(lhs), map(rhs));
+ });
+}
+
+template <typename Value, typename InputIterator, typename UnaryFunction, typename UnaryPredicate, typename BinaryOperation>
+Value accumulate_transform_if(InputIterator first, InputIterator last, UnaryFunction map, UnaryPredicate filter, const Value &value, BinaryOperation op)
+{
+ return accumulate_transform(make_filter_iterator(filter, first, last),
+ make_filter_iterator(filter, last, last),
+ map, value, op);
+}
+
+
+template <typename InputIterator, typename BinaryOperation>
+BinaryOperation for_each_adjacent_pair(InputIterator first, InputIterator last, BinaryOperation op)
+{
+ typedef typename std::iterator_traits<InputIterator>::value_type ValueType;
+ if (first == last) {
+ return op;
+ }
+ ValueType value = *first;
+ while (++first != last) {
+ ValueType tmp = *first;
+ op(value, tmp);
+ value = tmp;
+ }
+ return op;
+}
+
+
+template <typename InputIterator, typename OutputIterator1, typename OutputIterator2, typename UnaryPredicate>
+std::pair<OutputIterator1, OutputIterator2> separate_if(InputIterator first, InputIterator last, OutputIterator1 dest1, OutputIterator2 dest2, UnaryPredicate pred)
+{
+ while (first != last) {
+ if (pred(*first)) {
+ *dest1 = *first;
+ ++dest1;
+ } else {
+ *dest2 = *first;
+ ++dest2;
+ }
+ ++first;
+ }
+ return std::make_pair(dest1, dest2);
+}
+
+//@{
+/**
+ Versions of std::set_intersection optimized for ForwardIterator's
+*/
+template <typename ForwardIterator, typename ForwardIterator2, typename OutputIterator, typename BinaryPredicate>
+OutputIterator set_intersection(ForwardIterator first1, ForwardIterator last1, ForwardIterator2 first2, ForwardIterator2 last2, OutputIterator result)
+{
+ while (first1 != last1 && first2 != last2) {
+ if (*first1 < *first2) {
+ first1 = std::lower_bound(++first1, last1, *first2);
+ } else if (*first2 < *first1) {
+ first2 = std::lower_bound(++first2, last2, *first1);
+ } else {
+ *result = *first1;
+ ++first1;
+ ++first2;
+ ++result;
+ }
+ }
+ return result;
+}
+
+template <typename ForwardIterator, typename ForwardIterator2, typename OutputIterator, typename BinaryPredicate>
+OutputIterator set_intersection(ForwardIterator first1, ForwardIterator last1, ForwardIterator2 first2, ForwardIterator2 last2, OutputIterator result, BinaryPredicate pred)
+{
+ while (first1 != last1 && first2 != last2) {
+ if (pred(*first1, *first2)) {
+ first1 = std::lower_bound(++first1, last1, *first2, pred);
+ } else if (pred(*first2, *first1)) {
+ first2 = std::lower_bound(++first2, last2, *first1, pred);
+ } else {
+ *result = *first1;
+ ++first1;
+ ++first2;
+ ++result;
+ }
+ }
+ return result;
+}
+//@}
+
+template <typename ForwardIterator, typename ForwardIterator2, typename BinaryPredicate>
+bool set_intersects(ForwardIterator first1, ForwardIterator last1,
+ ForwardIterator2 first2, ForwardIterator2 last2,
+ BinaryPredicate pred)
+{
+ while (first1 != last1 && first2 != last2) {
+ if (pred(*first1, *first2)) {
+ first1 = std::lower_bound(++first1, last1, *first2, pred);
+ } else if (pred(*first2, *first1)) {
+ first2 = std::lower_bound(++first2, last2, *first1, pred);
+ } else {
+ return true;
+ }
+ }
+ return false;
+}
+
+//@{
+
+}
+
+#endif /* __KDTOOLSCORE_STL_UTIL_H__ */
+
--- /dev/null
+[Archive Definition #0]
+extensions-openpgp=tar
+extensions-cms=tar.gz,tgz
+id=tar
+Name=TAR (PGP®-compatible)
+Name[ca]=TAR (compatible amb PGP®)
+Name[ca@valencia]=TAR (compatible amb PGP®)
+Name[cs]=TAR (PGP® kompatibilní)
+Name[da]=TAR (PGP®-kompatibel)
+Name[de]=TAR (PGP®-kompatibel)
+Name[en_GB]=TAR (PGP®-compatible)
+Name[es]=TAR (compatible PGP®)
+Name[et]=TAR (PGP® ühilduv)
+Name[fi]=TAR (PGP-yhteensopiva)
+Name[fr]=TAR (compatible PGP®)
+Name[gl]=TAR (compatíbel con PGP®)
+Name[ia]=TAR (compatibile con PGP®)
+Name[it]=TAR (compatibile PGP®)
+Name[ja]=TAR (PGP® 互換)
+Name[nb]=TAR (PGP®-kompatibel)
+Name[nl]=TAR (PGP®-compatible)
+Name[nn]=TAR (PGP®-kompatibel)
+Name[pl]=TAR (zgodny z PGP®)
+Name[pt]=TAR (compatível com o PGP®)
+Name[pt_BR]=TAR (compatível com PGP®)
+Name[ru]=TAR (PGP®-совместимый)
+Name[sk]=TAR (PGP® kompatibilné)
+Name[sl]=TAR (združljiv s PGP)
+Name[sr]=тар (ПГП®-сагласно)
+Name[sr@ijekavian]=тар (ПГП®-сагласно)
+Name[sr@ijekavianlatin]=tar (PGP®-saglasno)
+Name[sr@latin]=tar (PGP®-saglasno)
+Name[sv]=TAR (fungerar med PGP®)
+Name[tr]=TAR (PGP®-uyumlu)
+Name[uk]=TAR (сумісні з PGP®)
+Name[x-test]=xxTAR (PGP®-compatible)xx
+Name[zh_CN]=TAR(PGP® 兼容)
+pack-command-openpgp=0|%I/gpgtar --openpgp --skip-crypto --output - --encrypt -T- --null --
+pack-command-cms=0|%I/gpgtar --cms --skip-crypto --output - --encrypt -T- --null --
+unpack-command-openpgp=%I/gpgtar --openpgp --skip-crypto --set-filename %f --decrypt -- -
+unpack-command-cms=%I/gpgtar --cms --skip-crypto --set-filename %f --decrypt -- -
+
+[Checksum Definition #0]
+file-patterns=sha1sum.txt,.*\\\\.sha1
+output-file=sha1sum.txt
+id=sha1sum
+Name=sha1sum
+Name[ca]=sha1sum
+Name[ca@valencia]=sha1sum
+Name[cs]=sha1sum
+Name[da]=sha1sum
+Name[de]=sha1sum
+Name[en_GB]=sha1sum
+Name[es]=sha1sum
+Name[et]=sha1sum
+Name[fi]=sha1sum
+Name[fr]=sha1sum
+Name[gl]=sha1sum
+Name[ia]=sha1sum
+Name[it]=sha1sum
+Name[ja]=sha1sum
+Name[nb]=sha1sum
+Name[nl]=sha1sum
+Name[nn]=sha1sum
+Name[pl]=sha1sum
+Name[pt]=sha1sum
+Name[pt_BR]=sha1sum
+Name[ru]=sha1sum
+Name[sk]=sha1sum
+Name[sl]=sha1sum
+Name[sr]=СХА‑1 сума
+Name[sr@ijekavian]=СХА‑1 сума
+Name[sr@ijekavianlatin]=SHA‑1 suma
+Name[sr@latin]=SHA‑1 suma
+Name[sv]=SHA1-summa
+Name[tr]=sha1sum
+Name[uk]=sha1sum
+Name[x-test]=xxsha1sumxx
+Name[zh_CN]=sha1sum
+create-command=0|%I/sha1sum -0 -
+verify-command=%I/sha1sum -c
+
+[Checksum Definition #1]
+file-patterns=sha256sum.txt,.*\\\\.sha256,.*\\\\.sha2
+output-file=sha256sum.txt
+id=sha256sum
+Name=sha256sum
+Name[ca]=sha256sum
+Name[ca@valencia]=sha256sum
+Name[cs]=sha256sum
+Name[da]=sha256sum
+Name[de]=sha256sum
+Name[en_GB]=sha256sum
+Name[es]=sha256sum
+Name[et]=sha256sum
+Name[fi]=sha256sum
+Name[fr]=sha256sum
+Name[gl]=sha256sum
+Name[ia]=sha256sum
+Name[it]=sha256sum
+Name[ja]=sha256sum
+Name[nb]=sha256sum
+Name[nl]=sha256sum
+Name[pl]=sha256sum
+Name[pt]=sha256sum
+Name[pt_BR]=sha256sum
+Name[ru]=sha256sum
+Name[sk]=sha256sum
+Name[sl]=sha256sum
+Name[sr]=СХА‑256 сума
+Name[sr@ijekavian]=СХА‑256 сума
+Name[sr@ijekavianlatin]=SHA‑256 suma
+Name[sr@latin]=SHA‑256 suma
+Name[sv]=SHA256-summa
+Name[tr]=sha256sum
+Name[uk]=sha256sum
+Name[x-test]=xxsha256sumxx
+Name[zh_CN]=sha256sum
+create-command=0|%I/sha256sum -0 -
+verify-command=%I/sha256sum -c
+
+[Checksum Definition #2]
+file-patterns=md5sum.txt,.*\\\\.md5
+output-file=md5sum.txt
+id=md5sum
+Name=md5sum
+Name[ca]=md5sum
+Name[ca@valencia]=md5sum
+Name[cs]=md5sum
+Name[da]=md5sum
+Name[de]=md5sum
+Name[en_GB]=md5sum
+Name[es]=md5sum
+Name[et]=md5sum
+Name[fi]=md5sum
+Name[fr]=md5sum
+Name[gl]=md5sum
+Name[ia]=md5sum
+Name[it]=md5sum
+Name[ja]=md5sum
+Name[nb]=md5sum
+Name[nl]=md5sum
+Name[nn]=md5sum
+Name[pl]=md5sum
+Name[pt]=md5sum
+Name[pt_BR]=md5sum
+Name[ru]=md5sum
+Name[sk]=md5sum
+Name[sl]=md5sum
+Name[sr]=МД5 сума
+Name[sr@ijekavian]=МД5 сума
+Name[sr@ijekavianlatin]=MD5 suma
+Name[sr@latin]=MD5 suma
+Name[sv]=MD5-summa
+Name[tr]=md5sum
+Name[uk]=md5sum
+Name[x-test]=xxmd5sumxx
+Name[zh_CN]=md5sum
+create-command=0|%I/md5sum -0 -
+verify-command=%I/md5sum -c
+
+[Key Filter #0]
+was-validated=false
+Name=Not Validated Key
+Name[ca]=Clau no validada
+Name[ca@valencia]=Clau no validada
+Name[cs]=Neověřený klíč
+Name[da]=Ikke godkendt nøgle
+Name[de]=Ungeprüfter Schlüssel
+Name[en_GB]=Not Validated Key
+Name[es]=Clave no validada
+Name[et]=Võtme ehtsus kontrollimatu
+Name[fi]=Varmistamaton avain
+Name[fr]=Clé non validée
+Name[gl]=Non hai chave validada
+Name[ia]=Clave non validate
+Name[it]=Chiave non convalidata
+Name[ja]=検証されていない鍵
+Name[nb]=Nøkkel ikke sjekket for gyldighet
+Name[nl]=Geen gevalideerde sleutel
+Name[nn]=Ikkje-validert nøkkel
+Name[pl]=Niesprawdzony klucz
+Name[pt]=Chave Não Validada
+Name[pt_BR]=Chave não validada
+Name[ru]=Непроверенный ключ
+Name[sk]=Neoverený kľúč
+Name[sl]=Nepreverjen ključ
+Name[sr]=Неоверени кључ
+Name[sr@ijekavian]=Неовјерени кључ
+Name[sr@ijekavianlatin]=Neovjereni ključ
+Name[sr@latin]=Neovereni ključ
+Name[sv]=Nyckeln har inte validerats
+Name[tr]=Geçerli Olmayan Anahtar
+Name[uk]=Неперевірений ключ
+Name[x-test]=xxNot Validated Keyxx
+Name[zh_CN]=未校验的密钥
+
+[Key Filter #1]
+was-validated=true
+is-expired=true
+is-revoked=false
+foreground-color=255,0,0
+Name=Expired Key
+Name[ca]=Clau expirada
+Name[ca@valencia]=Clau expirada
+Name[cs]=Klíč s prošlou platností
+Name[da]=Udløbet nøgle
+Name[de]=Abgelaufener Schlüssel
+Name[en_GB]=Expired Key
+Name[es]=Clave expirada
+Name[et]=Aegunud võti
+Name[fi]=Vanhentunut avain
+Name[fr]=Clé expirée
+Name[gl]=Chave caducada
+Name[ia]=Clave expirate
+Name[it]=Chiave scaduta
+Name[ja]=期限切れの鍵
+Name[nb]=Utgått nøkkel
+Name[nl]=Verlopen sleutel
+Name[nn]=Forelda nøkkel
+Name[pl]=Klucz, który utracił ważność
+Name[pt]=Chave Expirada
+Name[pt_BR]=Chave expirada
+Name[ru]=Устаревший ключ
+Name[sk]=Vypršaný kľúč
+Name[sl]=Pretečen ključ
+Name[sr]=Истекли кључ
+Name[sr@ijekavian]=Истекли кључ
+Name[sr@ijekavianlatin]=Istekli ključ
+Name[sr@latin]=Istekli ključ
+Name[sv]=Utgången nyckel
+Name[tr]=Süresi Dolmuş Anahtar
+Name[uk]=Застарілий ключ
+Name[x-test]=xxExpired Keyxx
+Name[zh_CN]=过期密钥
+
+[Key Filter #2]
+was-validated=true
+is-revoked=true
+Name=Revoked Key
+Name[ca]=Clau revocada
+Name[ca@valencia]=Clau revocada
+Name[cs]=Odvolaný klíč
+Name[da]=Fjernet nøgle
+Name[de]=Widerrufener Schlüssel
+Name[en_GB]=Revoked Key
+Name[es]=Clave revocada
+Name[et]=Tühistatud võti
+Name[fi]=Peruttu avain
+Name[fr]=Clé révoquée
+Name[gl]=Chave revogada
+Name[ia]=Clave revocate
+Name[it]=Chiave revocata
+Name[ja]=破棄された鍵
+Name[nb]=Tilbakekalt nøkkel
+Name[nl]=Ingetrokken sleutel
+Name[nn]=Tilbakekalla nøkkel
+Name[pl]=Odwołany klucz
+Name[pt]=Chave Revogada
+Name[pt_BR]=Chave revogada
+Name[ru]=Отозванный ключ
+Name[sk]=Kľúč so zrušenou platnosťou
+Name[sl]=Preklican ključ
+Name[sr]=Опозвани кључ
+Name[sr@ijekavian]=Опозвани кључ
+Name[sr@ijekavianlatin]=Opozvani ključ
+Name[sr@latin]=Opozvani ključ
+Name[sv]=Återkallad nyckel
+Name[tr]=İptal Edilmiş Anahtar
+Name[uk]=Анульований ключ
+Name[x-test]=xxRevoked Keyxx
+Name[zh_CN]=吊销的密钥
+
+[Key Filter #3]
+was-validated=true
+is-root-certificate=true
+is-validity=ultimate
+Name=Trusted Root Certificate
+Name[ca]=Certificat arrel de confiança
+Name[ca@valencia]=Certificat arrel de confiança
+Name[cs]=Důvěryhodný kořenový certifikát
+Name[da]=Root-certifikat der stoles på
+Name[de]=Vertrauenswürdiges Wurzelzertifikat
+Name[en_GB]=Trusted Root Certificate
+Name[es]=Certificado raíz confiable
+Name[et]=Usaldusväärne juursertifikaat
+Name[fi]=Luotettu juurivarmenne
+Name[fr]=Certificat racine de confiance
+Name[gl]=Certificado raíz autenticado
+Name[ia]=Certificato de radice con fide
+Name[it]=Certificato radice affidabile
+Name[ja]=信頼されたルート証明書
+Name[nb]=Tiltrodd rot-sertifikat
+Name[nl]=Vertrouwd hoofdcertificaat
+Name[nn]=Tiltrudd rotsertifikat
+Name[pl]=Zaufany główny certyfikat
+Name[pt]=Certificado de Raiz Fidedigno
+Name[pt_BR]=Certificado raiz confiável
+Name[ru]=Доверенный корневой сертификат
+Name[sk]=Dôveryhodný koreňový certifikát
+Name[sl]=Zaupanja vredno korensko potrdilo
+Name[sr]=Поуздани корени сертификат
+Name[sr@ijekavian]=Поуздани корјени сертификат
+Name[sr@ijekavianlatin]=Pouzdani korjeni sertifikat
+Name[sr@latin]=Pouzdani koreni sertifikat
+Name[sv]=Pålitligt rotcertifikat
+Name[tr]=Güvenilir Kök Sertifikası
+Name[uk]=Кореневий сертифікат з довірою
+Name[x-test]=xxTrusted Root Certificatexx
+Name[zh_CN]=可信任的根证书
+background-color=95,135,255
+font-bold=true
+
+
+[Key Filter #4]
+was-validated=true
+is-root-certificate=true
+is-not-validity=ultimate
+Name=Not Trusted Root Certificate
+Name[ca]=Certificat arrel sense confiança
+Name[ca@valencia]=Certificat arrel sense confiança
+Name[cs]=Nedůvěryhodný kořenový certifikát
+Name[da]=Root-certifikat der ikke stoles på
+Name[de]=Nicht vertrauenswürdiges Wurzelzertifikat
+Name[en_GB]=Not Trusted Root Certificate
+Name[es]=Certificado raíz no confiable
+Name[et]=Ebausaldusväärne juursertifikaat
+Name[fi]=Ei-luotettu juurivarmenne
+Name[fr]=Certificat racine non fiable
+Name[gl]=Certificado raíz non autenticado
+Name[ia]=Certificato de radice sin fide
+Name[it]=Certificato radice non affidabile
+Name[ja]=信頼されてないルート証明書
+Name[nb]=Ikke tiltrodd rot-sertifikat
+Name[nl]=Niet vertrouwd hoofdcertificaat
+Name[nn]=Ikkje tiltrudd rotsertifikat
+Name[pl]=Niezaufany główny certyfikat
+Name[pt]=Certificado de Raiz Não Fidedigno
+Name[pt_BR]=Certificado raiz não confiável
+Name[ru]=Недоверенный корневой сертификат
+Name[sk]=Nedôveryhodný koreňový certifikát
+Name[sl]=Korensko potrdilo, ki ni zaupanja vredno
+Name[sr]=Непоуздани корени сертификат
+Name[sr@ijekavian]=Непоуздани корјени сертификат
+Name[sr@ijekavianlatin]=Nepouzdani korjeni sertifikat
+Name[sr@latin]=Nepouzdani koreni sertifikat
+Name[sv]=Opålitligt rotcertifikat
+Name[tr]=Güvenilmeyen Kök Sertifikası
+Name[uk]=Кореневий сертифікат без довіри
+Name[x-test]=xxNot Trusted Root Certificatexx
+Name[zh_CN]=未信任的根证书
+
+[Key Filter #5]
+was-validated=true
+is-qualified=true
+font-bold=true
+Name=Keys for Qualified Signatures
+Name[ca]=Claus per a les signatures qualificades
+Name[ca@valencia]=Claus per a les signatures qualificades
+Name[cs]=Klíče kvalifikovaných podpisů
+Name[da]=Nøgler til kvalificerede signaturer
+Name[de]=Schlüssel für qualifizierte Signaturen
+Name[en_GB]=Keys for Qualified Signatures
+Name[es]=Claves para firmas cualificadas
+Name[et]=Kvalifitseeritud allkirjade võtmed
+Name[fi]=Hyväksyttyjen allekirjoitusten avaimet
+Name[fr]=Clés pour les signatures qualifiées
+Name[gl]=Chaves para sinaturas cualificadas
+Name[ia]=Claves pro signaturas qualificate
+Name[it]=Chiavi per le firme qualificate
+Name[ja]=適格電子署名用の鍵
+Name[nb]=Nøkler for kvalifiserte signaturer
+Name[nl]=Sleutels voor gekwalificeerde ondertekeningen
+Name[nn]=Nøklar for kvalifiserte signaturar
+Name[pl]=Klucze do podpisów kwalifikowanych
+Name[pt]=Chaves para as Assinaturas Qualificadas
+Name[pt_BR]=Chaves para assinaturas qualificadas
+Name[ru]=Ключи для подписывания
+Name[sk]=Kľúče pre kvalifikované podpisy
+Name[sl]=Ključi za kvalificirane podpise
+Name[sr]=Кључеви за важеће потписе
+Name[sr@ijekavian]=Кључеви за важеће потписе
+Name[sr@ijekavianlatin]=Ključevi za važeće potpise
+Name[sr@latin]=Ključevi za važeće potpise
+Name[sv]=Nycklar för kvalificerade signaturer
+Name[tr]=Yetkilendirilmiş İmzalar için Anahtarlar
+Name[uk]=Ключі підписів обмеженого використання
+Name[x-test]=xxKeys for Qualified Signaturesxx
+Name[zh_CN]=合格签名的密钥
+
+[Key Filter #6]
+was-validated=true
+Name=Other Keys
+Name[ast]=Otres claves
+Name[ca]=Altres claus
+Name[ca@valencia]=Altres claus
+Name[cs]=Ostatní klíče
+Name[da]=Andre nøgler
+Name[de]=Andere Schlüssel
+Name[en_GB]=Other Keys
+Name[es]=Otras claves
+Name[et]=Muud võtmed
+Name[fi]=Muut avaimet
+Name[fr]=Autres clés
+Name[gl]=Outras chaves
+Name[ia]=Altere claves
+Name[it]=Altre chiavi
+Name[ja]=その他の鍵
+Name[nb]=Andre nøkler
+Name[nl]=Andere sleutels
+Name[nn]=Andre nøklar
+Name[pl]=Inne klucze
+Name[pt]=Outras 'Cache'
+Name[pt_BR]=Outras chaves
+Name[ru]=Другие ключи
+Name[sk]=Ostatné kľuče
+Name[sl]=Drugi ključi
+Name[sr]=Остали кључеви
+Name[sr@ijekavian]=Остали кључеви
+Name[sr@ijekavianlatin]=Ostali ključevi
+Name[sr@latin]=Ostali ključevi
+Name[sv]=Andra nycklar
+Name[tr]=Diğer Anahtarlar
+Name[uk]=Інші ключі
+Name[x-test]=xxOther Keysxx
+Name[zh_CN]=其它密钥
+
+[Key Filter #7]
+is-cardkey=true
+Name=Smartcard Key
+Name[ca]=Clau de targeta intel·ligent
+Name[ca@valencia]=Clau de targeta intel·ligent
+Name[cs]=Klíč SmartCard
+Name[da]=Smartcard-nøgle
+Name[de]=Smartcard-Zertifikat
+Name[en_GB]=Smartcard Key
+Name[es]=Clave de tarjeta inteligente
+Name[et]=Kiipkaardi võti
+Name[fi]=Smartcard-avain
+Name[fr]=Clé SmartCard
+Name[gl]=Chave de smartcard
+Name[ia]=Clave de carta intelligente
+Name[it]=Chiave smartcard
+Name[ja]=スマートカードの鍵
+Name[nb]=Smartkort-nøkkel
+Name[nl]=Smartcard-sleutel
+Name[nn]=Smartkort-nøkkel
+Name[pl]=Klucz na karcie inteligentnej
+Name[pt]=Chave do 'Smartcard'
+Name[pt_BR]=Chave do Smartcard
+Name[ru]=Ключ смарт-карты
+Name[sk]=Smartcard kľúč
+Name[sl]=Ključ na pametni kartici
+Name[sr]=Кључ смарт-картица
+Name[sr@ijekavian]=Кључ смарт-картица
+Name[sr@ijekavianlatin]=Ključ smart-kartica
+Name[sr@latin]=Ključ smart-kartica
+Name[sv]=Smartkortsnyckel
+Name[tr]=Akıllı Kart Anahtarı
+Name[uk]=Ключ картки пам’яті
+Name[x-test]=xxSmartcard Keyxx
+Name[zh_CN]=智能卡密钥
+icon=smartcard
+
+[Key Filter #8]
+is-openpgp-key=true
+Name=OpenPGP Certificates
+Name[ca]=Certificats OpenPGP
+Name[ca@valencia]=Certificats OpenPGP
+Name[cs]=Certifikáty OpenPGP
+Name[da]=OpenPGP-certifikater
+Name[de]=OpenPGP-Zertifikate
+Name[en_GB]=OpenPGP Certificates
+Name[es]=Certificados OpenPGP
+Name[et]=OpenPGP sertifikaadid
+Name[fi]=OpenPGP-varmenteet
+Name[fr]=Certificats OpenPGP
+Name[gl]=Certificados OpenPGP
+Name[it]=Certificati OpenPGP
+Name[nl]=OpenPGP-certificaten
+Name[pl]=Certyfikaty OpenPGP
+Name[pt]=Certificados do OpenPGP
+Name[pt_BR]=Certificados OpenPGP
+Name[ru]=Сертификаты OpenPGP
+Name[sk]=Certifikáty OpenPGP
+Name[sl]=Potrdila OpenPGP
+Name[sr]=ОпенПГП сертификати
+Name[sr@ijekavian]=ОпенПГП сертификати
+Name[sr@ijekavianlatin]=OpenPGP sertifikati
+Name[sr@latin]=OpenPGP sertifikati
+Name[sv]=OpenPGP-certifikat
+Name[tr]=OpenPGP Sertifikaları
+Name[uk]=Сертифікати OpenPGP
+Name[x-test]=xxOpenPGP Certificatesxx
+Name[zh_CN]=OpenPGP 证书
+
+[Key Filter #9]
+is-openpgp-key=false
+Name=X509 Certificates
+Name[ca]=Certificats X509
+Name[ca@valencia]=Certificats X509
+Name[cs]=Certifikáty X509
+Name[da]=X509-certifikater
+Name[de]=X509-Zertifikate
+Name[en_GB]=X509 Certificates
+Name[es]=Certificados X509
+Name[et]=X509 sertifikaadid
+Name[fi]=X509-varmenteet
+Name[fr]=Certificats X509
+Name[gl]=Certificados X509
+Name[it]=Certificati X509
+Name[nl]=X509-certificaten
+Name[pl]=Certyfikaty X509
+Name[pt]=Certificados X509
+Name[pt_BR]=Certificados X.509
+Name[ru]=Сертификаты X.509
+Name[sk]=Certifikáty X509
+Name[sl]=Potrdila X509
+Name[sr]=Икс.509 сертификати
+Name[sr@ijekavian]=Икс.509 сертификати
+Name[sr@ijekavianlatin]=X.509 sertifikati
+Name[sr@latin]=X.509 sertifikati
+Name[sv]=X509-certifikat
+Name[tr]=X509 Sertifikaları
+Name[uk]=Сертифікати X509
+Name[x-test]=xxX509 Certificatesxx
+Name[zh_CN]=X509 证书
--- /dev/null
+[Archive Definition #0]
+extensions-openpgp=tar
+extensions-cms=tar.gz,tgz
+id=tar
+Name=TAR (PGP®-compatible)
+Name[ca]=TAR (compatible amb PGP®)
+Name[ca@valencia]=TAR (compatible amb PGP®)
+Name[cs]=TAR (PGP® kompatibilní)
+Name[da]=TAR (PGP®-kompatibel)
+Name[de]=TAR (PGP®-kompatibel)
+Name[en_GB]=TAR (PGP®-compatible)
+Name[es]=TAR (compatible PGP®)
+Name[et]=TAR (PGP® ühilduv)
+Name[fi]=TAR (PGP-yhteensopiva)
+Name[fr]=TAR (compatible PGP®)
+Name[gl]=TAR (compatíbel con PGP®)
+Name[ia]=TAR (compatibile con PGP®)
+Name[it]=TAR (compatibile PGP®)
+Name[ja]=TAR (PGP® 互換)
+Name[nb]=TAR (PGP®-kompatibel)
+Name[nl]=TAR (PGP®-compatible)
+Name[nn]=TAR (PGP®-kompatibel)
+Name[pl]=TAR (zgodny z PGP®)
+Name[pt]=TAR (compatível com o PGP®)
+Name[pt_BR]=TAR (compatível com PGP®)
+Name[ru]=TAR (PGP®-совместимый)
+Name[sk]=TAR (PGP® kompatibilné)
+Name[sl]=TAR (združljiv s PGP)
+Name[sr]=тар (ПГП®-сагласно)
+Name[sr@ijekavian]=тар (ПГП®-сагласно)
+Name[sr@ijekavianlatin]=tar (PGP®-saglasno)
+Name[sr@latin]=tar (PGP®-saglasno)
+Name[sv]=TAR (fungerar med PGP®)
+Name[tr]=TAR (PGP®-uyumlu)
+Name[uk]=TAR (сумісні з PGP®)
+Name[x-test]=xxTAR (PGP®-compatible)xx
+Name[zh_CN]=TAR(PGP® 兼容)
+pack-command-openpgp=0|tar cf - -T- --null
+pack-command-cms=0|tar cfz - -T- --null
+unpack-command-openpgp=tar xf -
+unpack-command-cms=tar xfz -
+
+## ZIP can't unpack from stdin, so commented out:
+#[Archive Definition #1]
+#extensions=zip
+#id=zip
+#Name=ZIP
+#Name[ca]=ZIP
+#Name[ca@valencia]=ZIP
+#Name[cs]=ZIP
+#Name[da]=ZIP
+#Name[de]=ZIP
+#Name[el]=ZIP
+#Name[en_GB]=ZIP
+#Name[eo]=ZIP
+#Name[es]=ZIP
+#Name[et]=ZIP
+#Name[fr]=ZIP
+#Name[gl]=ZIP
+#Name[it]=ZIP
+#Name[ja]=ZIP
+#Name[kk]=ZIP
+#Name[km]=ZIP
+#Name[lt]=ZIP
+#Name[lv]=ZIP
+#Name[nb]=ZIP
+#Name[nds]=Zip
+#Name[nl]=ZIP
+#Name[nn]=ZIP
+#Name[pa]=ZIP
+#Name[pl]=ZIP
+#Name[pt]=ZIP
+#Name[pt_BR]=ZIP
+#Name[sl]=ZIP
+#Name[sv]=ZIP
+#Name[tr]=ZIP
+#Name[uk]=ZIP
+#Name[x-test]=xxZIPxx
+#Name[zh_CN]=ZIP
+#Name[zh_TW]=ZIP
+#pack-command=zip -r - %f
+
+[Archive Definition #3]
+extensions=tar.bz2,tbz2
+id=bzip2
+Name=TAR (with bzip2 compression)
+Name[ca]=TAR (amb compressió bzip2)
+Name[ca@valencia]=TAR (amb compressió bzip2)
+Name[cs]=TAR (s bzip2 kompresí)
+Name[da]=TAR (med bzip2-komprimering)
+Name[de]=TAR (mit bzip2-Kompression)
+Name[en_GB]=TAR (with bzip2 compression)
+Name[es]=TAR (con compresión bzip2)
+Name[et]=TAR (bzip2 tihendusega)
+Name[fi]=TAR (bzip2-pakattu)
+Name[fr]=TAR (avec compression bzip2)
+Name[gl]=TAR (con compresión bzip2)
+Name[ia]=TAR (con compression bzip2)
+Name[it]=TAR (con compressione bzip2)
+Name[ja]=TAR (bzip2 圧縮)
+Name[nb]=TAR (med bzip2-komprimering)
+Name[nl]=TAR (met bzip2 compressie)
+Name[nn]=TAR (med bzip2-komprimering)
+Name[pl]=TAR (z kompresją bzip2)
+Name[pt]=TAR (com a compressão 'bzip2')
+Name[pt_BR]=TAR (compressão com bzip2)
+Name[ru]=TAR (со сжатием bzip2)
+Name[sk]=TAR (s bzip2 kompresiou)
+Name[sl]=TAR (s stiskanjem bzip2)
+Name[sr]=тар 1.1 (уз компресију бзип2)
+Name[sr@ijekavian]=тар 1.1 (уз компресију бзип2)
+Name[sr@ijekavianlatin]=tar 1.1 (uz kompresiju bzip2)
+Name[sr@latin]=tar 1.1 (uz kompresiju bzip2)
+Name[sv]=TAR (med komprimering av bzip2)
+Name[tr]=TAR (bzip2 sıkıştırmalı)
+Name[uk]=TAR (зі стисканням bzip2)
+Name[x-test]=xxTAR (with bzip2 compression)xx
+Name[zh_CN]=TAR(bzip2 压缩)
+pack-command=0|tar cfj - -T- --null
+unpack-command=tar xfj -
+
+[Checksum Definition #1]
+file-patterns=sha1sum.txt,.*\\\\.sha1
+output-file=sha1sum.txt
+id=sha1sum
+Name=sha1sum
+Name[ca]=sha1sum
+Name[ca@valencia]=sha1sum
+Name[cs]=sha1sum
+Name[da]=sha1sum
+Name[de]=sha1sum
+Name[en_GB]=sha1sum
+Name[es]=sha1sum
+Name[et]=sha1sum
+Name[fi]=sha1sum
+Name[fr]=sha1sum
+Name[gl]=sha1sum
+Name[ia]=sha1sum
+Name[it]=sha1sum
+Name[ja]=sha1sum
+Name[nb]=sha1sum
+Name[nl]=sha1sum
+Name[nn]=sha1sum
+Name[pl]=sha1sum
+Name[pt]=sha1sum
+Name[pt_BR]=sha1sum
+Name[ru]=sha1sum
+Name[sk]=sha1sum
+Name[sl]=sha1sum
+Name[sr]=СХА‑1 сума
+Name[sr@ijekavian]=СХА‑1 сума
+Name[sr@ijekavianlatin]=SHA‑1 suma
+Name[sr@latin]=SHA‑1 suma
+Name[sv]=SHA1-summa
+Name[tr]=sha1sum
+Name[uk]=sha1sum
+Name[x-test]=xxsha1sumxx
+Name[zh_CN]=sha1sum
+create-command=0|xargs -0 sha1sum --
+verify-command=sha1sum -c --
+
+[Checksum Definition #2]
+file-patterns=md5sum.txt,.*\\\\.md5
+output-file=md5sum.txt
+id=md5sum
+Name=md5sum
+Name[ca]=md5sum
+Name[ca@valencia]=md5sum
+Name[cs]=md5sum
+Name[da]=md5sum
+Name[de]=md5sum
+Name[en_GB]=md5sum
+Name[es]=md5sum
+Name[et]=md5sum
+Name[fi]=md5sum
+Name[fr]=md5sum
+Name[gl]=md5sum
+Name[ia]=md5sum
+Name[it]=md5sum
+Name[ja]=md5sum
+Name[nb]=md5sum
+Name[nl]=md5sum
+Name[nn]=md5sum
+Name[pl]=md5sum
+Name[pt]=md5sum
+Name[pt_BR]=md5sum
+Name[ru]=md5sum
+Name[sk]=md5sum
+Name[sl]=md5sum
+Name[sr]=МД5 сума
+Name[sr@ijekavian]=МД5 сума
+Name[sr@ijekavianlatin]=MD5 suma
+Name[sr@latin]=MD5 suma
+Name[sv]=MD5-summa
+Name[tr]=md5sum
+Name[uk]=md5sum
+Name[x-test]=xxmd5sumxx
+Name[zh_CN]=md5sum
+create-command=0|xargs -0 md5sum --
+verify-command=md5sum -c --
+
+[Checksum Definition #3]
+file-patterns=sha256sum.txt,.*\\\\.sha256,.*\\\\.sha2
+output-file=sha256sum.txt
+id=sha256sum
+Name=sha256sum
+Name[ca]=sha256sum
+Name[ca@valencia]=sha256sum
+Name[cs]=sha256sum
+Name[da]=sha256sum
+Name[de]=sha256sum
+Name[en_GB]=sha256sum
+Name[es]=sha256sum
+Name[et]=sha256sum
+Name[fi]=sha256sum
+Name[fr]=sha256sum
+Name[gl]=sha256sum
+Name[ia]=sha256sum
+Name[it]=sha256sum
+Name[ja]=sha256sum
+Name[nb]=sha256sum
+Name[nl]=sha256sum
+Name[pl]=sha256sum
+Name[pt]=sha256sum
+Name[pt_BR]=sha256sum
+Name[ru]=sha256sum
+Name[sk]=sha256sum
+Name[sl]=sha256sum
+Name[sr]=СХА‑256 сума
+Name[sr@ijekavian]=СХА‑256 сума
+Name[sr@ijekavianlatin]=SHA‑256 suma
+Name[sr@latin]=SHA‑256 suma
+Name[sv]=SHA256-summa
+Name[tr]=sha256sum
+Name[uk]=sha256sum
+Name[x-test]=xxsha256sumxx
+Name[zh_CN]=sha256sum
+create-command=0|xargs -0 sha256sum --
+verify-command=sha256sum -c --
+
+[Key Filter #0]
+was-validated=false
+Name=Not Validated Key
+Name[ca]=Clau no validada
+Name[ca@valencia]=Clau no validada
+Name[cs]=Neověřený klíč
+Name[da]=Ikke godkendt nøgle
+Name[de]=Ungeprüfter Schlüssel
+Name[en_GB]=Not Validated Key
+Name[es]=Clave no validada
+Name[et]=Võtme ehtsus kontrollimatu
+Name[fi]=Varmistamaton avain
+Name[fr]=Clé non validée
+Name[gl]=Non hai chave validada
+Name[ia]=Clave non validate
+Name[it]=Chiave non convalidata
+Name[ja]=検証されていない鍵
+Name[nb]=Nøkkel ikke sjekket for gyldighet
+Name[nl]=Geen gevalideerde sleutel
+Name[nn]=Ikkje-validert nøkkel
+Name[pl]=Niesprawdzony klucz
+Name[pt]=Chave Não Validada
+Name[pt_BR]=Chave não validada
+Name[ru]=Непроверенный ключ
+Name[sk]=Neoverený kľúč
+Name[sl]=Nepreverjen ključ
+Name[sr]=Неоверени кључ
+Name[sr@ijekavian]=Неовјерени кључ
+Name[sr@ijekavianlatin]=Neovjereni ključ
+Name[sr@latin]=Neovereni ključ
+Name[sv]=Nyckeln har inte validerats
+Name[tr]=Geçerli Olmayan Anahtar
+Name[uk]=Неперевірений ключ
+Name[x-test]=xxNot Validated Keyxx
+Name[zh_CN]=未校验的密钥
+
+[Key Filter #1]
+was-validated=true
+is-expired=true
+is-revoked=false
+foreground-color=255,0,0
+Name=Expired Key
+Name[ca]=Clau expirada
+Name[ca@valencia]=Clau expirada
+Name[cs]=Klíč s prošlou platností
+Name[da]=Udløbet nøgle
+Name[de]=Abgelaufener Schlüssel
+Name[en_GB]=Expired Key
+Name[es]=Clave expirada
+Name[et]=Aegunud võti
+Name[fi]=Vanhentunut avain
+Name[fr]=Clé expirée
+Name[gl]=Chave caducada
+Name[ia]=Clave expirate
+Name[it]=Chiave scaduta
+Name[ja]=期限切れの鍵
+Name[nb]=Utgått nøkkel
+Name[nl]=Verlopen sleutel
+Name[nn]=Forelda nøkkel
+Name[pl]=Klucz, który utracił ważność
+Name[pt]=Chave Expirada
+Name[pt_BR]=Chave expirada
+Name[ru]=Устаревший ключ
+Name[sk]=Vypršaný kľúč
+Name[sl]=Pretečen ključ
+Name[sr]=Истекли кључ
+Name[sr@ijekavian]=Истекли кључ
+Name[sr@ijekavianlatin]=Istekli ključ
+Name[sr@latin]=Istekli ključ
+Name[sv]=Utgången nyckel
+Name[tr]=Süresi Dolmuş Anahtar
+Name[uk]=Застарілий ключ
+Name[x-test]=xxExpired Keyxx
+Name[zh_CN]=过期密钥
+
+[Key Filter #2]
+was-validated=true
+is-revoked=true
+Name=Revoked Key
+Name[ca]=Clau revocada
+Name[ca@valencia]=Clau revocada
+Name[cs]=Odvolaný klíč
+Name[da]=Fjernet nøgle
+Name[de]=Widerrufener Schlüssel
+Name[en_GB]=Revoked Key
+Name[es]=Clave revocada
+Name[et]=Tühistatud võti
+Name[fi]=Peruttu avain
+Name[fr]=Clé révoquée
+Name[gl]=Chave revogada
+Name[ia]=Clave revocate
+Name[it]=Chiave revocata
+Name[ja]=破棄された鍵
+Name[nb]=Tilbakekalt nøkkel
+Name[nl]=Ingetrokken sleutel
+Name[nn]=Tilbakekalla nøkkel
+Name[pl]=Odwołany klucz
+Name[pt]=Chave Revogada
+Name[pt_BR]=Chave revogada
+Name[ru]=Отозванный ключ
+Name[sk]=Kľúč so zrušenou platnosťou
+Name[sl]=Preklican ključ
+Name[sr]=Опозвани кључ
+Name[sr@ijekavian]=Опозвани кључ
+Name[sr@ijekavianlatin]=Opozvani ključ
+Name[sr@latin]=Opozvani ključ
+Name[sv]=Återkallad nyckel
+Name[tr]=İptal Edilmiş Anahtar
+Name[uk]=Анульований ключ
+Name[x-test]=xxRevoked Keyxx
+Name[zh_CN]=吊销的密钥
+
+[Key Filter #3]
+was-validated=true
+is-root-certificate=true
+is-validity=ultimate
+Name=Trusted Root Certificate
+Name[ca]=Certificat arrel de confiança
+Name[ca@valencia]=Certificat arrel de confiança
+Name[cs]=Důvěryhodný kořenový certifikát
+Name[da]=Root-certifikat der stoles på
+Name[de]=Vertrauenswürdiges Wurzelzertifikat
+Name[en_GB]=Trusted Root Certificate
+Name[es]=Certificado raíz confiable
+Name[et]=Usaldusväärne juursertifikaat
+Name[fi]=Luotettu juurivarmenne
+Name[fr]=Certificat racine de confiance
+Name[gl]=Certificado raíz autenticado
+Name[ia]=Certificato de radice con fide
+Name[it]=Certificato radice affidabile
+Name[ja]=信頼されたルート証明書
+Name[nb]=Tiltrodd rot-sertifikat
+Name[nl]=Vertrouwd hoofdcertificaat
+Name[nn]=Tiltrudd rotsertifikat
+Name[pl]=Zaufany główny certyfikat
+Name[pt]=Certificado de Raiz Fidedigno
+Name[pt_BR]=Certificado raiz confiável
+Name[ru]=Доверенный корневой сертификат
+Name[sk]=Dôveryhodný koreňový certifikát
+Name[sl]=Zaupanja vredno korensko potrdilo
+Name[sr]=Поуздани корени сертификат
+Name[sr@ijekavian]=Поуздани корјени сертификат
+Name[sr@ijekavianlatin]=Pouzdani korjeni sertifikat
+Name[sr@latin]=Pouzdani koreni sertifikat
+Name[sv]=Pålitligt rotcertifikat
+Name[tr]=Güvenilir Kök Sertifikası
+Name[uk]=Кореневий сертифікат з довірою
+Name[x-test]=xxTrusted Root Certificatexx
+Name[zh_CN]=可信任的根证书
+background-color=95,135,255
+font-bold=true
+
+
+[Key Filter #4]
+was-validated=true
+is-root-certificate=true
+is-not-validity=ultimate
+Name=Not Trusted Root Certificate
+Name[ca]=Certificat arrel sense confiança
+Name[ca@valencia]=Certificat arrel sense confiança
+Name[cs]=Nedůvěryhodný kořenový certifikát
+Name[da]=Root-certifikat der ikke stoles på
+Name[de]=Nicht vertrauenswürdiges Wurzelzertifikat
+Name[en_GB]=Not Trusted Root Certificate
+Name[es]=Certificado raíz no confiable
+Name[et]=Ebausaldusväärne juursertifikaat
+Name[fi]=Ei-luotettu juurivarmenne
+Name[fr]=Certificat racine non fiable
+Name[gl]=Certificado raíz non autenticado
+Name[ia]=Certificato de radice sin fide
+Name[it]=Certificato radice non affidabile
+Name[ja]=信頼されてないルート証明書
+Name[nb]=Ikke tiltrodd rot-sertifikat
+Name[nl]=Niet vertrouwd hoofdcertificaat
+Name[nn]=Ikkje tiltrudd rotsertifikat
+Name[pl]=Niezaufany główny certyfikat
+Name[pt]=Certificado de Raiz Não Fidedigno
+Name[pt_BR]=Certificado raiz não confiável
+Name[ru]=Недоверенный корневой сертификат
+Name[sk]=Nedôveryhodný koreňový certifikát
+Name[sl]=Korensko potrdilo, ki ni zaupanja vredno
+Name[sr]=Непоуздани корени сертификат
+Name[sr@ijekavian]=Непоуздани корјени сертификат
+Name[sr@ijekavianlatin]=Nepouzdani korjeni sertifikat
+Name[sr@latin]=Nepouzdani koreni sertifikat
+Name[sv]=Opålitligt rotcertifikat
+Name[tr]=Güvenilmeyen Kök Sertifikası
+Name[uk]=Кореневий сертифікат без довіри
+Name[x-test]=xxNot Trusted Root Certificatexx
+Name[zh_CN]=未信任的根证书
+
+[Key Filter #5]
+was-validated=true
+is-qualified=true
+font-bold=true
+Name=Keys for Qualified Signatures
+Name[ca]=Claus per a les signatures qualificades
+Name[ca@valencia]=Claus per a les signatures qualificades
+Name[cs]=Klíče kvalifikovaných podpisů
+Name[da]=Nøgler til kvalificerede signaturer
+Name[de]=Schlüssel für qualifizierte Signaturen
+Name[en_GB]=Keys for Qualified Signatures
+Name[es]=Claves para firmas cualificadas
+Name[et]=Kvalifitseeritud allkirjade võtmed
+Name[fi]=Hyväksyttyjen allekirjoitusten avaimet
+Name[fr]=Clés pour les signatures qualifiées
+Name[gl]=Chaves para sinaturas cualificadas
+Name[ia]=Claves pro signaturas qualificate
+Name[it]=Chiavi per le firme qualificate
+Name[ja]=適格電子署名用の鍵
+Name[nb]=Nøkler for kvalifiserte signaturer
+Name[nl]=Sleutels voor gekwalificeerde ondertekeningen
+Name[nn]=Nøklar for kvalifiserte signaturar
+Name[pl]=Klucze do podpisów kwalifikowanych
+Name[pt]=Chaves para as Assinaturas Qualificadas
+Name[pt_BR]=Chaves para assinaturas qualificadas
+Name[ru]=Ключи для подписывания
+Name[sk]=Kľúče pre kvalifikované podpisy
+Name[sl]=Ključi za kvalificirane podpise
+Name[sr]=Кључеви за важеће потписе
+Name[sr@ijekavian]=Кључеви за важеће потписе
+Name[sr@ijekavianlatin]=Ključevi za važeće potpise
+Name[sr@latin]=Ključevi za važeće potpise
+Name[sv]=Nycklar för kvalificerade signaturer
+Name[tr]=Yetkilendirilmiş İmzalar için Anahtarlar
+Name[uk]=Ключі підписів обмеженого використання
+Name[x-test]=xxKeys for Qualified Signaturesxx
+Name[zh_CN]=合格签名的密钥
+
+[Key Filter #6]
+was-validated=true
+Name=Other Keys
+Name[ast]=Otres claves
+Name[ca]=Altres claus
+Name[ca@valencia]=Altres claus
+Name[cs]=Ostatní klíče
+Name[da]=Andre nøgler
+Name[de]=Andere Schlüssel
+Name[en_GB]=Other Keys
+Name[es]=Otras claves
+Name[et]=Muud võtmed
+Name[fi]=Muut avaimet
+Name[fr]=Autres clés
+Name[gl]=Outras chaves
+Name[ia]=Altere claves
+Name[it]=Altre chiavi
+Name[ja]=その他の鍵
+Name[nb]=Andre nøkler
+Name[nl]=Andere sleutels
+Name[nn]=Andre nøklar
+Name[pl]=Inne klucze
+Name[pt]=Outras 'Cache'
+Name[pt_BR]=Outras chaves
+Name[ru]=Другие ключи
+Name[sk]=Ostatné kľuče
+Name[sl]=Drugi ključi
+Name[sr]=Остали кључеви
+Name[sr@ijekavian]=Остали кључеви
+Name[sr@ijekavianlatin]=Ostali ključevi
+Name[sr@latin]=Ostali ključevi
+Name[sv]=Andra nycklar
+Name[tr]=Diğer Anahtarlar
+Name[uk]=Інші ключі
+Name[x-test]=xxOther Keysxx
+Name[zh_CN]=其它密钥
+
+[Key Filter #7]
+is-cardkey=true
+Name=Smartcard Key
+Name[ca]=Clau de targeta intel·ligent
+Name[ca@valencia]=Clau de targeta intel·ligent
+Name[cs]=Klíč SmartCard
+Name[da]=Smartcard-nøgle
+Name[de]=Smartcard-Zertifikat
+Name[en_GB]=Smartcard Key
+Name[es]=Clave de tarjeta inteligente
+Name[et]=Kiipkaardi võti
+Name[fi]=Smartcard-avain
+Name[fr]=Clé SmartCard
+Name[gl]=Chave de smartcard
+Name[ia]=Clave de carta intelligente
+Name[it]=Chiave smartcard
+Name[ja]=スマートカードの鍵
+Name[nb]=Smartkort-nøkkel
+Name[nl]=Smartcard-sleutel
+Name[nn]=Smartkort-nøkkel
+Name[pl]=Klucz na karcie inteligentnej
+Name[pt]=Chave do 'Smartcard'
+Name[pt_BR]=Chave do Smartcard
+Name[ru]=Ключ смарт-карты
+Name[sk]=Smartcard kľúč
+Name[sl]=Ključ na pametni kartici
+Name[sr]=Кључ смарт-картица
+Name[sr@ijekavian]=Кључ смарт-картица
+Name[sr@ijekavianlatin]=Ključ smart-kartica
+Name[sr@latin]=Ključ smart-kartica
+Name[sv]=Smartkortsnyckel
+Name[tr]=Akıllı Kart Anahtarı
+Name[uk]=Ключ картки пам’яті
+Name[x-test]=xxSmartcard Keyxx
+Name[zh_CN]=智能卡密钥
+icon=smartcard
+
+[Key Filter #8]
+is-openpgp-key=true
+Name=OpenPGP Certificates
+Name[ca]=Certificats OpenPGP
+Name[ca@valencia]=Certificats OpenPGP
+Name[cs]=Certifikáty OpenPGP
+Name[da]=OpenPGP-certifikater
+Name[de]=OpenPGP-Zertifikate
+Name[en_GB]=OpenPGP Certificates
+Name[es]=Certificados OpenPGP
+Name[et]=OpenPGP sertifikaadid
+Name[fi]=OpenPGP-varmenteet
+Name[fr]=Certificats OpenPGP
+Name[gl]=Certificados OpenPGP
+Name[it]=Certificati OpenPGP
+Name[nl]=OpenPGP-certificaten
+Name[pl]=Certyfikaty OpenPGP
+Name[pt]=Certificados do OpenPGP
+Name[pt_BR]=Certificados OpenPGP
+Name[ru]=Сертификаты OpenPGP
+Name[sk]=Certifikáty OpenPGP
+Name[sl]=Potrdila OpenPGP
+Name[sr]=ОпенПГП сертификати
+Name[sr@ijekavian]=ОпенПГП сертификати
+Name[sr@ijekavianlatin]=OpenPGP sertifikati
+Name[sr@latin]=OpenPGP sertifikati
+Name[sv]=OpenPGP-certifikat
+Name[tr]=OpenPGP Sertifikaları
+Name[uk]=Сертифікати OpenPGP
+Name[x-test]=xxOpenPGP Certificatesxx
+Name[zh_CN]=OpenPGP 证书
+
+[Key Filter #9]
+is-openpgp-key=false
+Name=X509 Certificates
+Name[ca]=Certificats X509
+Name[ca@valencia]=Certificats X509
+Name[cs]=Certifikáty X509
+Name[da]=X509-certifikater
+Name[de]=X509-Zertifikate
+Name[en_GB]=X509 Certificates
+Name[es]=Certificados X509
+Name[et]=X509 sertifikaadid
+Name[fi]=X509-varmenteet
+Name[fr]=Certificats X509
+Name[gl]=Certificados X509
+Name[it]=Certificati X509
+Name[nl]=X509-certificaten
+Name[pl]=Certyfikaty X509
+Name[pt]=Certificados X509
+Name[pt_BR]=Certificados X.509
+Name[ru]=Сертификаты X.509
+Name[sk]=Certifikáty X509
+Name[sl]=Potrdila X509
+Name[sr]=Икс.509 сертификати
+Name[sr@ijekavian]=Икс.509 сертификати
+Name[sr@ijekavianlatin]=X.509 sertifikati
+Name[sr@latin]=X.509 sertifikati
+Name[sv]=X509-certifikat
+Name[tr]=X509 Sertifikaları
+Name[uk]=Сертифікати X509
+Name[x-test]=xxX509 Certificatesxx
+Name[zh_CN]=X509 证书
--- /dev/null
+/* -*- mode: c++; c-basic-offset:4 -*-
+ models/keycache.cpp
+
+ This file is part of Kleopatra, the KDE keymanager
+ Copyright (c) 2007,2008 Klarälvdalens Datakonsult AB
+
+ Kleopatra is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Kleopatra 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#include "keycache.h"
+#include "keycache_p.h"
+
+#include "libkleo_debug.h"
+
+#include "kleo/predicates.h"
+#include "kleo/stl_util.h"
+#include "kleo/dn.h"
+#include "utils/filesystemwatcher.h"
+
+#include <gpgme++/error.h>
+#include <gpgme++/key.h>
+#include <gpgme++/decryptionresult.h>
+#include <gpgme++/verificationresult.h>
+#include <gpgme++/keylistresult.h>
+
+#include <qgpgme/protocol.h>
+#include <qgpgme/listallkeysjob.h>
+
+#include <gpg-error.h>
+
+//#include <kmime/kmime_header_parsing.h>
+
+#include <KLocalizedString>
+
+#include <QPointer>
+#include <QTimer>
+#include <QEventLoop>
+
+#include <utility>
+#include <algorithm>
+#include <functional>
+#include <iterator>
+
+using namespace Kleo;
+using namespace GpgME;
+using namespace KMime::Types;
+
+static const unsigned int hours2ms = 1000 * 60 * 60;
+
+//
+//
+// KeyCache
+//
+//
+
+namespace
+{
+
+make_comparator_str(ByEMail, .first.c_str());
+
+}
+
+class KeyCache::Private
+{
+ friend class ::Kleo::KeyCache;
+ KeyCache *const q;
+public:
+ explicit Private(KeyCache *qq) : q(qq), m_refreshInterval(1), m_initalized(false)
+ {
+ connect(&m_autoKeyListingTimer, &QTimer::timeout, q, [this]() { q->startKeyListing(); });
+ updateAutoKeyListingTimer();
+ }
+
+ ~Private()
+ {
+ if (m_refreshJob) {
+ m_refreshJob->cancel();
+ }
+ }
+
+ template < template <template <typename U> class Op> class Comp>
+ std::vector<Key>::const_iterator find(const std::vector<Key> &keys, const char *key) const
+ {
+ ensureCachePopulated();
+ const std::vector<Key>::const_iterator it =
+ std::lower_bound(keys.begin(), keys.end(), key, Comp<std::less>());
+ if (it == keys.end() || Comp<std::equal_to>()(*it, key)) {
+ return it;
+ } else {
+ return keys.end();
+ }
+ }
+
+ template < template <template <typename U> class Op> class Comp>
+ std::vector<Subkey>::const_iterator find(const std::vector<Subkey> &keys, const char *key) const
+ {
+ ensureCachePopulated();
+ const std::vector<Subkey>::const_iterator it =
+ std::lower_bound(keys.begin(), keys.end(), key, Comp<std::less>());
+ if (it == keys.end() || Comp<std::equal_to>()(*it, key)) {
+ return it;
+ } else {
+ return keys.end();
+ }
+ }
+
+ std::vector<Key>::const_iterator find_fpr(const char *fpr) const
+ {
+ return find<_detail::ByFingerprint>(by.fpr, fpr);
+ }
+
+ std::pair< std::vector< std::pair<std::string, Key> >::const_iterator,
+ std::vector< std::pair<std::string, Key> >::const_iterator >
+ find_email(const char *email) const
+ {
+ ensureCachePopulated();
+ return std::equal_range(by.email.begin(), by.email.end(),
+ email, ByEMail<std::less>());
+ }
+
+ std::vector<Key> find_mailbox(const QString &email, bool sign) const;
+
+ std::vector<Subkey>::const_iterator find_subkeyid(const char *subkeyid) const
+ {
+ return find<_detail::ByKeyID>(by.subkeyid, subkeyid);
+ }
+
+ std::vector<Key>::const_iterator find_keyid(const char *keyid) const
+ {
+ return find<_detail::ByKeyID>(by.keyid, keyid);
+ }
+
+ std::vector<Key>::const_iterator find_shortkeyid(const char *shortkeyid) const
+ {
+ return find<_detail::ByShortKeyID>(by.shortkeyid, shortkeyid);
+ }
+
+ std::pair <
+ std::vector<Key>::const_iterator,
+ std::vector<Key>::const_iterator
+ > find_subjects(const char *chain_id) const
+ {
+ ensureCachePopulated();
+ return std::equal_range(by.chainid.begin(), by.chainid.end(),
+ chain_id, _detail::ByChainID<std::less>());
+ }
+
+ void refreshJobDone(const KeyListResult &result);
+
+ void setRefreshInterval(int interval)
+ {
+ m_refreshInterval = interval;
+ updateAutoKeyListingTimer();
+ }
+
+ int refreshInterval() const
+ {
+ return m_refreshInterval;
+ }
+
+ void updateAutoKeyListingTimer()
+ {
+ setAutoKeyListingInterval(hours2ms * m_refreshInterval);
+ }
+ void setAutoKeyListingInterval(int ms)
+ {
+ m_autoKeyListingTimer.stop();
+ m_autoKeyListingTimer.setInterval(ms);
+ if (ms != 0) {
+ m_autoKeyListingTimer.start();
+ }
+ }
+
+ void ensureCachePopulated() const;
+
+private:
+ QPointer<RefreshKeysJob> m_refreshJob;
+ std::vector<std::shared_ptr<FileSystemWatcher> > m_fsWatchers;
+ QTimer m_autoKeyListingTimer;
+ int m_refreshInterval;
+
+ struct By {
+ std::vector<Key> fpr, keyid, shortkeyid, chainid;
+ std::vector< std::pair<std::string, Key> > email;
+ std::vector<Subkey> subkeyid;
+ } by;
+ bool m_initalized;
+};
+
+std::shared_ptr<const KeyCache> KeyCache::instance()
+{
+ return mutableInstance();
+}
+
+std::shared_ptr<KeyCache> KeyCache::mutableInstance()
+{
+ static std::weak_ptr<KeyCache> self;
+ try {
+ return std::shared_ptr<KeyCache>(self);
+ } catch (const std::bad_weak_ptr &) {
+ const std::shared_ptr<KeyCache> s(new KeyCache);
+ self = s;
+ return s;
+ }
+}
+
+KeyCache::KeyCache()
+ : QObject(), d(new Private(this))
+{
+
+}
+
+KeyCache::~KeyCache() {}
+
+void KeyCache::enableFileSystemWatcher(bool enable)
+{
+ for (const auto &i : qAsConst(d->m_fsWatchers)) {
+ i->setEnabled(enable);
+ }
+}
+
+void KeyCache::setRefreshInterval(int hours)
+{
+ d->setRefreshInterval(hours);
+}
+
+int KeyCache::refreshInterval() const
+{
+ return d->refreshInterval();
+}
+
+void KeyCache::reload(GpgME::Protocol /*proto*/)
+{
+ if (d->m_refreshJob) {
+ return;
+ }
+
+ d->updateAutoKeyListingTimer();
+
+ enableFileSystemWatcher(false);
+ d->m_refreshJob = new RefreshKeysJob(this);
+ connect(d->m_refreshJob.data(), &RefreshKeysJob::done,
+ this, [this](const GpgME::KeyListResult &r) {
+ d->refreshJobDone(r);
+ });
+ d->m_refreshJob->start();
+}
+
+void KeyCache::cancelKeyListing()
+{
+ if (!d->m_refreshJob) {
+ return;
+ }
+ d->m_refreshJob->cancel();
+}
+
+void KeyCache::addFileSystemWatcher(const std::shared_ptr<FileSystemWatcher> &watcher)
+{
+ if (!watcher) {
+ return;
+ }
+ d->m_fsWatchers.push_back(watcher);
+ connect(watcher.get(), &FileSystemWatcher::directoryChanged,
+ this, [this]() { startKeyListing(); });
+ connect(watcher.get(), &FileSystemWatcher::fileChanged,
+ this, [this]() { startKeyListing(); });
+
+ watcher->setEnabled(d->m_refreshJob == nullptr);
+}
+
+void KeyCache::Private::refreshJobDone(const KeyListResult &result)
+{
+ q->enableFileSystemWatcher(true);
+ m_initalized = true;
+ Q_EMIT q->keyListingDone(result);
+}
+
+const Key &KeyCache::findByFingerprint(const char *fpr) const
+{
+ const std::vector<Key>::const_iterator it = d->find_fpr(fpr);
+ if (it == d->by.fpr.end()) {
+ static const Key null;
+ return null;
+ } else {
+ return *it;
+ }
+}
+
+const Key &KeyCache::findByFingerprint(const std::string &fpr) const
+{
+ return findByFingerprint(fpr.c_str());
+}
+
+std::vector<Key> KeyCache::findByEMailAddress(const char *email) const
+{
+ const auto pair = d->find_email(email);
+ std::vector<Key> result;
+ result.reserve(std::distance(pair.first, pair.second));
+ std::transform(pair.first, pair.second,
+ std::back_inserter(result),
+ [](const std::pair<std::string, Key> &pair) {
+ return pair.second;
+ });
+ return result;
+}
+
+std::vector<Key> KeyCache::findByEMailAddress(const std::string &email) const
+{
+ return findByEMailAddress(email.c_str());
+}
+
+const Key &KeyCache::findByShortKeyID(const char *id) const
+{
+ const std::vector<Key>::const_iterator it = d->find_shortkeyid(id);
+ if (it != d->by.shortkeyid.end()) {
+ return *it;
+ }
+ static const Key null;
+ return null;
+}
+
+const Key &KeyCache::findByShortKeyID(const std::string &id) const
+{
+ return findByShortKeyID(id.c_str());
+}
+
+const Key &KeyCache::findByKeyIDOrFingerprint(const char *id) const
+{
+ {
+ // try by.fpr first:
+ const std::vector<Key>::const_iterator it = d->find_fpr(id);
+ if (it != d->by.fpr.end()) {
+ return *it;
+ }
+ }{
+ // try by.keyid next:
+ const std::vector<Key>::const_iterator it = d->find_keyid(id);
+ if (it != d->by.keyid.end()) {
+ return *it;
+ }
+ }
+ static const Key null;
+ return null;
+}
+
+const Key &KeyCache::findByKeyIDOrFingerprint(const std::string &id) const
+{
+ return findByKeyIDOrFingerprint(id.c_str());
+}
+
+std::vector<Key> KeyCache::findByKeyIDOrFingerprint(const std::vector<std::string> &ids) const
+{
+
+ std::vector<std::string> keyids;
+ std::remove_copy_if(ids.begin(), ids.end(), std::back_inserter(keyids),
+ [](const std::string &str) {
+ return !str.c_str() || !*str.c_str();
+ });
+
+ // this is just case-insensitive string search:
+ std::sort(keyids.begin(), keyids.end(), _detail::ByFingerprint<std::less>());
+
+ std::vector<Key> result;
+ result.reserve(keyids.size()); // dups shouldn't happen
+ d->ensureCachePopulated();
+
+ kdtools::set_intersection(d->by.fpr.begin(), d->by.fpr.end(),
+ keyids.begin(), keyids.end(),
+ std::back_inserter(result),
+ _detail::ByFingerprint<std::less>());
+ if (result.size() < keyids.size()) {
+ // note that By{Fingerprint,KeyID,ShortKeyID} define the same
+ // order for _strings_
+ kdtools::set_intersection(d->by.keyid.begin(), d->by.keyid.end(),
+ keyids.begin(), keyids.end(),
+ std::back_inserter(result),
+ _detail::ByKeyID<std::less>());
+ }
+ // duplicates shouldn't happen, but make sure nonetheless:
+ std::sort(result.begin(), result.end(), _detail::ByFingerprint<std::less>());
+ result.erase(std::unique(result.begin(), result.end(), _detail::ByFingerprint<std::equal_to>()), result.end());
+
+ // we skip looking into short key ids here, as it's highly
+ // unlikely they're used for this purpose. We might need to revise
+ // this decision, but only after testing.
+ return result;
+}
+
+std::vector<Subkey> KeyCache::findSubkeysByKeyID(const std::vector<std::string> &ids) const
+{
+ std::vector<std::string> sorted;
+ sorted.reserve(ids.size());
+ std::remove_copy_if(ids.begin(), ids.end(), std::back_inserter(sorted),
+ [](const std::string &str) {
+ return !str.c_str() || !*str.c_str();
+ });
+
+ std::sort(sorted.begin(), sorted.end(), _detail::ByKeyID<std::less>());
+
+ std::vector<Subkey> result;
+ d->ensureCachePopulated();
+ kdtools::set_intersection(d->by.subkeyid.begin(), d->by.subkeyid.end(),
+ sorted.begin(), sorted.end(),
+ std::back_inserter(result),
+ _detail::ByKeyID<std::less>());
+ return result;
+}
+
+std::vector<Key> KeyCache::findRecipients(const DecryptionResult &res) const
+{
+ std::vector<std::string> keyids;
+ Q_FOREACH (const DecryptionResult::Recipient &r, res.recipients())
+ if (const char *kid = r.keyID()) {
+ keyids.push_back(kid);
+ }
+ const std::vector<Subkey> subkeys = findSubkeysByKeyID(keyids);
+ std::vector<Key> result;
+ result.reserve(subkeys.size());
+ std::transform(subkeys.begin(), subkeys.end(), std::back_inserter(result),
+ std::mem_fn(&Subkey::parent));
+
+ std::sort(result.begin(), result.end(), _detail::ByFingerprint<std::less>());
+ result.erase(std::unique(result.begin(), result.end(), _detail::ByFingerprint<std::equal_to>()), result.end());
+ return result;
+}
+
+std::vector<Key> KeyCache::findSigners(const VerificationResult &res) const
+{
+ std::vector<std::string> fprs;
+ Q_FOREACH (const Signature &s, res.signatures())
+ if (const char *fpr = s.fingerprint()) {
+ fprs.push_back(fpr);
+ }
+ return findByKeyIDOrFingerprint(fprs);
+}
+
+std::vector<Key> KeyCache::findSigningKeysByMailbox(const QString &mb) const
+{
+ return d->find_mailbox(mb, true);
+}
+
+std::vector<Key> KeyCache::findEncryptionKeysByMailbox(const QString &mb) const
+{
+ return d->find_mailbox(mb, false);
+}
+
+namespace
+{
+#define DO( op, meth, meth2 ) if ( op key.meth() ) {} else { qDebug( "rejecting for signing: %s: %s", #meth2, key.primaryFingerprint() ); return false; }
+#define ACCEPT( meth ) DO( !!, meth, !meth )
+#define REJECT( meth ) DO( !, meth, meth )
+struct ready_for_signing : std::unary_function<Key, bool> {
+ bool operator()(const Key &key) const
+ {
+#if 1
+ ACCEPT(hasSecret);
+ ACCEPT(canReallySign);
+ REJECT(isRevoked);
+ REJECT(isExpired);
+ REJECT(isDisabled);
+ REJECT(isInvalid);
+ return true;
+#else
+ return key.hasSecret() &&
+ key.canReallySign() && !key.isRevoked() && !key.isExpired() && !key.isDisabled() && !key.isInvalid();
+#endif
+#undef DO
+ }
+};
+
+struct ready_for_encryption : std::unary_function<Key, bool> {
+#define DO( op, meth, meth2 ) if ( op key.meth() ) {} else { qDebug( "rejecting for encrypting: %s: %s", #meth2, key.primaryFingerprint() ); return false; }
+ bool operator()(const Key &key) const
+ {
+#if 1
+ ACCEPT(canEncrypt);
+ REJECT(isRevoked);
+ REJECT(isExpired);
+ REJECT(isDisabled);
+ REJECT(isInvalid);
+ return true;
+#else
+ return
+ key.canEncrypt() && !key.isRevoked() && !key.isExpired() && !key.isDisabled() && !key.isInvalid();
+#endif
+ }
+#undef DO
+#undef ACCEPT
+#undef REJECT
+};
+}
+
+std::vector<Key> KeyCache::Private::find_mailbox(const QString &email, bool sign) const
+{
+ if (email.isEmpty()) {
+ return std::vector<Key>();
+ }
+
+ const auto pair = find_email(email.toUtf8().constData());
+ std::vector<Key> result;
+ result.reserve(std::distance(pair.first, pair.second));
+ if (sign)
+ kdtools::copy_2nd_if(pair.first, pair.second,
+ std::back_inserter(result),
+ ready_for_signing());
+ else
+ kdtools::copy_2nd_if(pair.first, pair.second,
+ std::back_inserter(result),
+ ready_for_encryption());
+
+ return result;
+}
+
+std::vector<Key> KeyCache::findSubjects(const GpgME::Key &key, Options options) const
+{
+ return findSubjects(std::vector<Key>(1, key), options);
+}
+
+std::vector<Key> KeyCache::findSubjects(const std::vector<Key> &keys, Options options) const
+{
+ return findSubjects(keys.begin(), keys.end(), options);
+}
+
+std::vector<Key> KeyCache::findSubjects(std::vector<Key>::const_iterator first, std::vector<Key>::const_iterator last, Options options) const
+{
+
+ if (first == last) {
+ return std::vector<Key>();
+ }
+
+ std::vector<Key> result;
+ while (first != last) {
+ const auto pair = d->find_subjects(first->primaryFingerprint());
+ result.insert(result.end(), pair.first, pair.second);
+ ++first;
+ }
+
+ std::sort(result.begin(), result.end(), _detail::ByFingerprint<std::less>());
+ result.erase(std::unique(result.begin(), result.end(), _detail::ByFingerprint<std::equal_to>()), result.end());
+
+ if (options & RecursiveSearch) {
+ const std::vector<Key> furtherSubjects = findSubjects(result, options);
+ std::vector<Key> combined;
+ combined.reserve(result.size() + furtherSubjects.size());
+ std::merge(result.begin(), result.end(),
+ furtherSubjects.begin(), furtherSubjects.end(),
+ std::back_inserter(combined),
+ _detail::ByFingerprint<std::less>());
+ combined.erase(std::unique(combined.begin(), combined.end(), _detail::ByFingerprint<std::equal_to>()), combined.end());
+ result.swap(combined);
+ }
+
+ return result;
+}
+
+std::vector<Key> KeyCache::findIssuers(const Key &key, Options options) const
+{
+
+ if (key.isNull()) {
+ return std::vector<Key>();
+ }
+
+ std::vector<Key> result;
+ if (options & IncludeSubject) {
+ result.push_back(key);
+ }
+
+ if (key.isRoot()) {
+ return result;
+ }
+
+ const Key &issuer = findByFingerprint(key.chainID());
+
+ if (issuer.isNull()) {
+ return result;
+ }
+
+ result.push_back(issuer);
+
+ if (!(options & RecursiveSearch)) {
+ return result;
+ }
+
+ while (!result.back().isNull() && !result.back().isRoot()) {
+ result.push_back(findByFingerprint(result.back().chainID()));
+ }
+
+ if (result.back().isNull()) {
+ result.pop_back();
+ }
+
+ return result;
+}
+
+std::vector<Key> KeyCache::findIssuers(const std::vector<Key> &keys, Options options) const
+{
+ return findIssuers(keys.begin(), keys.end(), options);
+}
+
+std::vector<Key> KeyCache::findIssuers(std::vector<Key>::const_iterator first, std::vector<Key>::const_iterator last, Options options) const
+{
+
+ if (first == last) {
+ return std::vector<Key>();
+ }
+
+ // extract chain-ids, identifying issuers:
+ std::vector<const char *> chainIDs;
+ chainIDs.reserve(last - first);
+ kdtools::transform_if(first, last, std::back_inserter(chainIDs),
+ std::mem_fn(&Key::chainID),
+ [](const Key &key) { return !key.isRoot(); });
+ std::sort(chainIDs.begin(), chainIDs.end(), _detail::ByFingerprint<std::less>());
+
+ const auto lastUniqueChainID = std::unique(chainIDs.begin(), chainIDs.end(), _detail::ByFingerprint<std::less>());
+
+ std::vector<Key> result;
+ result.reserve(lastUniqueChainID - chainIDs.begin());
+
+ d->ensureCachePopulated();
+
+ kdtools::set_intersection(d->by.fpr.begin(), d->by.fpr.end(),
+ chainIDs.begin(), lastUniqueChainID,
+ std::back_inserter(result),
+ _detail::ByFingerprint<std::less>());
+
+ if (options & IncludeSubject) {
+ const unsigned int rs = result.size();
+ result.insert(result.end(), first, last);
+ std::inplace_merge(result.begin(), result.begin() + rs, result.end(),
+ _detail::ByFingerprint<std::less>());
+ }
+
+ if (!(options & RecursiveSearch)) {
+ return result;
+ }
+
+ const std::vector<Key> l2result = findIssuers(result, options & ~IncludeSubject);
+
+ const unsigned long result_size = result.size();
+ result.insert(result.end(), l2result.begin(), l2result.end());
+ std::inplace_merge(result.begin(), result.begin() + result_size, result.end(),
+ _detail::ByFingerprint<std::less>());
+ return result;
+}
+
+static std::string email(const UserID &uid)
+{
+ const std::string email = uid.email();
+ if (email.empty()) {
+ return DN(uid.id())[QStringLiteral("EMAIL")].trimmed().toUtf8().constData();
+ }
+ if (email[0] == '<' && email[email.size() - 1] == '>') {
+ return email.substr(1, email.size() - 2);
+ } else {
+ return email;
+ }
+}
+
+static std::vector<std::string> emails(const Key &key)
+{
+ std::vector<std::string> emails;
+ Q_FOREACH (const UserID &uid, key.userIDs()) {
+ const std::string e = email(uid);
+ if (!e.empty()) {
+ emails.push_back(e);
+ }
+ }
+ std::sort(emails.begin(), emails.end(), ByEMail<std::less>());
+ emails.erase(std::unique(emails.begin(), emails.end(), ByEMail<std::equal_to>()), emails.end());
+ return emails;
+}
+
+void KeyCache::remove(const Key &key)
+{
+ if (key.isNull()) {
+ return;
+ }
+
+ const char *fpr = key.primaryFingerprint();
+ if (!fpr) {
+ return;
+ }
+
+ Q_EMIT aboutToRemove(key);
+
+ {
+ const auto range = std::equal_range(d->by.fpr.begin(), d->by.fpr.end(), fpr,
+ _detail::ByFingerprint<std::less>());
+ d->by.fpr.erase(range.first, range.second);
+ }
+
+ if (const char *keyid = key.keyID()) {
+ const auto range = std::equal_range(d->by.keyid.begin(), d->by.keyid.end(), keyid,
+ _detail::ByKeyID<std::less>());
+ const auto it = std::remove_if(range.first, range.second,
+ [fpr](const GpgME::Key &key) {
+ return _detail::ByFingerprint<std::equal_to>()(fpr, key);
+ });
+ d->by.keyid.erase(it, range.second);
+ }
+
+ if (const char *shortkeyid = key.shortKeyID()) {
+ const auto range = std::equal_range(d->by.shortkeyid.begin(), d->by.shortkeyid.end(), shortkeyid,
+ _detail::ByShortKeyID<std::less>());
+ const auto it = std::remove_if(range.first, range.second,
+ [fpr](const GpgME::Key &key) {
+ return _detail::ByFingerprint<std::equal_to>()(fpr, key);
+ });
+ d->by.shortkeyid.erase(it, range.second);
+ }
+
+ if (const char *chainid = key.chainID()) {
+ const auto range = std::equal_range(d->by.chainid.begin(), d->by.chainid.end(), chainid,
+ _detail::ByChainID<std::less>());
+ const auto range2 = std::equal_range(range.first, range.second, fpr, _detail::ByFingerprint<std::less>());
+ d->by.chainid.erase(range2.first, range2.second);
+ }
+
+ Q_FOREACH (const std::string &email, emails(key)) {
+ const auto range = std::equal_range(d->by.email.begin(), d->by.email.end(), email, ByEMail<std::less>());
+ const auto it = std::remove_if(range.first, range.second,
+ [fpr](const std::pair<std::string, Key> &pair) {
+ return qstricmp(fpr, pair.second.primaryFingerprint()) == 0;
+ });
+ d->by.email.erase(it, range.second);
+ }
+
+ Q_FOREACH (const Subkey &subkey, key.subkeys()) {
+ if (const char *keyid = subkey.keyID()) {
+ const auto range = std::equal_range(d->by.subkeyid.begin(), d->by.subkeyid.end(), keyid,
+ _detail::ByKeyID<std::less>());
+ const auto range2 = std::equal_range(range.first, range.second, fpr, _detail::ByKeyID<std::less>());
+ d->by.subkeyid.erase(range2.first, range2.second);
+ }
+ }
+}
+
+void KeyCache::remove(const std::vector<Key> &keys)
+{
+ for (const Key &key : keys) {
+ remove(key);
+ }
+}
+
+const std::vector<GpgME::Key> &KeyCache::keys() const
+{
+ d->ensureCachePopulated();
+ return d->by.fpr;
+}
+
+std::vector<Key> KeyCache::secretKeys() const
+{
+ std::vector<Key> keys = this->keys();
+ keys.erase(std::remove_if(keys.begin(), keys.end(),
+ [](const Key &key) { return !key.hasSecret(); }),
+ keys.end());
+ return keys;
+}
+
+void KeyCache::refresh(const std::vector<Key> &keys)
+{
+ // make this better...
+ clear();
+ insert(keys);
+}
+
+void KeyCache::insert(const Key &key)
+{
+ insert(std::vector<Key>(1, key));
+}
+
+namespace
+{
+
+template <
+ template <template <typename T> class Op> class T1,
+ template <template <typename T> class Op> class T2
+ > struct lexicographically
+{
+ typedef bool result_type;
+
+ template <typename U, typename V>
+ bool operator()(const U &lhs, const V &rhs) const
+ {
+ return
+ T1<std::less>()(lhs, rhs) ||
+ (T1<std::equal_to>()(lhs, rhs) &&
+ T2<std::less>()(lhs, rhs))
+ ;
+ }
+};
+
+}
+
+void KeyCache::insert(const std::vector<Key> &keys)
+{
+
+ // 1. remove those with empty fingerprints:
+ std::vector<Key> sorted;
+ sorted.reserve(keys.size());
+ std::remove_copy_if(keys.begin(), keys.end(),
+ std::back_inserter(sorted),
+ [](const Key &key) {
+ auto fp = key.primaryFingerprint();
+ return !fp|| !*fp;
+ });
+
+ Q_FOREACH (const Key &key, sorted) {
+ remove(key); // this is sub-optimal, but makes implementation from here on much easier
+ }
+
+ // 2. sort by fingerprint:
+ std::sort(sorted.begin(), sorted.end(), _detail::ByFingerprint<std::less>());
+
+ // 2a. insert into fpr index:
+ std::vector<Key> by_fpr;
+ by_fpr.reserve(sorted.size() + d->by.fpr.size());
+ std::merge(sorted.begin(), sorted.end(),
+ d->by.fpr.begin(), d->by.fpr.end(),
+ std::back_inserter(by_fpr),
+ _detail::ByFingerprint<std::less>());
+
+ // 3. build email index:
+ std::vector< std::pair<std::string, Key> > pairs;
+ pairs.reserve(sorted.size());
+ Q_FOREACH (const Key &key, sorted) {
+ const std::vector<std::string> emails = ::emails(key);
+ for (const std::string &e : emails) {
+ pairs.push_back(std::make_pair(e, key));
+ }
+ }
+ std::sort(pairs.begin(), pairs.end(), ByEMail<std::less>());
+
+ // 3a. insert into email index:
+ std::vector< std::pair<std::string, Key> > by_email;
+ by_email.reserve(pairs.size() + d->by.email.size());
+ std::merge(pairs.begin(), pairs.end(),
+ d->by.email.begin(), d->by.email.end(),
+ std::back_inserter(by_email),
+ ByEMail<std::less>());
+
+ // 3.5: stable-sort by chain-id (effectively lexicographically<ByChainID,ByFingerprint>)
+ std::stable_sort(sorted.begin(), sorted.end(), _detail::ByChainID<std::less>());
+
+ // 3.5a: insert into chain-id index:
+ std::vector<Key> nonroot;
+ nonroot.reserve(sorted.size());
+ std::vector<Key> by_chainid;
+ by_chainid.reserve(sorted.size() + d->by.chainid.size());
+ std::copy_if(sorted.cbegin(), sorted.cend(),
+ std::back_inserter(nonroot),
+ [](const Key &key) { return !key.isRoot(); });
+ std::merge(nonroot.cbegin(), nonroot.cend(),
+ d->by.chainid.cbegin(), d->by.chainid.cend(),
+ std::back_inserter(by_chainid),
+ lexicographically<_detail::ByChainID, _detail::ByFingerprint>());
+
+ // 4. sort by key id:
+ std::sort(sorted.begin(), sorted.end(), _detail::ByKeyID<std::less>());
+
+ // 4a. insert into keyid index:
+ std::vector<Key> by_keyid;
+ by_keyid.reserve(sorted.size() + d->by.keyid.size());
+ std::merge(sorted.begin(), sorted.end(),
+ d->by.keyid.begin(), d->by.keyid.end(),
+ std::back_inserter(by_keyid),
+ _detail::ByKeyID<std::less>());
+
+ // 5. sort by short key id:
+ std::sort(sorted.begin(), sorted.end(), _detail::ByShortKeyID<std::less>());
+
+ // 5a. insert into short keyid index:
+ std::vector<Key> by_shortkeyid;
+ by_shortkeyid.reserve(sorted.size() + d->by.shortkeyid.size());
+ std::merge(sorted.begin(), sorted.end(),
+ d->by.shortkeyid.begin(), d->by.shortkeyid.end(),
+ std::back_inserter(by_shortkeyid),
+ _detail::ByShortKeyID<std::less>());
+
+ // 6. build subkey ID index:
+ std::vector<Subkey> subkeys;
+ subkeys.reserve(sorted.size());
+ Q_FOREACH (const Key &key, sorted)
+ Q_FOREACH (const Subkey &subkey, key.subkeys()) {
+ subkeys.push_back(subkey);
+ }
+
+ // 6a sort by key id:
+ std::sort(subkeys.begin(), subkeys.end(), _detail::ByKeyID<std::less>());
+
+ // 6b. insert into subkey ID index:
+ std::vector<Subkey> by_subkeyid;
+ by_email.reserve(subkeys.size() + d->by.subkeyid.size());
+ std::merge(subkeys.begin(), subkeys.end(),
+ d->by.subkeyid.begin(), d->by.subkeyid.end(),
+ std::back_inserter(by_subkeyid),
+ _detail::ByKeyID<std::less>());
+
+ // now commit (well, we already removed keys...)
+ by_fpr.swap(d->by.fpr);
+ by_keyid.swap(d->by.keyid);
+ by_shortkeyid.swap(d->by.shortkeyid);
+ by_email.swap(d->by.email);
+ by_subkeyid.swap(d->by.subkeyid);
+ by_chainid.swap(d->by.chainid);
+
+ for (const Key &key : qAsConst(sorted)) {
+ Q_EMIT added(key);
+ }
+
+ Q_EMIT keysMayHaveChanged();
+}
+
+void KeyCache::clear()
+{
+ d->by = Private::By();
+}
+
+//
+//
+// RefreshKeysJob
+//
+//
+
+class KeyCache::RefreshKeysJob::Private
+{
+ RefreshKeysJob *const q;
+public:
+ Private(KeyCache *cache, RefreshKeysJob *qq);
+ void doStart();
+ Error startKeyListing(GpgME::Protocol protocol);
+ void listAllKeysJobDone(const KeyListResult &res, const std::vector<Key> &nextKeys)
+ {
+ std::vector<Key> keys;
+ keys.reserve(m_keys.size() + nextKeys.size());
+ if (m_keys.empty()) {
+ keys = nextKeys;
+ } else
+ std::merge(m_keys.begin(), m_keys.end(),
+ nextKeys.begin(), nextKeys.end(),
+ std::back_inserter(keys),
+ _detail::ByFingerprint<std::less>());
+ m_keys.swap(keys);
+ jobDone(res);
+ }
+ void emitDone(const KeyListResult &result);
+ void updateKeyCache();
+
+ QPointer<KeyCache> m_cache;
+ QVector<QGpgME::ListAllKeysJob*> m_jobsPending;
+ std::vector<Key> m_keys;
+ KeyListResult m_mergedResult;
+ bool m_canceled;
+
+private:
+ void jobDone(const KeyListResult &res);
+};
+
+KeyCache::RefreshKeysJob::Private::Private(KeyCache *cache, RefreshKeysJob *qq)
+ : q(qq)
+ , m_cache(cache)
+ , m_canceled(false)
+{
+ Q_ASSERT(m_cache);
+}
+
+void KeyCache::RefreshKeysJob::Private::jobDone(const KeyListResult &result)
+{
+ if (m_canceled) {
+ q->deleteLater();
+ return;
+ }
+
+ QObject *const sender = q->sender();
+ if (sender) {
+ sender->disconnect(q);
+ }
+ Q_ASSERT(m_jobsPending.size() > 0);
+ m_jobsPending.removeOne(qobject_cast<QGpgME::ListAllKeysJob*>(sender));
+ m_mergedResult.mergeWith(result);
+ if (m_jobsPending.size() > 0) {
+ return;
+ }
+ updateKeyCache();
+ emitDone(m_mergedResult);
+}
+
+void KeyCache::RefreshKeysJob::Private::emitDone(const KeyListResult &res)
+{
+ q->deleteLater();
+ Q_EMIT q->done(res);
+}
+
+KeyCache::RefreshKeysJob::RefreshKeysJob(KeyCache *cache, QObject *parent) : QObject(parent), d(new Private(cache, this))
+{
+}
+
+KeyCache::RefreshKeysJob::~RefreshKeysJob() {}
+
+void KeyCache::RefreshKeysJob::start()
+{
+ QTimer::singleShot(0, this, [this](){ d->doStart(); });
+}
+
+void KeyCache::RefreshKeysJob::cancel()
+{
+ d->m_canceled = true;
+ std::for_each(d->m_jobsPending.begin(), d->m_jobsPending.end(),
+ std::mem_fn(&QGpgME::ListAllKeysJob::slotCancel));
+ Q_EMIT canceled();
+}
+
+void KeyCache::RefreshKeysJob::Private::doStart()
+{
+ if (m_canceled) {
+ q->deleteLater();
+ return;
+ }
+
+ Q_ASSERT(m_jobsPending.size() == 0);
+ m_mergedResult.mergeWith(KeyListResult(startKeyListing(GpgME::OpenPGP)));
+ m_mergedResult.mergeWith(KeyListResult(startKeyListing(GpgME::CMS)));
+
+ if (m_jobsPending.size() != 0) {
+ return;
+ }
+
+ const bool hasError = m_mergedResult.error() || m_mergedResult.error().isCanceled();
+ emitDone(hasError ? m_mergedResult : KeyListResult(Error(GPG_ERR_UNSUPPORTED_OPERATION)));
+}
+
+void KeyCache::RefreshKeysJob::Private::updateKeyCache()
+{
+ if (!m_cache || m_canceled) {
+ q->deleteLater();
+ return;
+ }
+
+ std::vector<Key> cachedKeys = m_cache->initialized() ? m_cache->keys() : std::vector<Key>();
+ std::sort(cachedKeys.begin(), cachedKeys.end(), _detail::ByFingerprint<std::less>());
+ std::vector<Key> keysToRemove;
+ std::set_difference(cachedKeys.begin(), cachedKeys.end(),
+ m_keys.begin(), m_keys.end(),
+ std::back_inserter(keysToRemove),
+ _detail::ByFingerprint<std::less>());
+ m_cache->remove(keysToRemove);
+ m_cache->refresh(m_keys);
+}
+
+Error KeyCache::RefreshKeysJob::Private::startKeyListing(GpgME::Protocol proto)
+{
+ const auto * const protocol = (proto == GpgME::OpenPGP) ? QGpgME::openpgp() : QGpgME::smime();
+ if (!protocol) {
+ return Error();
+ }
+ QGpgME::ListAllKeysJob *const job = protocol->listAllKeysJob(/*includeSigs*/false, /*validate*/true);
+ if (!job) {
+ return Error();
+ }
+
+#if 0
+ aheinecke: 2017.01.12:
+
+ For unkown reasons the new style connect fails at runtime
+ over library borders into QGpgME from the GpgME repo
+ when cross compiled for Windows and default arguments
+ are used in the Signal.
+
+ This was tested with gcc 4.9 (Mingw 3.0.2) and we could not
+ find an explanation for this. So until this is fixed or we understand
+ the problem we need to use the old style connect for QGpgME signals.
+
+ The new style connect of the canceled signal right below
+ works fine.
+
+ connect(job, &QGpgME::ListAllKeysJob::result,
+ q, [this](const GpgME::KeyListResult &res, const std::vector<GpgME::Key> &keys) {
+ listAllKeysJobDone(res, keys);
+ });
+#endif
+ connect(job, SIGNAL(result(GpgME::KeyListResult,std::vector<GpgME::Key>)),
+ q, SLOT(listAllKeysJobDone(GpgME::KeyListResult,std::vector<GpgME::Key>)));
+
+ connect(q, &RefreshKeysJob::canceled, job, &QGpgME::Job::slotCancel);
+
+ const Error error = job->start(true);
+
+ if (!error && !error.isCanceled()) {
+ m_jobsPending.push_back(job);
+ }
+ return error;
+}
+
+bool KeyCache::initialized() const
+{
+ return d->m_initalized;
+}
+
+void KeyCache::Private::ensureCachePopulated() const
+{
+ if (!m_initalized) {
+ q->startKeyListing();
+ QEventLoop loop;
+ loop.connect(q, &KeyCache::keyListingDone,
+ &loop, &QEventLoop::quit);
+ qCDebug(LIBKLEO_LOG) << "Waiting for keycache.";
+ loop.exec();
+ qCDebug(LIBKLEO_LOG) << "Keycache available.";
+ }
+}
+
+#include "moc_keycache_p.cpp"
+#include "moc_keycache.cpp"
+
--- /dev/null
+/* -*- mode: c++; c-basic-offset:4 -*-
+ models/keycache.h
+
+ This file is part of Kleopatra, the KDE keymanager
+ Copyright (c) 2007 Klarälvdalens Datakonsult AB
+
+ Kleopatra is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Kleopatra 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#ifndef __KLEOPATRA_MODELS_KEYCACHE_H__
+#define __KLEOPATRA_MODELS_KEYCACHE_H__
+
+#include <QObject>
+
+#include <kleo_export.h>
+
+#include <gpgme++/global.h>
+
+#include <memory>
+#include <string>
+#include <vector>
+
+namespace GpgME
+{
+class Key;
+class DecryptionResult;
+class VerificationResult;
+class KeyListResult;
+class Subkey;
+}
+
+namespace KMime
+{
+namespace Types
+{
+class Mailbox;
+}
+}
+
+namespace Kleo
+{
+
+class FileSystemWatcher;
+
+class KLEO_EXPORT KeyCache : public QObject
+{
+ Q_OBJECT
+protected:
+ explicit KeyCache();
+public:
+ static std::shared_ptr<const KeyCache> instance();
+ static std::shared_ptr<KeyCache> mutableInstance();
+
+ ~KeyCache();
+
+ void insert(const GpgME::Key &key);
+ void insert(const std::vector<GpgME::Key> &keys);
+
+ void refresh(const std::vector<GpgME::Key> &keys);
+
+ void remove(const GpgME::Key &key);
+ void remove(const std::vector<GpgME::Key> &keys);
+
+ void addFileSystemWatcher(const std::shared_ptr<FileSystemWatcher> &watcher);
+
+ void enableFileSystemWatcher(bool enable);
+
+ void setRefreshInterval(int hours);
+ int refreshInterval() const;
+
+ const std::vector<GpgME::Key> &keys() const;
+ std::vector<GpgME::Key> secretKeys() const;
+
+ const GpgME::Key &findByFingerprint(const char *fpr) const;
+ const GpgME::Key &findByFingerprint(const std::string &fpr) const;
+
+ std::vector<GpgME::Key> findByEMailAddress(const char *email) const;
+ std::vector<GpgME::Key> findByEMailAddress(const std::string &email) const;
+
+ const GpgME::Key &findByShortKeyID(const char *id) const;
+ const GpgME::Key &findByShortKeyID(const std::string &id) const;
+
+ const GpgME::Key &findByKeyIDOrFingerprint(const char *id) const;
+ const GpgME::Key &findByKeyIDOrFingerprint(const std::string &id) const;
+
+ std::vector<GpgME::Key> findByKeyIDOrFingerprint(const std::vector<std::string> &ids) const;
+
+ std::vector<GpgME::Subkey> findSubkeysByKeyID(const std::vector<std::string> &ids) const;
+
+ std::vector<GpgME::Key> findRecipients(const GpgME::DecryptionResult &result) const;
+ std::vector<GpgME::Key> findSigners(const GpgME::VerificationResult &result) const;
+
+ std::vector<GpgME::Key> findSigningKeysByMailbox(const QString &mb) const;
+ std::vector<GpgME::Key> findEncryptionKeysByMailbox(const QString &mb) const;
+
+ enum Option {
+ NoOption = 0,
+ RecursiveSearch = 1,
+ IncludeSubject = 2
+ };
+ Q_DECLARE_FLAGS(Options, Option)
+
+ std::vector<GpgME::Key> findSubjects(const GpgME::Key &key, Options option = RecursiveSearch) const;
+ std::vector<GpgME::Key> findSubjects(const std::vector<GpgME::Key> &keys, Options options = RecursiveSearch) const;
+ std::vector<GpgME::Key> findSubjects(std::vector<GpgME::Key>::const_iterator first, std::vector<GpgME::Key>::const_iterator last, Options options = RecursiveSearch) const;
+
+ std::vector<GpgME::Key> findIssuers(const GpgME::Key &key, Options options = RecursiveSearch) const;
+ std::vector<GpgME::Key> findIssuers(const std::vector<GpgME::Key> &keys, Options options = RecursiveSearch) const;
+ std::vector<GpgME::Key> findIssuers(std::vector<GpgME::Key>::const_iterator first, std::vector<GpgME::Key>::const_iterator last, Options options = RecursiveSearch) const;
+
+ /** Check if at least one keylisting was finished. */
+ bool initialized() const;
+
+public Q_SLOTS:
+ void clear();
+ void startKeyListing(GpgME::Protocol proto = GpgME::UnknownProtocol)
+ {
+ reload(proto);
+ }
+ void reload(GpgME::Protocol proto = GpgME::UnknownProtocol);
+ void cancelKeyListing();
+
+Q_SIGNALS:
+ //void changed( const GpgME::Key & key );
+ void aboutToRemove(const GpgME::Key &key);
+ void added(const GpgME::Key &key);
+ void keyListingDone(const GpgME::KeyListResult &result);
+ void keysMayHaveChanged();
+
+private:
+ class RefreshKeysJob;
+
+ class Private;
+ QScopedPointer<Private> const d;
+};
+
+}
+
+Q_DECLARE_OPERATORS_FOR_FLAGS(Kleo::KeyCache::Options)
+
+#endif /* __KLEOPATRA_MODELS_KEYCACHE_H__ */
--- /dev/null
+/* -*- mode: c++; c-basic-offset:4 -*-
+ models/keycache_p.h
+
+ This file is part of Kleopatra, the KDE keymanager
+ Copyright (c) 2008 Klarälvdalens Datakonsult AB
+
+ Kleopatra is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Kleopatra 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#ifndef __KLEOPATRA_KEYCACHE_P_H__
+#define __KLEOPATRA_KEYCACHE_P_H__
+
+#include "keycache.h"
+
+namespace GpgME
+{
+class KeyListResult;
+}
+
+namespace Kleo
+{
+
+class KeyCache::RefreshKeysJob : public QObject
+{
+ Q_OBJECT
+public:
+
+ explicit RefreshKeysJob(KeyCache *cache, QObject *parent = nullptr);
+ ~RefreshKeysJob();
+
+ void start();
+ void cancel();
+
+Q_SIGNALS:
+ void done(const GpgME::KeyListResult &);
+ void canceled();
+
+private:
+ class Private;
+ friend class Private;
+ Private * const d;
+ Q_PRIVATE_SLOT(d, void listAllKeysJobDone(GpgME::KeyListResult, std::vector<GpgME::Key>))
+};
+}
+
+#endif // __KLEOPATRA_KEYCACHE_P_H__
--- /dev/null
+/* -*- mode: c++; c-basic-offset:4 -*-
+ models/keylistmodel.cpp
+
+ This file is part of Kleopatra, the KDE keymanager
+ Copyright (c) 2007 Klarälvdalens Datakonsult AB
+
+ Kleopatra is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Kleopatra 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#include "keylistmodel.h"
+#include "keycache.h"
+#include "kleo/predicates.h"
+#include "kleo/keyfiltermanager.h"
+#include "kleo/keyfilter.h"
+#include "utils/formatting.h"
+
+#ifdef KLEO_MODEL_TEST
+# include "modeltest.h"
+#endif
+
+#include <Libkleo/KeyFilterManager>
+#include <Libkleo/KeyFilter>
+
+#include <KLocalizedString>
+
+#include <QFont>
+#include <QColor>
+#include <QHash>
+#include <QIcon>
+#include <QDate>
+#include <gpgme++/key.h>
+
+#ifndef Q_MOC_RUN // QTBUG-22829
+#include <boost/graph/topological_sort.hpp>
+#include <boost/graph/adjacency_list.hpp>
+#endif
+
+#include <algorithm>
+#include <vector>
+#include <map>
+#include <set>
+#include <iterator>
+
+using namespace GpgME;
+using namespace Kleo;
+
+Q_DECLARE_METATYPE(GpgME::Key)
+
+class AbstractKeyListModel::Private
+{
+public:
+ Private() :
+ m_toolTipOptions(Formatting::Validity),
+ m_useKeyCache(false),
+ m_secretOnly(false) {}
+ int m_toolTipOptions;
+ mutable QHash<const char *, QVariant> prettyEMailCache;
+ bool m_useKeyCache;
+ bool m_secretOnly;
+};
+AbstractKeyListModel::AbstractKeyListModel(QObject *p)
+ : QAbstractItemModel(p), KeyListModelInterface(), d(new Private)
+{
+
+}
+
+AbstractKeyListModel::~AbstractKeyListModel() {}
+
+void AbstractKeyListModel::setToolTipOptions(int opts)
+{
+ d->m_toolTipOptions = opts;
+}
+
+int AbstractKeyListModel::toolTipOptions() const
+{
+ return d->m_toolTipOptions;
+}
+
+Key AbstractKeyListModel::key(const QModelIndex &idx) const
+{
+ if (idx.isValid()) {
+ return doMapToKey(idx);
+ } else {
+ return Key::null;
+ }
+}
+
+std::vector<Key> AbstractKeyListModel::keys(const QList<QModelIndex> &indexes) const
+{
+ std::vector<Key> result;
+ result.reserve(indexes.size());
+ std::transform(indexes.begin(), indexes.end(),
+ std::back_inserter(result),
+ [this](const QModelIndex &idx) {
+ return this->key(idx);
+ });
+ result.erase(std::unique(result.begin(), result.end(), _detail::ByFingerprint<std::equal_to>()), result.end());
+ return result;
+}
+
+QModelIndex AbstractKeyListModel::index(const Key &key, int col) const
+{
+ if (key.isNull() || col < 0 || col >= NumColumns) {
+ return QModelIndex();
+ } else {
+ return doMapFromKey(key, col);
+ }
+}
+
+QList<QModelIndex> AbstractKeyListModel::indexes(const std::vector<Key> &keys) const
+{
+ QList<QModelIndex> result;
+ result.reserve(keys.size());
+ std::transform(keys.begin(), keys.end(),
+ std::back_inserter(result),
+ [this](const Key &key) {
+ return this->index(key);
+ });
+ return result;
+}
+
+void AbstractKeyListModel::setKeys(const std::vector<Key> &keys)
+{
+ clear();
+ addKeys(keys);
+}
+
+QModelIndex AbstractKeyListModel::addKey(const Key &key)
+{
+ const std::vector<Key> vec(1, key);
+ const QList<QModelIndex> l = doAddKeys(vec);
+ return l.empty() ? QModelIndex() : l.front();
+}
+
+void AbstractKeyListModel::removeKey(const Key &key)
+{
+ if (key.isNull()) {
+ return;
+ }
+ doRemoveKey(key);
+ d->prettyEMailCache.remove(key.primaryFingerprint());
+}
+
+QList<QModelIndex> AbstractKeyListModel::addKeys(const std::vector<Key> &keys)
+{
+ std::vector<Key> sorted;
+ sorted.reserve(keys.size());
+ std::remove_copy_if(keys.begin(), keys.end(),
+ std::back_inserter(sorted),
+ std::mem_fn(&Key::isNull));
+ std::sort(sorted.begin(), sorted.end(), _detail::ByFingerprint<std::less>());
+ return doAddKeys(sorted);
+}
+
+void AbstractKeyListModel::clear()
+{
+ beginResetModel();
+ doClear();
+ d->prettyEMailCache.clear();
+ endResetModel();
+}
+
+int AbstractKeyListModel::columnCount(const QModelIndex &) const
+{
+ return NumColumns;
+}
+
+QVariant AbstractKeyListModel::headerData(int section, Qt::Orientation o, int role) const
+{
+ if (o == Qt::Horizontal)
+ if (role == Qt::DisplayRole || role == Qt::EditRole || role == Qt::ToolTipRole)
+ switch (section) {
+ case PrettyName: return i18n("Name");
+ case PrettyEMail: return i18n("E-Mail");
+ case Validity: return i18n("Validity");
+ case ValidFrom: return i18n("Valid From");
+ case ValidUntil: return i18n("Valid Until");
+ case TechnicalDetails: return i18n("Details");
+ case ShortKeyID: return i18n("Key-ID");
+ case NumColumns:;
+ }
+ return QVariant();
+}
+
+static QVariant returnIfValid(const QColor &t)
+{
+ if (t.isValid()) {
+ return t;
+ } else {
+ return QVariant();
+ }
+}
+
+static QVariant returnIfValid(const QIcon &t)
+{
+ if (!t.isNull()) {
+ return t;
+ } else {
+ return QVariant();
+ }
+}
+
+QVariant AbstractKeyListModel::data(const QModelIndex &index, int role) const
+{
+ const Key key = this->key(index);
+ if (key.isNull()) {
+ return QVariant();
+ }
+
+ const int column = index.column();
+
+ if (role == Qt::DisplayRole || role == Qt::EditRole) {
+ switch (column) {
+ case PrettyName:
+ return Formatting::prettyName(key);
+ case PrettyEMail:
+ if (const char *const fpr = key.primaryFingerprint()) {
+ const QHash<const char *, QVariant>::const_iterator it = d->prettyEMailCache.constFind(fpr);
+ if (it != d->prettyEMailCache.constEnd()) {
+ return *it;
+ } else {
+ return d->prettyEMailCache[fpr] = Formatting::prettyEMail(key);
+ }
+ } else {
+ return QVariant();
+ }
+ case Validity:
+ return Formatting::complianceStringShort(key);
+ case ValidFrom:
+ if (role == Qt::EditRole) {
+ return Formatting::creationDate(key);
+ } else {
+ return Formatting::creationDateString(key);
+ }
+ case ValidUntil:
+ if (role == Qt::EditRole) {
+ return Formatting::expirationDate(key);
+ } else {
+ return Formatting::expirationDateString(key);
+ }
+ case TechnicalDetails:
+ return Formatting::type(key);
+ case ShortKeyID:
+ return QString::fromLatin1(key.shortKeyID());
+ case Summary:
+ return Formatting::summaryLine(key);
+ case NumColumns:
+ break;
+ }
+ } else if (role == Qt::ToolTipRole) {
+ return Formatting::toolTip(key, toolTipOptions());
+ } else if (role == Qt::FontRole) {
+ return KeyFilterManager::instance()->font(key, (column == ShortKeyID) ? QFont(QStringLiteral("courier")) : QFont());
+ } else if (role == Qt::DecorationRole) {
+ return column == Icon ? returnIfValid(KeyFilterManager::instance()->icon(key)) : QVariant();
+ } else if (role == Qt::BackgroundRole) {
+ return returnIfValid(KeyFilterManager::instance()->bgColor(key));
+ } else if (role == Qt::ForegroundRole) {
+ return returnIfValid(KeyFilterManager::instance()->fgColor(key));
+ } else if (role == FingerprintRole) {
+ return QString::fromLatin1(key.primaryFingerprint());
+ } else if (role == KeyRole) {
+ return QVariant::fromValue(key);
+ }
+ return QVariant();
+}
+
+namespace
+{
+template <typename Base>
+class TableModelMixin : public Base
+{
+public:
+ explicit TableModelMixin(QObject *p = nullptr) : Base(p) {}
+ ~TableModelMixin() {}
+
+ using Base::index;
+ QModelIndex index(int row, int column, const QModelIndex &pidx = QModelIndex()) const override
+ {
+ return this->hasIndex(row, column, pidx) ? this->createIndex(row, column, nullptr) : QModelIndex();
+ }
+
+private:
+ QModelIndex parent(const QModelIndex &) const override
+ {
+ return QModelIndex();
+ }
+ bool hasChildren(const QModelIndex &pidx) const override
+ {
+ return (pidx.model() == this || !pidx.isValid()) && this->rowCount(pidx) > 0 && this->columnCount(pidx) > 0;
+ }
+};
+
+class FlatKeyListModel
+#ifndef Q_MOC_RUN
+ : public TableModelMixin<AbstractKeyListModel>
+#else
+ : public AbstractKeyListModel
+#endif
+{
+ Q_OBJECT
+public:
+ explicit FlatKeyListModel(QObject *parent = nullptr);
+ ~FlatKeyListModel();
+
+ int rowCount(const QModelIndex &pidx) const override
+ {
+ return pidx.isValid() ? 0 : mKeysByFingerprint.size();
+ }
+
+private:
+ Key doMapToKey(const QModelIndex &index) const override;
+ QModelIndex doMapFromKey(const Key &key, int col) const override;
+ QList<QModelIndex> doAddKeys(const std::vector<Key> &keys) override;
+ void doRemoveKey(const Key &key) override;
+ void doClear() override {
+ mKeysByFingerprint.clear();
+ }
+
+private:
+ std::vector<Key> mKeysByFingerprint;
+};
+
+class HierarchicalKeyListModel : public AbstractKeyListModel
+{
+ Q_OBJECT
+public:
+ explicit HierarchicalKeyListModel(QObject *parent = nullptr);
+ ~HierarchicalKeyListModel();
+
+ int rowCount(const QModelIndex &pidx) const override;
+ using AbstractKeyListModel::index;
+ QModelIndex index(int row, int col, const QModelIndex &pidx) const override;
+ QModelIndex parent(const QModelIndex &idx) const override;
+
+ bool hasChildren(const QModelIndex &pidx) const override
+ {
+ return rowCount(pidx) > 0;
+ }
+
+private:
+ Key doMapToKey(const QModelIndex &index) const override;
+ QModelIndex doMapFromKey(const Key &key, int col) const override;
+ QList<QModelIndex> doAddKeys(const std::vector<Key> &keys) override;
+ void doRemoveKey(const Key &key) override;
+ void doClear() override {
+ mTopLevels.clear();
+ mKeysByFingerprint.clear();
+ mKeysByExistingParent.clear();
+ mKeysByNonExistingParent.clear();
+ }
+
+private:
+ void addTopLevelKey(const Key &key);
+ void addKeyWithParent(const char *issuer_fpr, const Key &key);
+ void addKeyWithoutParent(const char *issuer_fpr, const Key &key);
+
+private:
+ typedef std::map< std::string, std::vector<Key> > Map;
+ std::vector<Key> mKeysByFingerprint; // all keys
+ Map mKeysByExistingParent, mKeysByNonExistingParent; // parent->child map
+ std::vector<Key> mTopLevels; // all roots + parent-less
+};
+
+static const char *cleanChainID(const Key &key)
+{
+ if (key.isRoot()) {
+ return "";
+ }
+ if (const char *chid = key.chainID()) {
+ return chid;
+ }
+ return "";
+}
+
+}
+
+FlatKeyListModel::FlatKeyListModel(QObject *p)
+ : TableModelMixin<AbstractKeyListModel>(p),
+ mKeysByFingerprint()
+{
+
+}
+
+FlatKeyListModel::~FlatKeyListModel() {}
+
+Key FlatKeyListModel::doMapToKey(const QModelIndex &idx) const
+{
+ Q_ASSERT(idx.isValid());
+ if (static_cast<unsigned>(idx.row()) < mKeysByFingerprint.size() && idx.column() < NumColumns) {
+ return mKeysByFingerprint[ idx.row() ];
+ } else {
+ return Key::null;
+ }
+}
+
+QModelIndex FlatKeyListModel::doMapFromKey(const Key &key, int col) const
+{
+ Q_ASSERT(!key.isNull());
+ const std::vector<Key>::const_iterator it
+ = std::lower_bound(mKeysByFingerprint.begin(), mKeysByFingerprint.end(),
+ key, _detail::ByFingerprint<std::less>());
+ if (it == mKeysByFingerprint.end() || !_detail::ByFingerprint<std::equal_to>()(*it, key)) {
+ return QModelIndex();
+ } else {
+ return createIndex(it - mKeysByFingerprint.begin(), col);
+ }
+}
+
+QList<QModelIndex> FlatKeyListModel::doAddKeys(const std::vector<Key> &keys)
+{
+ Q_ASSERT(std::is_sorted(keys.begin(), keys.end(), _detail::ByFingerprint<std::less>()));
+
+ if (keys.empty()) {
+ return QList<QModelIndex>();
+ }
+
+ for (std::vector<Key>::const_iterator it = keys.begin(), end = keys.end(); it != end; ++it) {
+
+ // find an insertion point:
+ const std::vector<Key>::iterator pos = std::upper_bound(mKeysByFingerprint.begin(), mKeysByFingerprint.end(), *it, _detail::ByFingerprint<std::less>());
+ const unsigned int idx = std::distance(mKeysByFingerprint.begin(), pos);
+
+ if (idx > 0 && qstrcmp(mKeysByFingerprint[idx - 1].primaryFingerprint(), it->primaryFingerprint()) == 0) {
+ // key existed before - replace with new one:
+ mKeysByFingerprint[idx - 1] = *it;
+ Q_EMIT dataChanged(createIndex(idx - 1, 0), createIndex(idx - 1, NumColumns - 1));
+ } else {
+ // new key - insert:
+ beginInsertRows(QModelIndex(), idx, idx);
+ mKeysByFingerprint.insert(pos, *it);
+ endInsertRows();
+ }
+ }
+
+ return indexes(keys);
+}
+
+void FlatKeyListModel::doRemoveKey(const Key &key)
+{
+ const std::vector<Key>::iterator it
+ = qBinaryFind(mKeysByFingerprint.begin(), mKeysByFingerprint.end(),
+ key, _detail::ByFingerprint<std::less>());
+ if (it == mKeysByFingerprint.end()) {
+ return;
+ }
+
+ const unsigned int row = std::distance(mKeysByFingerprint.begin(), it);
+ beginRemoveRows(QModelIndex(), row, row);
+ mKeysByFingerprint.erase(it);
+ endRemoveRows();
+}
+
+HierarchicalKeyListModel::HierarchicalKeyListModel(QObject *p)
+ : AbstractKeyListModel(p),
+ mKeysByFingerprint(),
+ mKeysByExistingParent(),
+ mKeysByNonExistingParent(),
+ mTopLevels()
+{
+
+}
+
+HierarchicalKeyListModel::~HierarchicalKeyListModel() {}
+
+int HierarchicalKeyListModel::rowCount(const QModelIndex &pidx) const
+{
+
+ // toplevel item:
+ if (!pidx.isValid()) {
+ return mTopLevels.size();
+ }
+
+ if (pidx.column() != 0) {
+ return 0;
+ }
+
+ // non-toplevel item - find the number of subjects for this issuer:
+ const Key issuer = this->key(pidx);
+ const char *const fpr = issuer.primaryFingerprint();
+ if (!fpr || !*fpr) {
+ return 0;
+ }
+ const Map::const_iterator it = mKeysByExistingParent.find(fpr);
+ if (it == mKeysByExistingParent.end()) {
+ return 0;
+ }
+ return it->second.size();
+}
+
+QModelIndex HierarchicalKeyListModel::index(int row, int col, const QModelIndex &pidx) const
+{
+
+ if (row < 0 || col < 0 || col >= NumColumns) {
+ return QModelIndex();
+ }
+
+ // toplevel item:
+ if (!pidx.isValid()) {
+ if (static_cast<unsigned>(row) < mTopLevels.size()) {
+ return index(mTopLevels[row], col);
+ } else {
+ return QModelIndex();
+ }
+ }
+
+ // non-toplevel item - find the row'th subject of this key:
+ const Key issuer = this->key(pidx);
+ const char *const fpr = issuer.primaryFingerprint();
+ if (!fpr || !*fpr) {
+ return QModelIndex();
+ }
+ const Map::const_iterator it = mKeysByExistingParent.find(fpr);
+ if (it == mKeysByExistingParent.end() || static_cast<unsigned>(row) >= it->second.size()) {
+ return QModelIndex();
+ }
+ return index(it->second[row], col);
+}
+
+QModelIndex HierarchicalKeyListModel::parent(const QModelIndex &idx) const
+{
+ const Key key = this->key(idx);
+ if (key.isNull() || key.isRoot()) {
+ return QModelIndex();
+ }
+ const std::vector<Key>::const_iterator it
+ = qBinaryFind(mKeysByFingerprint.begin(), mKeysByFingerprint.end(),
+ cleanChainID(key), _detail::ByFingerprint<std::less>());
+ return it != mKeysByFingerprint.end() ? index(*it) : QModelIndex();
+}
+
+Key HierarchicalKeyListModel::doMapToKey(const QModelIndex &idx) const
+{
+
+ if (!idx.isValid()) {
+ return Key::null;
+ }
+
+ const char *const issuer_fpr = static_cast<const char *>(idx.internalPointer());
+ if (!issuer_fpr || !*issuer_fpr) {
+ // top-level:
+ if (static_cast<unsigned>(idx.row()) >= mTopLevels.size()) {
+ return Key::null;
+ } else {
+ return mTopLevels[idx.row()];
+ }
+ }
+
+ // non-toplevel:
+ const Map::const_iterator it
+ = mKeysByExistingParent.find(issuer_fpr);
+ if (it == mKeysByExistingParent.end() || static_cast<unsigned>(idx.row()) >= it->second.size()) {
+ return Key::null;
+ }
+ return it->second[idx.row()];
+}
+
+QModelIndex HierarchicalKeyListModel::doMapFromKey(const Key &key, int col) const
+{
+
+ if (key.isNull()) {
+ return QModelIndex();
+ }
+
+ const char *issuer_fpr = cleanChainID(key);
+
+ // we need to look in the toplevels list,...
+ const std::vector<Key> *v = &mTopLevels;
+ if (issuer_fpr && *issuer_fpr) {
+ const std::map< std::string, std::vector<Key> >::const_iterator it
+ = mKeysByExistingParent.find(issuer_fpr);
+ // ...unless we find an existing parent:
+ if (it != mKeysByExistingParent.end()) {
+ v = &it->second;
+ } else {
+ issuer_fpr = nullptr; // force internalPointer to zero for toplevels
+ }
+ }
+
+ const std::vector<Key>::const_iterator it
+ = std::lower_bound(v->begin(), v->end(), key, _detail::ByFingerprint<std::less>());
+ if (it == v->end() || !_detail::ByFingerprint<std::equal_to>()(*it, key)) {
+ return QModelIndex();
+ }
+
+ const unsigned int row = std::distance(v->begin(), it);
+ return createIndex(row, col, const_cast<char * /* thanks, Trolls :/ */ >(issuer_fpr));
+}
+
+void HierarchicalKeyListModel::addKeyWithParent(const char *issuer_fpr, const Key &key)
+{
+
+ Q_ASSERT(issuer_fpr); Q_ASSERT(*issuer_fpr); Q_ASSERT(!key.isNull());
+
+ std::vector<Key> &subjects = mKeysByExistingParent[issuer_fpr];
+
+ // find insertion point:
+ const std::vector<Key>::iterator it = std::lower_bound(subjects.begin(), subjects.end(), key, _detail::ByFingerprint<std::less>());
+ const int row = std::distance(subjects.begin(), it);
+
+ if (it != subjects.end() && qstricmp(it->primaryFingerprint(), key.primaryFingerprint()) == 0) {
+ // exists -> replace
+ *it = key;
+ Q_EMIT dataChanged(createIndex(row, 0, const_cast<char *>(issuer_fpr)), createIndex(row, NumColumns - 1, const_cast<char *>(issuer_fpr)));
+ } else {
+ // doesn't exist -> insert
+ const std::vector<Key>::const_iterator pos = qBinaryFind(mKeysByFingerprint.begin(), mKeysByFingerprint.end(), issuer_fpr, _detail::ByFingerprint<std::less>());
+ Q_ASSERT(pos != mKeysByFingerprint.end());
+ beginInsertRows(index(*pos), row, row);
+ subjects.insert(it, key);
+ endInsertRows();
+ }
+}
+
+void HierarchicalKeyListModel::addKeyWithoutParent(const char *issuer_fpr, const Key &key)
+{
+
+ Q_ASSERT(issuer_fpr); Q_ASSERT(*issuer_fpr); Q_ASSERT(!key.isNull());
+
+ std::vector<Key> &subjects = mKeysByNonExistingParent[issuer_fpr];
+
+ // find insertion point:
+ const std::vector<Key>::iterator it = std::lower_bound(subjects.begin(), subjects.end(), key, _detail::ByFingerprint<std::less>());
+
+ if (it != subjects.end() && qstricmp(it->primaryFingerprint(), key.primaryFingerprint()) == 0)
+ // exists -> replace
+ {
+ *it = key;
+ } else
+ // doesn't exist -> insert
+ {
+ subjects.insert(it, key);
+ }
+
+ addTopLevelKey(key);
+}
+
+void HierarchicalKeyListModel::addTopLevelKey(const Key &key)
+{
+
+ // find insertion point:
+ const std::vector<Key>::iterator it = std::lower_bound(mTopLevels.begin(), mTopLevels.end(), key, _detail::ByFingerprint<std::less>());
+ const int row = std::distance(mTopLevels.begin(), it);
+
+ if (it != mTopLevels.end() && qstricmp(it->primaryFingerprint(), key.primaryFingerprint()) == 0) {
+ // exists -> replace
+ *it = key;
+ Q_EMIT dataChanged(createIndex(row, 0), createIndex(row, NumColumns - 1));
+ } else {
+ // doesn't exist -> insert
+ beginInsertRows(QModelIndex(), row, row);
+ mTopLevels.insert(it, key);
+ endInsertRows();
+ }
+
+}
+
+// sorts 'keys' such that parent always come before their children:
+static std::vector<Key> topological_sort(const std::vector<Key> &keys)
+{
+
+ boost::adjacency_list<> graph(keys.size());
+
+ // add edges from children to parents:
+ for (unsigned int i = 0, end = keys.size(); i != end; ++i) {
+ const char *const issuer_fpr = cleanChainID(keys[i]);
+ if (!issuer_fpr || !*issuer_fpr) {
+ continue;
+ }
+ const std::vector<Key>::const_iterator it
+ = qBinaryFind(keys.begin(), keys.end(), issuer_fpr, _detail::ByFingerprint<std::less>());
+ if (it == keys.end()) {
+ continue;
+ }
+ add_edge(i, std::distance(keys.begin(), it), graph);
+ }
+
+ std::vector<int> order;
+ order.reserve(keys.size());
+ topological_sort(graph, std::back_inserter(order));
+
+ Q_ASSERT(order.size() == keys.size());
+
+ std::vector<Key> result;
+ result.reserve(keys.size());
+ for (int i : qAsConst(order)) {
+ result.push_back(keys[i]);
+ }
+ return result;
+}
+
+QList<QModelIndex> HierarchicalKeyListModel::doAddKeys(const std::vector<Key> &keys)
+{
+ Q_ASSERT(std::is_sorted(keys.begin(), keys.end(), _detail::ByFingerprint<std::less>()));
+
+ if (keys.empty()) {
+ return QList<QModelIndex>();
+ }
+
+ const std::vector<Key> oldKeys = mKeysByFingerprint;
+
+ std::vector<Key> merged;
+ merged.reserve(keys.size() + mKeysByFingerprint.size());
+ std::set_union(keys.begin(), keys.end(),
+ mKeysByFingerprint.begin(), mKeysByFingerprint.end(),
+ std::back_inserter(merged), _detail::ByFingerprint<std::less>());
+
+ mKeysByFingerprint = merged;
+
+ std::set<Key, _detail::ByFingerprint<std::less> > changedParents;
+
+ Q_FOREACH (const Key &key, topological_sort(keys)) {
+
+ // check to see whether this key is a parent for a previously parent-less group:
+ const char *const fpr = key.primaryFingerprint();
+ if (!fpr || !*fpr) {
+ continue;
+ }
+
+ const bool keyAlreadyExisted = qBinaryFind(oldKeys.begin(), oldKeys.end(), key, _detail::ByFingerprint<std::less>()) != oldKeys.end();
+
+ const Map::iterator it = mKeysByNonExistingParent.find(fpr);
+ const std::vector<Key> children = it != mKeysByNonExistingParent.end() ? it->second : std::vector<Key>();
+ if (it != mKeysByNonExistingParent.end()) {
+ mKeysByNonExistingParent.erase(it);
+ }
+
+ // Step 1: For new keys, remove children from toplevel:
+
+ if (!keyAlreadyExisted) {
+ std::vector<Key>::iterator last = mTopLevels.begin();
+ std::vector<Key>::iterator lastFP = mKeysByFingerprint.begin();
+
+ for (const Key &k : qAsConst(children)) {
+ last = qBinaryFind(last, mTopLevels.end(), k, _detail::ByFingerprint<std::less>());
+ Q_ASSERT(last != mTopLevels.end());
+ const int row = std::distance(mTopLevels.begin(), last);
+
+ lastFP = qBinaryFind(lastFP, mKeysByFingerprint.end(), k, _detail::ByFingerprint<std::less>());
+ Q_ASSERT(lastFP != mKeysByFingerprint.end());
+
+ Q_EMIT rowAboutToBeMoved(QModelIndex(), row);
+ beginRemoveRows(QModelIndex(), row, row);
+ last = mTopLevels.erase(last);
+ lastFP = mKeysByFingerprint.erase(lastFP);
+ endRemoveRows();
+ }
+ }
+ // Step 2: add/update key
+
+ const char *const issuer_fpr = cleanChainID(key);
+ if (!issuer_fpr || !*issuer_fpr)
+ // root or something...
+ {
+ addTopLevelKey(key);
+ } else if (std::binary_search(mKeysByFingerprint.begin(), mKeysByFingerprint.end(), issuer_fpr, _detail::ByFingerprint<std::less>()))
+ // parent exists...
+ {
+ addKeyWithParent(issuer_fpr, key);
+ } else
+ // parent does't exist yet...
+ {
+ addKeyWithoutParent(issuer_fpr, key);
+ }
+
+ const QModelIndex key_idx = index(key);
+ QModelIndex key_parent = key_idx.parent();
+ while (key_parent.isValid()) {
+ changedParents.insert(doMapToKey(key_parent));
+ key_parent = key_parent.parent();
+ }
+
+ // Step 3: Add children to new parent ( == key )
+
+ if (!keyAlreadyExisted && !children.empty()) {
+ addKeys(children);
+ const QModelIndex new_parent = index(key);
+ // Q_EMIT the rowMoved() signals in reversed direction, so the
+ // implementation can use a stack for mapping.
+ for (int i = children.size() - 1; i >= 0; --i) {
+ Q_EMIT rowMoved(new_parent, i);
+ }
+ }
+ }
+ //Q_EMIT dataChanged for all parents with new children. This triggers KeyListSortFilterProxyModel to
+ //show a parent node if it just got children matching the proxy's filter
+ for (const Key &i : qAsConst(changedParents)) {
+ const QModelIndex idx = index(i);
+ if (idx.isValid()) {
+ Q_EMIT dataChanged(idx.sibling(idx.row(), 0), idx.sibling(idx.row(), NumColumns - 1));
+ }
+ }
+ return indexes(keys);
+}
+
+void HierarchicalKeyListModel::doRemoveKey(const Key &key)
+{
+ const QModelIndex idx = index(key);
+ if (!idx.isValid()) {
+ return;
+ }
+
+ const char *const fpr = key.primaryFingerprint();
+ if (mKeysByExistingParent.find(fpr) != mKeysByExistingParent.end()) {
+ //handle non-leave nodes:
+ std::vector<Key> keys = mKeysByFingerprint;
+ const std::vector<Key>::iterator it = qBinaryFind(keys.begin(), keys.end(),
+ key, _detail::ByFingerprint<std::less>());
+ if (it == keys.end()) {
+ return;
+ }
+ keys.erase(it);
+ // FIXME for simplicity, we just clear the model and re-add all keys minus the removed one. This is suboptimal,
+ // but acceptable given that deletion of non-leave nodes is rather rare.
+ clear();
+ addKeys(keys);
+ return;
+ }
+
+ //handle leave nodes:
+
+ const std::vector<Key>::iterator it = qBinaryFind(mKeysByFingerprint.begin(), mKeysByFingerprint.end(),
+ key, _detail::ByFingerprint<std::less>());
+
+ Q_ASSERT(it != mKeysByFingerprint.end());
+ Q_ASSERT(mKeysByNonExistingParent.find(fpr) == mKeysByNonExistingParent.end());
+ Q_ASSERT(mKeysByExistingParent.find(fpr) == mKeysByExistingParent.end());
+
+ beginRemoveRows(parent(idx), idx.row(), idx.row());
+ mKeysByFingerprint.erase(it);
+
+ const char *const issuer_fpr = cleanChainID(key);
+
+ const std::vector<Key>::iterator tlIt = qBinaryFind(mTopLevels.begin(), mTopLevels.end(), key, _detail::ByFingerprint<std::less>());
+ if (tlIt != mTopLevels.end()) {
+ mTopLevels.erase(tlIt);
+ }
+
+ if (issuer_fpr && *issuer_fpr) {
+ const Map::iterator nexIt = mKeysByNonExistingParent.find(issuer_fpr);
+ if (nexIt != mKeysByNonExistingParent.end()) {
+ const std::vector<Key>::iterator eit = qBinaryFind(nexIt->second.begin(), nexIt->second.end(), key, _detail::ByFingerprint<std::less>());
+ if (eit != nexIt->second.end()) {
+ nexIt->second.erase(eit);
+ }
+ if (nexIt->second.empty()) {
+ mKeysByNonExistingParent.erase(nexIt);
+ }
+ }
+
+ const Map::iterator exIt = mKeysByExistingParent.find(issuer_fpr);
+ if (exIt != mKeysByExistingParent.end()) {
+ const std::vector<Key>::iterator eit = qBinaryFind(exIt->second.begin(), exIt->second.end(), key, _detail::ByFingerprint<std::less>());
+ if (eit != exIt->second.end()) {
+ exIt->second.erase(eit);
+ }
+ if (exIt->second.empty()) {
+ mKeysByExistingParent.erase(exIt);
+ }
+ }
+ }
+ endRemoveRows();
+}
+
+void AbstractKeyListModel::useKeyCache(bool value, bool secretOnly)
+{
+ d->m_secretOnly = secretOnly;
+ d->m_useKeyCache = value;
+ if (value) {
+ setKeys(d->m_secretOnly ? KeyCache::instance()->secretKeys() : KeyCache::instance()->keys());
+ } else {
+ setKeys(std::vector<Key>());
+ }
+ connect(KeyCache::instance().get(), &KeyCache::keysMayHaveChanged, this, [this] { if (d->m_useKeyCache) { setKeys(d->m_secretOnly ? KeyCache::instance()->secretKeys() : KeyCache::instance()->keys()); } });
+}
+
+// static
+AbstractKeyListModel *AbstractKeyListModel::createFlatKeyListModel(QObject *p)
+{
+ AbstractKeyListModel *const m = new FlatKeyListModel(p);
+#ifdef KLEO_MODEL_TEST
+ new ModelTest(m, p);
+#endif
+ return m;
+}
+
+// static
+AbstractKeyListModel *AbstractKeyListModel::createHierarchicalKeyListModel(QObject *p)
+{
+ AbstractKeyListModel *const m = new HierarchicalKeyListModel(p);
+#ifdef KLEO_MODEL_TEST
+ new ModelTest(m, p);
+#endif
+ return m;
+}
+
+#include "keylistmodel.moc"
+
+/*!
+ \fn AbstractKeyListModel::rowAboutToBeMoved( const QModelIndex & old_parent, int old_row )
+
+ Emitted before the removal of a row from that model. It will later
+ be added to the model again, in response to which rowMoved() will be
+ emitted. If multiple rows are moved in one go, multiple
+ rowAboutToBeMoved() signals are emitted before the corresponding
+ number of rowMoved() signals is emitted - in reverse order.
+
+ This works around the absence of move semantics in
+ QAbstractItemModel. Clients can maintain a stack to perform the
+ QModelIndex-mapping themselves, or, e.g., to preserve the selection
+ status of the row:
+
+ \code
+ std::vector<bool> mMovingRowWasSelected; // transient, used when rows are moved
+ // ...
+ void slotRowAboutToBeMoved( const QModelIndex & p, int row ) {
+ mMovingRowWasSelected.push_back( selectionModel()->isSelected( model()->index( row, 0, p ) ) );
+ }
+ void slotRowMoved( const QModelIndex & p, int row ) {
+ const bool wasSelected = mMovingRowWasSelected.back();
+ mMovingRowWasSelected.pop_back();
+ if ( wasSelected )
+ selectionModel()->select( model()->index( row, 0, p ), Select|Rows );
+ }
+ \endcode
+
+ A similar mechanism could be used to preserve the current item during moves.
+*/
+
+/*!
+ \fn AbstractKeyListModel::rowMoved( const QModelIndex & new_parent, int new_parent )
+
+ See rowAboutToBeMoved()
+*/
--- /dev/null
+/* -*- mode: c++; c-basic-offset:4 -*-
+ models/keylistmodel.h
+
+ This file is part of Kleopatra, the KDE keymanager
+ Copyright (c) 2007 Klarälvdalens Datakonsult AB
+
+ Kleopatra is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Kleopatra 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+#ifndef __KLEOPATRA_MODELS_KEYLISTMODEL_H__
+#define __KLEOPATRA_MODELS_KEYLISTMODEL_H__
+
+#include <QAbstractItemModel>
+
+#include <kleo_export.h>
+
+#include "keylistmodelinterface.h"
+
+#include <vector>
+
+namespace GpgME
+{
+class Key;
+}
+
+namespace Kleo
+{
+
+class KLEO_EXPORT AbstractKeyListModel : public QAbstractItemModel
+ , public KeyListModelInterface
+{
+ Q_OBJECT
+public:
+ explicit AbstractKeyListModel(QObject *parent = nullptr);
+ ~AbstractKeyListModel();
+
+ static AbstractKeyListModel *createFlatKeyListModel(QObject *parent = nullptr);
+ static AbstractKeyListModel *createHierarchicalKeyListModel(QObject *parent = nullptr);
+
+ GpgME::Key key(const QModelIndex &idx) const override;
+ std::vector<GpgME::Key> keys(const QList<QModelIndex> &indexes) const override;
+
+ using QAbstractItemModel::index;
+ QModelIndex index(const GpgME::Key &key) const override
+ {
+ return index(key, 0);
+ }
+ QModelIndex index(const GpgME::Key &key, int col) const;
+ QList<QModelIndex> indexes(const std::vector<GpgME::Key> &keys) const override;
+
+Q_SIGNALS:
+ void rowAboutToBeMoved(const QModelIndex &old_parent, int old_row);
+ void rowMoved(const QModelIndex &new_parent, int new_row);
+
+public Q_SLOTS:
+ void setKeys(const std::vector<GpgME::Key> &keys);
+ /* Set this to set all or only secret keys from the keycache. */
+ void useKeyCache(bool value, bool secretOnly);
+ QModelIndex addKey(const GpgME::Key &key);
+ QList<QModelIndex> addKeys(const std::vector<GpgME::Key> &keys);
+ void removeKey(const GpgME::Key &key);
+ void clear();
+
+public:
+ int columnCount(const QModelIndex &pidx) const override;
+ QVariant headerData(int section, Qt::Orientation o, int role = Qt::DisplayRole) const override;
+ QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
+
+ /**
+ * defines which information is displayed in tooltips
+ * see Kleo::Formatting::ToolTipOption
+ */
+ int toolTipOptions() const;
+
+ void setToolTipOptions(int opts);
+
+private:
+ virtual GpgME::Key doMapToKey(const QModelIndex &index) const = 0;
+ virtual QModelIndex doMapFromKey(const GpgME::Key &key, int column) const = 0;
+ virtual QList<QModelIndex> doAddKeys(const std::vector<GpgME::Key> &keys) = 0;
+ virtual void doRemoveKey(const GpgME::Key &key) = 0;
+ virtual void doClear() = 0;
+
+private:
+ class Private;
+ QScopedPointer<Private> const d;
+};
+
+}
+
+#endif /* __KLEOPATRA_MODELS_KEYLISTMODEL_H__ */
--- /dev/null
+/* -*- mode: c++; c-basic-offset:4 -*-
+ models/keylistmodelinterface.h
+
+ This file is part of Kleopatra, the KDE keymanager
+ Copyright (c) 2008 Klarälvdalens Datakonsult AB
+
+ Kleopatra is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Kleopatra 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#ifndef __KLEOPATRA_MODELS_KEYLISTMODELINTERFACE_H__
+#define __KLEOPATRA_MODELS_KEYLISTMODELINTERFACE_H__
+
+#include <vector>
+
+namespace GpgME
+{
+class Key;
+}
+
+class QModelIndex;
+template <typename T> class QList;
+
+namespace Kleo
+{
+
+class KeyListModelInterface
+{
+public:
+ virtual ~KeyListModelInterface() {}
+
+ static const int FingerprintRole = 0xF1;
+ static const int KeyRole = 0xF2;
+
+ enum Columns {
+ PrettyName,
+ PrettyEMail,
+ ValidFrom,
+ ValidUntil,
+ TechnicalDetails,
+ /* OpenPGP only, really */
+ ShortKeyID,
+ Summary, // Short summary line
+#if 0
+ Fingerprint,
+ LongKeyID,
+ /* X509 only, really */
+ Issuer,
+ Subject,
+ SerialNumber,
+#endif
+
+ Validity,
+ NumColumns,
+ Icon = PrettyName // which column shall the icon be displayed in?
+ };
+
+ virtual GpgME::Key key(const QModelIndex &idx) const = 0;
+ virtual std::vector<GpgME::Key> keys(const QList<QModelIndex> &idxs) const = 0;
+
+ virtual QModelIndex index(const GpgME::Key &key) const = 0;
+ virtual QList<QModelIndex> indexes(const std::vector<GpgME::Key> &keys) const = 0;
+};
+
+}
+
+#endif /* __KLEOPATRA_MODELS_KEYLISTMODELINTERFACE_H__ */
--- /dev/null
+/* -*- mode: c++; c-basic-offset:4 -*-
+ models/keylistsortfilterproxymodel.cpp
+
+ This file is part of Kleopatra, the KDE keymanager
+ Copyright (c) 2007 Klarälvdalens Datakonsult AB
+
+ Kleopatra is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Kleopatra 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#include "keylistsortfilterproxymodel.h"
+
+#include "keylistmodel.h"
+#include "kleo/keyfilter.h"
+#include "kleo/stl_util.h"
+
+#include <libkleo_debug.h>
+
+#include <gpgme++/key.h>
+
+
+using namespace Kleo;
+using namespace GpgME;
+
+AbstractKeyListSortFilterProxyModel::AbstractKeyListSortFilterProxyModel(QObject *p)
+ : QSortFilterProxyModel(p), KeyListModelInterface()
+{
+ init();
+}
+
+AbstractKeyListSortFilterProxyModel::AbstractKeyListSortFilterProxyModel(const AbstractKeyListSortFilterProxyModel &other)
+ : QSortFilterProxyModel(), KeyListModelInterface()
+{
+ Q_UNUSED(other);
+ init();
+}
+
+void AbstractKeyListSortFilterProxyModel::init()
+{
+ setDynamicSortFilter(true);
+ setSortRole(Qt::EditRole); // EditRole can be expected to be in a less formatted way, better for sorting
+ setFilterRole(Qt::DisplayRole);
+ setFilterCaseSensitivity(Qt::CaseInsensitive);
+}
+
+AbstractKeyListSortFilterProxyModel::~AbstractKeyListSortFilterProxyModel() {}
+
+Key AbstractKeyListSortFilterProxyModel::key(const QModelIndex &idx) const
+{
+ const KeyListModelInterface *const klmi = dynamic_cast<KeyListModelInterface *>(sourceModel());
+ if (!klmi) {
+ static Key null;
+ return null;
+ }
+ return klmi->key(mapToSource(idx));
+}
+
+std::vector<Key> AbstractKeyListSortFilterProxyModel::keys(const QList<QModelIndex> &indexes) const
+{
+ const KeyListModelInterface *const klmi = dynamic_cast<KeyListModelInterface *>(sourceModel());
+ if (!klmi) {
+ return std::vector<Key>();
+ }
+ QList<QModelIndex> mapped;
+ mapped.reserve(indexes.size());
+ std::transform(indexes.begin(), indexes.end(),
+ std::back_inserter(mapped),
+ [this](const QModelIndex &idx) {
+ return mapToSource(idx);
+ });
+ return klmi->keys(mapped);
+}
+
+QModelIndex AbstractKeyListSortFilterProxyModel::index(const Key &key) const
+{
+ if (const KeyListModelInterface *const klmi = dynamic_cast<KeyListModelInterface *>(sourceModel())) {
+ return mapFromSource(klmi->index(key));
+ } else {
+ return QModelIndex();
+ }
+}
+
+QList<QModelIndex> AbstractKeyListSortFilterProxyModel::indexes(const std::vector<Key> &keys) const
+{
+ if (const KeyListModelInterface *const klmi = dynamic_cast<KeyListModelInterface *>(sourceModel())) {
+ const QList<QModelIndex> source = klmi->indexes(keys);
+ QList<QModelIndex> mapped;
+ mapped.reserve(source.size());
+ std::transform(source.begin(), source.end(),
+ std::back_inserter(mapped),
+ [this](const QModelIndex &idx) {
+ return mapFromSource(idx);
+ });
+ return mapped;
+ } else {
+ return QList<QModelIndex>();
+ }
+}
+
+class KeyListSortFilterProxyModel::Private
+{
+ friend class ::Kleo::KeyListSortFilterProxyModel;
+public:
+ explicit Private()
+ : keyFilter() {}
+ ~Private() {}
+
+private:
+ std::shared_ptr<const KeyFilter> keyFilter;
+};
+
+KeyListSortFilterProxyModel::KeyListSortFilterProxyModel(QObject *p)
+ : AbstractKeyListSortFilterProxyModel(p), d(new Private)
+{
+
+}
+
+KeyListSortFilterProxyModel::KeyListSortFilterProxyModel(const KeyListSortFilterProxyModel &other)
+ : AbstractKeyListSortFilterProxyModel(other), d(new Private(*other.d))
+{
+
+}
+
+KeyListSortFilterProxyModel::~KeyListSortFilterProxyModel() {}
+
+KeyListSortFilterProxyModel *KeyListSortFilterProxyModel::clone() const
+{
+ return new KeyListSortFilterProxyModel(*this);
+}
+
+std::shared_ptr<const KeyFilter> KeyListSortFilterProxyModel::keyFilter() const
+{
+ return d->keyFilter;
+}
+
+void KeyListSortFilterProxyModel::setKeyFilter(const std::shared_ptr<const KeyFilter> &kf)
+{
+ if (kf == d->keyFilter) {
+ return;
+ }
+ d->keyFilter = kf;
+ invalidateFilter();
+}
+
+bool KeyListSortFilterProxyModel::filterAcceptsRow(int source_row, const QModelIndex &source_parent) const
+{
+
+ //
+ // 0. Keep parents of matching children:
+ //
+ const QModelIndex index = sourceModel()->index(source_row, 0, source_parent);
+ for (int i = 0, end = sourceModel()->rowCount(index); i != end; ++i)
+ if (filterAcceptsRow(i, index)) {
+ return true;
+ }
+
+ //
+ // 1. Check filterRegExp
+ //
+ const int role = filterRole();
+ const int col = filterKeyColumn();
+ const QRegExp rx = filterRegExp();
+ const QModelIndex nameIndex = sourceModel()->index(source_row, PrettyName, source_parent);
+
+ const KeyListModelInterface *const klm = dynamic_cast<KeyListModelInterface *>(sourceModel());
+ Q_ASSERT(klm);
+ const Key key = klm->key(nameIndex);
+
+ if (col) {
+ const QModelIndex colIdx = sourceModel()->index(source_row, col, source_parent);
+ const QString content = colIdx.data(role).toString();
+ if (!content.contains(rx)) {
+ return false;
+ }
+ } else {
+ // By default match against the full uid data (name / email / comment / dn)
+ bool match = false;
+ for (const auto &uid: key.userIDs()) {
+ const auto id = QString::fromUtf8(uid.id());
+ if (id.contains(rx)) {
+ match = true;
+ break;
+ }
+ }
+ if (!match) {
+ return false;
+ }
+ }
+
+ //
+ // 2. Check that key filters match (if any are defined)
+ //
+ if (d->keyFilter) { // avoid artifacts when no filters are defined
+ return d->keyFilter->matches(key, KeyFilter::Filtering);
+ }
+
+ // 3. match by default:
+ return true;
+}
+
--- /dev/null
+/* -*- mode: c++; c-basic-offset:4 -*-
+ models/keylistsortfilterproxymodel.h
+
+ This file is part of Kleopatra, the KDE keymanager
+ Copyright (c) 2007 Klarälvdalens Datakonsult AB
+
+ Kleopatra is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Kleopatra 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+#ifndef __KLEOPATRA_MODELS_KEYLISTSORTFILTERPROXYMODEL_H__
+#define __KLEOPATRA_MODELS_KEYLISTSORTFILTERPROXYMODEL_H__
+
+#include <QSortFilterProxyModel>
+
+#include "keylistmodelinterface.h"
+
+#include <kleo_export.h>
+
+#include <memory>
+
+namespace GpgME
+{
+class Key;
+}
+
+namespace Kleo
+{
+
+class KeyFilter;
+
+class KLEO_EXPORT AbstractKeyListSortFilterProxyModel : public QSortFilterProxyModel
+ , public KeyListModelInterface
+{
+ Q_OBJECT
+protected:
+ AbstractKeyListSortFilterProxyModel(const AbstractKeyListSortFilterProxyModel &);
+public:
+ explicit AbstractKeyListSortFilterProxyModel(QObject *parent = nullptr);
+ ~AbstractKeyListSortFilterProxyModel();
+
+ virtual AbstractKeyListSortFilterProxyModel *clone() const = 0;
+
+ GpgME::Key key(const QModelIndex &idx) const override;
+ std::vector<GpgME::Key> keys(const QList<QModelIndex> &indexes) const override;
+
+ using QAbstractItemModel::index;
+ QModelIndex index(const GpgME::Key &key) const override;
+ QList<QModelIndex> indexes(const std::vector<GpgME::Key> &keys) const override;
+
+private:
+ void init();
+};
+
+class KLEO_EXPORT KeyListSortFilterProxyModel : public AbstractKeyListSortFilterProxyModel
+{
+ Q_OBJECT
+protected:
+ KeyListSortFilterProxyModel(const KeyListSortFilterProxyModel &);
+public:
+ explicit KeyListSortFilterProxyModel(QObject *parent = nullptr);
+ ~KeyListSortFilterProxyModel();
+
+ std::shared_ptr<const KeyFilter> keyFilter() const;
+ void setKeyFilter(const std::shared_ptr<const KeyFilter> &kf);
+
+ KeyListSortFilterProxyModel *clone() const override;
+
+protected:
+ bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const override;
+
+private:
+ class Private;
+ QScopedPointer<Private> const d;
+};
+
+}
+
+#endif /* __KLEOPATRA_MODELS_KEYLISTMODEL_H__ */
--- /dev/null
+/* models/keyrearangecolumnsproxymodel.cpp
+
+ This file is part of Kleopatra, the KDE keymanager
+ Copyright (c) 2016 by Bundesamt für Sicherheit in der Informationstechnik
+ Software engineering by Intevation GmbH
+
+ Kleopatra is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Kleopatra 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+#include "keyrearrangecolumnsproxymodel.h"
+
+#include <gpgme++/key.h>
+
+using namespace Kleo;
+using namespace GpgME;
+
+KeyRearrangeColumnsProxyModel::KeyRearrangeColumnsProxyModel(QObject *parent) :
+ KRearrangeColumnsProxyModel(parent),
+ KeyListModelInterface()
+{
+
+}
+
+KeyListModelInterface *KeyRearrangeColumnsProxyModel::klm() const
+{
+ KeyListModelInterface *ret = dynamic_cast<KeyListModelInterface *>(sourceModel());
+ Q_ASSERT(ret);
+ return ret;
+}
+
+Key KeyRearrangeColumnsProxyModel::key(const QModelIndex &idx) const
+{
+ return klm()->key(mapToSource(idx));
+}
+
+std::vector<GpgME::Key> KeyRearrangeColumnsProxyModel::keys(const QList<QModelIndex> &idxs) const
+{
+ QList<QModelIndex> srcIdxs;
+ srcIdxs.reserve(idxs.count());
+ for (const QModelIndex idx : idxs) {
+ srcIdxs << mapToSource(idx);
+ }
+ return klm()->keys(srcIdxs);
+}
+
+
+QModelIndex KeyRearrangeColumnsProxyModel::index(const GpgME::Key &key) const
+{
+ return mapFromSource(klm()->index(key));
+}
+
+QList<QModelIndex> KeyRearrangeColumnsProxyModel::indexes(const std::vector<GpgME::Key> &keys) const
+{
+ QList<QModelIndex> myIdxs;
+ const QList <QModelIndex> srcIdxs = klm()->indexes(keys);
+ myIdxs.reserve(srcIdxs.count());
+ for (const QModelIndex idx : srcIdxs) {
+ myIdxs << mapFromSource(idx);
+ }
+ return myIdxs;
+}
--- /dev/null
+/* models/keyrearangecolumnsproxymodel.h
+
+ This file is part of Kleopatra, the KDE keymanager
+ Copyright (c) 2016 by Bundesamt für Sicherheit in der Informationstechnik
+ Software engineering by Intevation GmbH
+
+ Kleopatra is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Kleopatra 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+#ifndef KEYREARRANGECOLUMNSPROXYMODEL_H
+#define KEYREARRANGECOLUMNSPROXYMODEL_H
+
+#include "keylistmodelinterface.h"
+
+#include <kleo_export.h>
+
+#include <KRearrangeColumnsProxyModel>
+
+namespace Kleo
+{
+/** KRearrangeColumnsProxymodel that implements the KeyListModelInterface. */
+class KLEO_EXPORT KeyRearrangeColumnsProxyModel: public KRearrangeColumnsProxyModel,
+ public KeyListModelInterface
+{
+public:
+ explicit KeyRearrangeColumnsProxyModel(QObject *parent = nullptr);
+
+ GpgME::Key key(const QModelIndex &idx) const override;
+ std::vector<GpgME::Key> keys(const QList<QModelIndex> &idxs) const override;
+
+ using KRearrangeColumnsProxyModel::index;
+
+ QModelIndex index(const GpgME::Key &key) const override;
+ QList<QModelIndex> indexes(const std::vector<GpgME::Key> &keys) const override;
+private:
+ KeyListModelInterface *klm() const;
+};
+} // namespace Kleo
+#endif // KEYREARRANGECOLUMNSPROXYMODEL_H
--- /dev/null
+/****************************************************************************
+**
+** Copyright (C) 2007 Trolltech ASA. All rights reserved.
+**
+** This file is part of the Qt Concurrent project on Trolltech Labs.
+**
+** This file may be used under the terms of the GNU General Public
+** License version 2.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of
+** this file. Please review the following information to ensure GNU
+** General Public Licensing requirements will be met:
+** http://www.trolltech.com/products/qt/opensource.html
+**
+** If you are unsure which license is appropriate for your use, please
+** review the following information:
+** http://www.trolltech.com/products/qt/licensing.html or contact the
+** sales department at sales@trolltech.com.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+****************************************************************************/
+
+#include "modeltest.h"
+
+#include <QSize>
+
+Q_DECLARE_METATYPE(QModelIndex)
+
+/*!
+ Connect to all of the models signals. Whenever anything happens recheck everything.
+*/
+ModelTest::ModelTest(QAbstractItemModel *_model, QObject *parent) : QObject(parent), model(_model), fetchingMore(false)
+{
+ Q_ASSERT(model);
+
+ connect(model, &QAbstractItemModel::columnsAboutToBeInserted, this, &ModelTest::runAllTests);
+ connect(model, &QAbstractItemModel::columnsAboutToBeRemoved, this, &ModelTest::runAllTests);
+ connect(model, &QAbstractItemModel::columnsInserted, this, &ModelTest::runAllTests);
+ connect(model, &QAbstractItemModel::columnsRemoved, this, &ModelTest::runAllTests);
+ connect(model, &QAbstractItemModel::dataChanged, this, &ModelTest::runAllTests);
+ connect(model, &QAbstractItemModel::headerDataChanged, this, &ModelTest::runAllTests);
+ connect(model, &QAbstractItemModel::layoutAboutToBeChanged, this, &ModelTest::runAllTests);
+ connect(model, &QAbstractItemModel::layoutChanged, this, &ModelTest::runAllTests);
+ connect(model, &QAbstractItemModel::modelReset, this, &ModelTest::runAllTests);
+ connect(model, &QAbstractItemModel::rowsAboutToBeInserted, this, &ModelTest::runAllTests);
+ connect(model, &QAbstractItemModel::rowsAboutToBeRemoved, this, &ModelTest::runAllTests);
+ connect(model, &QAbstractItemModel::rowsInserted, this, &ModelTest::runAllTests);
+ connect(model, &QAbstractItemModel::rowsRemoved, this, &ModelTest::runAllTests);
+
+ // Special checks for inserting/removing
+ connect(model, &QAbstractItemModel::layoutAboutToBeChanged, this, &ModelTest::layoutAboutToBeChanged);
+ connect(model, &QAbstractItemModel::layoutChanged, this, &ModelTest::layoutChanged);
+
+ connect(model, &QAbstractItemModel::rowsAboutToBeInserted, this, &ModelTest::rowsAboutToBeInserted);
+ connect(model, &QAbstractItemModel::rowsAboutToBeRemoved, this, &ModelTest::rowsAboutToBeRemoved);
+ connect(model, &QAbstractItemModel::rowsInserted, this, &ModelTest::rowsInserted);
+ connect(model, &QAbstractItemModel::rowsRemoved, this, &ModelTest::rowsRemoved);
+
+ runAllTests();
+}
+
+void ModelTest::runAllTests()
+{
+ if (fetchingMore) {
+ return;
+ }
+ nonDestructiveBasicTest();
+ rowCount();
+ columnCount();
+ hasIndex();
+ index();
+ parent();
+ data();
+}
+
+/*!
+ nonDestructiveBasicTest tries to call a number of the basic functions (not all)
+ to make sure the model doesn't outright segfault, testing the functions that makes sense.
+*/
+void ModelTest::nonDestructiveBasicTest()
+{
+ Q_ASSERT(model->buddy(QModelIndex()) == QModelIndex());
+ model->canFetchMore(QModelIndex());
+ Q_ASSERT(model->columnCount(QModelIndex()) >= 0);
+ Q_ASSERT(model->data(QModelIndex()) == QVariant());
+ fetchingMore = true;
+ model->fetchMore(QModelIndex());
+ fetchingMore = false;
+ Qt::ItemFlags flags = model->flags(QModelIndex());
+ Q_ASSERT(flags == Qt::ItemIsDropEnabled || flags == 0);
+ model->hasChildren(QModelIndex());
+ model->hasIndex(0, 0);
+ model->headerData(0, Qt::Horizontal);
+ model->index(0, 0);
+ model->itemData(QModelIndex());
+ QVariant cache;
+ model->match(QModelIndex(), -1, cache);
+ model->mimeTypes();
+ Q_ASSERT(model->parent(QModelIndex()) == QModelIndex());
+ Q_ASSERT(model->rowCount() >= 0);
+ QVariant variant;
+ model->setData(QModelIndex(), variant, -1);
+ model->setHeaderData(-1, Qt::Horizontal, QVariant());
+ model->setHeaderData(0, Qt::Horizontal, QVariant());
+ model->setHeaderData(999999, Qt::Horizontal, QVariant());
+ QMap<int, QVariant> roles;
+ model->sibling(0, 0, QModelIndex());
+ model->span(QModelIndex());
+ model->supportedDropActions();
+}
+
+/*!
+ Tests model's implementation of QAbstractItemModel::rowCount() and hasChildren()
+
+ Models that are dynamically populated are not as fully tested here.
+ */
+void ModelTest::rowCount()
+{
+ // check top row
+ QModelIndex topIndex = model->index(0, 0, QModelIndex());
+ int rows = model->rowCount(topIndex);
+ Q_ASSERT(rows >= 0);
+ if (rows > 0) {
+ Q_ASSERT(model->hasChildren(topIndex) == true);
+ }
+
+ QModelIndex secondLevelIndex = model->index(0, 0, topIndex);
+ if (secondLevelIndex.isValid()) { // not the top level
+ // check a row count where parent is valid
+ rows = model->rowCount(secondLevelIndex);
+ Q_ASSERT(rows >= 0);
+ if (rows > 0) {
+ Q_ASSERT(model->hasChildren(secondLevelIndex) == true);
+ }
+ }
+
+ // The models rowCount() is tested more extensively in checkChildren(),
+ // but this catches the big mistakes
+}
+
+/*!
+ Tests model's implementation of QAbstractItemModel::columnCount() and hasChildren()
+ */
+void ModelTest::columnCount()
+{
+ // check top row
+ QModelIndex topIndex = model->index(0, 0, QModelIndex());
+ Q_ASSERT(model->columnCount(topIndex) >= 0);
+
+ // check a column count where parent is valid
+ QModelIndex childIndex = model->index(0, 0, topIndex);
+ if (childIndex.isValid()) {
+ Q_ASSERT(model->columnCount(childIndex) >= 0);
+ }
+
+ // columnCount() is tested more extensively in checkChildren(),
+ // but this catches the big mistakes
+}
+
+/*!
+ Tests model's implementation of QAbstractItemModel::hasIndex()
+ */
+void ModelTest::hasIndex()
+{
+ // Make sure that invalid values returns an invalid index
+ Q_ASSERT(model->hasIndex(-2, -2) == false);
+ Q_ASSERT(model->hasIndex(-2, 0) == false);
+ Q_ASSERT(model->hasIndex(0, -2) == false);
+
+ int rows = model->rowCount();
+ int columns = model->columnCount();
+
+ // check out of bounds
+ Q_ASSERT(model->hasIndex(rows, columns) == false);
+ Q_ASSERT(model->hasIndex(rows + 1, columns + 1) == false);
+
+ if (rows > 0) {
+ Q_ASSERT(model->hasIndex(0, 0) == true);
+ }
+
+ // hasIndex() is tested more extensively in checkChildren(),
+ // but this catches the big mistakes
+}
+
+/*!
+ Tests model's implementation of QAbstractItemModel::index()
+ */
+void ModelTest::index()
+{
+ // Make sure that invalid values returns an invalid index
+ Q_ASSERT(model->index(-2, -2) == QModelIndex());
+ Q_ASSERT(model->index(-2, 0) == QModelIndex());
+ Q_ASSERT(model->index(0, -2) == QModelIndex());
+
+ int rows = model->rowCount();
+ int columns = model->columnCount();
+
+ if (rows == 0) {
+ return;
+ }
+
+ // Catch off by one errors
+ Q_ASSERT(model->index(rows, columns) == QModelIndex());
+ Q_ASSERT(model->index(0, 0).isValid() == true);
+
+ // Make sure that the same index is *always* returned
+ QModelIndex a = model->index(0, 0);
+ QModelIndex b = model->index(0, 0);
+ Q_ASSERT(a == b);
+
+ // index() is tested more extensively in checkChildren(),
+ // but this catches the big mistakes
+}
+
+/*!
+ Tests model's implementation of QAbstractItemModel::parent()
+ */
+void ModelTest::parent()
+{
+ // Make sure the model wont crash and will return an invalid QModelIndex
+ // when asked for the parent of an invalid index.
+ Q_ASSERT(model->parent(QModelIndex()) == QModelIndex());
+
+ if (model->rowCount() == 0) {
+ return;
+ }
+
+ // Column 0 | Column 1 |
+ // QModelIndex() | |
+ // \- topIndex | topIndex1 |
+ // \- childIndex | childIndex1 |
+
+ // Common error test #1, make sure that a top level index has a parent
+ // that is a invalid QModelIndex.
+ QModelIndex topIndex = model->index(0, 0, QModelIndex());
+ Q_ASSERT(model->parent(topIndex) == QModelIndex());
+
+ // Common error test #2, make sure that a second level index has a parent
+ // that is the first level index.
+ if (model->rowCount(topIndex) > 0) {
+ QModelIndex childIndex = model->index(0, 0, topIndex);
+ Q_ASSERT(model->parent(childIndex) == topIndex);
+ }
+
+ // Common error test #3, the second column should NOT have the same children
+ // as the first column in a row.
+ // Usually the second column shouldn't have children.
+ QModelIndex topIndex1 = model->index(0, 1, QModelIndex());
+ if (model->rowCount(topIndex1) > 0) {
+ QModelIndex childIndex = model->index(0, 0, topIndex);
+ QModelIndex childIndex1 = model->index(0, 0, topIndex1);
+ Q_ASSERT(childIndex != childIndex1);
+ }
+
+ // Full test, walk n levels deep through the model making sure that all
+ // parent's children correctly specify their parent.
+ checkChildren(QModelIndex());
+}
+
+/*!
+ Called from the parent() test.
+
+ A model that returns an index of parent X should also return X when asking
+ for the parent of the index.
+
+ This recursive function does pretty extensive testing on the whole model in an
+ effort to catch edge cases.
+
+ This function assumes that rowCount(), columnCount() and index() already work.
+ If they have a bug it will point it out, but the above tests should have already
+ found the basic bugs because it is easier to figure out the problem in
+ those tests then this one.
+ */
+void ModelTest::checkChildren(const QModelIndex &parent, int currentDepth)
+{
+ // First just try walking back up the tree.
+ QModelIndex p = parent;
+ while (p.isValid()) {
+ p = p.parent();
+ }
+
+ // For models that are dynamically populated
+ if (model->canFetchMore(parent)) {
+ fetchingMore = true;
+ model->fetchMore(parent);
+ fetchingMore = false;
+ }
+
+ int rows = model->rowCount(parent);
+ int columns = model->columnCount(parent);
+
+ if (rows > 0) {
+ Q_ASSERT(model->hasChildren(parent));
+ }
+
+ // Some further testing against rows(), columns(), and hasChildren()
+ Q_ASSERT(rows >= 0);
+ Q_ASSERT(columns >= 0);
+ if (rows > 0) {
+ Q_ASSERT(model->hasChildren(parent) == true);
+ }
+
+ //qCDebug(KLEOPATRA_LOG) << "parent:" << model->data(parent).toString() << "rows:" << rows
+ // << "columns:" << columns << "parent column:" << parent.column();
+
+ Q_ASSERT(model->hasIndex(rows + 1, 0, parent) == false);
+ for (int r = 0; r < rows; ++r) {
+ if (model->canFetchMore(parent)) {
+ fetchingMore = true;
+ model->fetchMore(parent);
+ fetchingMore = false;
+ }
+ Q_ASSERT(model->hasIndex(r, columns + 1, parent) == false);
+ for (int c = 0; c < columns; ++c) {
+ Q_ASSERT(model->hasIndex(r, c, parent) == true);
+ QModelIndex index = model->index(r, c, parent);
+ // rowCount() and columnCount() said that it existed...
+ Q_ASSERT(index.isValid() == true);
+
+ // index() should always return the same index when called twice in a row
+ QModelIndex modifiedIndex = model->index(r, c, parent);
+ Q_ASSERT(index == modifiedIndex);
+
+ // Make sure we get the same index if we request it twice in a row
+ QModelIndex a = model->index(r, c, parent);
+ QModelIndex b = model->index(r, c, parent);
+ Q_ASSERT(a == b);
+
+ // Some basic checking on the index that is returned
+ Q_ASSERT(index.model() == model);
+ Q_ASSERT(index.row() == r);
+ Q_ASSERT(index.column() == c);
+ // While you can technically return a QVariant usually this is a sign
+ // of an bug in data() Disable if this really is ok in your model.
+ Q_ASSERT(model->data(index, Qt::DisplayRole).isValid() == true);
+
+ // If the next test fails here is some somewhat useful debug you play with.
+ /*
+ if (model->parent(index) != parent) {
+ qCDebug(KLEOPATRA_LOG) << r << c << currentDepth << model->data(index).toString()
+ << model->data(parent).toString();
+ qCDebug(KLEOPATRA_LOG) << index << parent << model->parent(index);
+ // And a view that you can even use to show the model.
+ //QTreeView view;
+ //view.setModel(model);
+ //view.show();
+ }*/
+
+ // Check that we can get back our real parent.
+ Q_ASSERT(model->parent(index) == parent);
+
+ // recursively go down the children
+ if (model->hasChildren(index) && currentDepth < 10) {
+ //qCDebug(KLEOPATRA_LOG) << r << c << "has children" << model->rowCount(index);
+ checkChildren(index, ++currentDepth);
+ }/* else { if (currentDepth >= 10) qCDebug(KLEOPATRA_LOG) << "checked 10 deep"; };*/
+
+ // make sure that after testing the children that the index doesn't change.
+ QModelIndex newerIndex = model->index(r, c, parent);
+ Q_ASSERT(index == newerIndex);
+ }
+ }
+}
+
+/*!
+ Tests model's implementation of QAbstractItemModel::data()
+ */
+void ModelTest::data()
+{
+ // Invalid index should return an invalid qvariant
+ Q_ASSERT(!model->data(QModelIndex()).isValid());
+
+ if (model->rowCount() == 0) {
+ return;
+ }
+
+ // A valid index should have a valid QVariant data
+ Q_ASSERT(model->index(0, 0).isValid());
+
+ // shouldn't be able to set data on an invalid index
+ Q_ASSERT(model->setData(QModelIndex(), QLatin1String("foo"), Qt::DisplayRole) == false);
+
+ // General Purpose roles that should return a QString
+ QVariant variant = model->data(model->index(0, 0), Qt::ToolTipRole);
+ if (variant.isValid()) {
+ Q_ASSERT(variant.canConvert<QString>());
+ }
+ variant = model->data(model->index(0, 0), Qt::StatusTipRole);
+ if (variant.isValid()) {
+ Q_ASSERT(variant.canConvert<QString>());
+ }
+ variant = model->data(model->index(0, 0), Qt::WhatsThisRole);
+ if (variant.isValid()) {
+ Q_ASSERT(variant.canConvert<QString>());
+ }
+
+ // General Purpose roles that should return a QSize
+ variant = model->data(model->index(0, 0), Qt::SizeHintRole);
+ if (variant.isValid()) {
+ Q_ASSERT(variant.canConvert<QSize>());
+ }
+
+ // General Purpose roles that should return a QFont
+ QVariant fontVariant = model->data(model->index(0, 0), Qt::FontRole);
+ if (fontVariant.isValid()) {
+ Q_ASSERT(fontVariant.canConvert<QFont>());
+ }
+
+ // Check that the alignment is one we know about
+ QVariant textAlignmentVariant = model->data(model->index(0, 0), Qt::TextAlignmentRole);
+ if (textAlignmentVariant.isValid()) {
+ int alignment = textAlignmentVariant.toInt();
+ Q_ASSERT(alignment == Qt::AlignLeft ||
+ alignment == Qt::AlignRight ||
+ alignment == Qt::AlignHCenter ||
+ alignment == Qt::AlignJustify ||
+ alignment == Qt::AlignTop ||
+ alignment == Qt::AlignBottom ||
+ alignment == Qt::AlignVCenter ||
+ alignment == Qt::AlignCenter ||
+ alignment == Qt::AlignAbsolute ||
+ alignment == Qt::AlignLeading ||
+ alignment == Qt::AlignTrailing);
+ }
+
+ // General Purpose roles that should return a QColor
+ QVariant colorVariant = model->data(model->index(0, 0), Qt::BackgroundColorRole);
+ if (colorVariant.isValid()) {
+ Q_ASSERT(colorVariant.canConvert<QColor>());
+ }
+
+ colorVariant = model->data(model->index(0, 0), Qt::TextColorRole);
+ if (colorVariant.isValid()) {
+ Q_ASSERT(colorVariant.canConvert<QColor>());
+ }
+
+ // Check that the "check state" is one we know about.
+ QVariant checkStateVariant = model->data(model->index(0, 0), Qt::CheckStateRole);
+ if (checkStateVariant.isValid()) {
+ int state = checkStateVariant.toInt();
+ Q_ASSERT(state == Qt::Unchecked ||
+ state == Qt::PartiallyChecked ||
+ state == Qt::Checked);
+ }
+}
+
+/*!
+ Store what is about to be inserted to make sure it actually happens
+
+ \sa rowsInserted()
+ */
+void ModelTest::rowsAboutToBeInserted(const QModelIndex &parent, int start, int end)
+{
+ Q_UNUSED(end);
+ Changing c;
+ c.parent = parent;
+ c.oldSize = model->rowCount(parent);
+ c.last = model->data(model->index(start - 1, 0, parent));
+ c.next = model->data(model->index(start, 0, parent));
+ insert.push(c);
+}
+
+/*!
+ Confirm that what was said was going to happen actually did
+
+ \sa rowsAboutToBeInserted()
+ */
+void ModelTest::rowsInserted(const QModelIndex &parent, int start, int end)
+{
+ Changing c = insert.pop();
+ Q_ASSERT(c.parent == parent);
+ Q_ASSERT(c.oldSize + (end - start + 1) == model->rowCount(parent));
+ Q_ASSERT(c.last == model->data(model->index(start - 1, 0, c.parent)));
+ /*
+ if (c.next != model->data(model->index(end + 1, 0, c.parent))) {
+ qCDebug(KLEOPATRA_LOG) << start << end;
+ for (int i=0; i < model->rowCount(); ++i)
+ qCDebug(KLEOPATRA_LOG) << model->index(i, 0).data().toString();
+ qCDebug(KLEOPATRA_LOG) << c.next << model->data(model->index(end + 1, 0, c.parent));
+ }
+ */
+ Q_ASSERT(c.next == model->data(model->index(end + 1, 0, c.parent)));
+}
+
+void ModelTest::layoutAboutToBeChanged()
+{
+ for (int i = 0; i < qBound(0, model->rowCount(), 100); ++i) {
+ changing.append(QPersistentModelIndex(model->index(i, 0)));
+ }
+}
+
+void ModelTest::layoutChanged()
+{
+ for (int i = 0; i < changing.count(); ++i) {
+ QPersistentModelIndex p = changing[i];
+ Q_ASSERT(p == model->index(p.row(), p.column(), p.parent()));
+ }
+ changing.clear();
+}
+
+/*!
+ Store what is about to be inserted to make sure it actually happens
+
+ \sa rowsRemoved()
+ */
+void ModelTest::rowsAboutToBeRemoved(const QModelIndex &parent, int start, int end)
+{
+ Changing c;
+ c.parent = parent;
+ c.oldSize = model->rowCount(parent);
+ c.last = model->data(model->index(start - 1, 0, parent));
+ c.next = model->data(model->index(end + 1, 0, parent));
+ remove.push(c);
+}
+
+/*!
+ Confirm that what was said was going to happen actually did
+
+ \sa rowsAboutToBeRemoved()
+ */
+void ModelTest::rowsRemoved(const QModelIndex &parent, int start, int end)
+{
+ Changing c = remove.pop();
+ Q_ASSERT(c.parent == parent);
+ Q_ASSERT(c.oldSize - (end - start + 1) == model->rowCount(parent));
+ Q_ASSERT(c.last == model->data(model->index(start - 1, 0, c.parent)));
+ Q_ASSERT(c.next == model->data(model->index(start, 0, c.parent)));
+}
+
--- /dev/null
+/****************************************************************************
+**
+** Copyright (C) 2007 Trolltech ASA. All rights reserved.
+**
+** This file is part of the Qt Concurrent project on Trolltech Labs.
+**
+** This file may be used under the terms of the GNU General Public
+** License version 2.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of
+** this file. Please review the following information to ensure GNU
+** General Public Licensing requirements will be met:
+** http://www.trolltech.com/products/qt/opensource.html
+**
+** If you are unsure which license is appropriate for your use, please
+** review the following information:
+** http://www.trolltech.com/products/qt/licensing.html or contact the
+** sales department at sales@trolltech.com.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+****************************************************************************/
+
+#ifndef MODELTEST_H
+#define MODELTEST_H
+
+#include <QtCore/QObject>
+#include <QtCore/QAbstractItemModel>
+#include <QtCore/QStack>
+
+class ModelTest : public QObject
+{
+ Q_OBJECT
+
+public:
+ ModelTest(QAbstractItemModel *model, QObject *parent = nullptr);
+
+private Q_SLOTS:
+ void nonDestructiveBasicTest();
+ void rowCount();
+ void columnCount();
+ void hasIndex();
+ void index();
+ void parent();
+ void data();
+
+protected Q_SLOTS:
+ void runAllTests();
+ void layoutAboutToBeChanged();
+ void layoutChanged();
+ void rowsAboutToBeInserted(const QModelIndex &parent, int start, int end);
+ void rowsInserted(const QModelIndex &parent, int start, int end);
+ void rowsAboutToBeRemoved(const QModelIndex &parent, int start, int end);
+ void rowsRemoved(const QModelIndex &parent, int start, int end);
+
+private:
+ void checkChildren(const QModelIndex &parent, int currentDepth = 0);
+
+ QAbstractItemModel *model;
+
+ struct Changing {
+ QModelIndex parent;
+ int oldSize;
+ QVariant last;
+ QVariant next;
+ };
+ QStack<Changing> insert;
+ QStack<Changing> remove;
+
+ bool fetchingMore;
+
+ QList<QPersistentModelIndex> changing;
+};
+
+#endif
--- /dev/null
+/* -*- mode: c++; c-basic-offset:4 -*-
+ models/subkeylistmodel.cpp
+
+ This file is part of Kleopatra, the KDE keymanager
+ Copyright (c) 2007 Klarälvdalens Datakonsult AB
+
+ Kleopatra is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Kleopatra 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#include "subkeylistmodel.h"
+#include "utils/formatting.h"
+
+#include <gpgme++/key.h>
+
+#include <KLocalizedString>
+
+#include <QVariant>
+#include <QDate>
+
+#include <algorithm>
+#include <iterator>
+
+using namespace GpgME;
+using namespace Kleo;
+
+class SubkeyListModel::Private
+{
+ friend class ::Kleo::SubkeyListModel;
+ SubkeyListModel *const q;
+public:
+ explicit Private(SubkeyListModel *qq)
+ : q(qq), key() {}
+
+private:
+ Key key;
+};
+
+SubkeyListModel::SubkeyListModel(QObject *p)
+ : QAbstractTableModel(p), d(new Private(this))
+{
+
+}
+
+SubkeyListModel::~SubkeyListModel() {}
+
+Key SubkeyListModel::key() const
+{
+ return d->key;
+}
+
+// slot
+void SubkeyListModel::setKey(const Key &key)
+{
+
+ const Key oldKey = d->key;
+
+
+ if (qstricmp(key.primaryFingerprint(), oldKey.primaryFingerprint()) != 0) {
+ // different key -> reset
+ beginResetModel();
+ d->key = key;
+ endResetModel();
+ return;
+ }
+
+ d->key = key;
+
+ // ### diff them, and signal more fine-grained than this:
+
+ if (key.numSubkeys() > 0 && oldKey.numSubkeys() == key.numSubkeys()) {
+ Q_EMIT dataChanged(index(0, 0), index(key.numSubkeys() - 1, NumColumns - 1));
+ } else {
+ Q_EMIT layoutAboutToBeChanged();
+ Q_EMIT layoutChanged();
+ }
+}
+
+Subkey SubkeyListModel::subkey(const QModelIndex &idx) const
+{
+ if (idx.isValid()) {
+ return d->key.subkey(idx.row());
+ } else {
+ return Subkey();
+ }
+}
+
+std::vector<Subkey> SubkeyListModel::subkeys(const QList<QModelIndex> &indexes) const
+{
+ std::vector<Subkey> result;
+ result.reserve(indexes.size());
+ std::transform(indexes.begin(), indexes.end(),
+ std::back_inserter(result),
+ [this](const QModelIndex &idx) {
+ return subkey(idx);
+ });
+ return result;
+}
+
+QModelIndex SubkeyListModel::index(const Subkey &subkey, int col) const
+{
+ // O(N), but not sorted, so no better way...
+ for (unsigned int row = 0, end = d->key.numSubkeys(); row != end; ++row)
+ if (qstricmp(subkey.keyID(), d->key.subkey(row).keyID()) == 0) {
+ return index(row, col);
+ }
+ return QModelIndex();
+}
+
+QList<QModelIndex> SubkeyListModel::indexes(const std::vector<Subkey> &subkeys) const
+{
+ QList<QModelIndex> result;
+ result.reserve(subkeys.size());
+ // O(N*M), but who cares...?
+ std::transform(subkeys.begin(), subkeys.end(),
+ std::back_inserter(result),
+ [this](const Subkey &key) {
+ return index(key);
+ });
+ return result;
+}
+
+void SubkeyListModel::clear()
+{
+ beginResetModel();
+ d->key = Key::null;
+ endResetModel();
+}
+
+int SubkeyListModel::columnCount(const QModelIndex &) const
+{
+ return NumColumns;
+}
+
+int SubkeyListModel::rowCount(const QModelIndex &pidx) const
+{
+ return pidx.isValid() ? 0 : d->key.numSubkeys();
+}
+
+QVariant SubkeyListModel::headerData(int section, Qt::Orientation o, int role) const
+{
+ if (o == Qt::Horizontal)
+ if (role == Qt::DisplayRole || role == Qt::EditRole || role == Qt::ToolTipRole)
+ switch (section) {
+ case ID: return i18n("ID");
+ case Type: return i18n("Type");
+ case ValidFrom: return i18n("Valid From");
+ case ValidUntil: return i18n("Valid Until");
+ case Status: return i18n("Status");
+ case Strength: return i18n("Strength");
+ case Usage: return i18n("Usage");
+ case NumColumns:;
+ }
+ return QVariant();
+}
+
+QVariant SubkeyListModel::data(const QModelIndex &idx, int role) const
+{
+
+ if (role != Qt::DisplayRole && role != Qt::EditRole && role != Qt::ToolTipRole) {
+ return QVariant();
+ }
+
+ const Subkey subkey = this->subkey(idx);
+ if (subkey.isNull()) {
+ return QVariant();
+ }
+
+ switch (idx.column()) {
+ case ID:
+ return QString::fromLatin1(subkey.keyID());
+ case Type:
+ return Formatting::type(subkey);
+ case ValidFrom:
+ if (role == Qt::EditRole) {
+ return Formatting::creationDate(subkey);
+ } else {
+ return Formatting::creationDateString(subkey);
+ }
+ case ValidUntil:
+ if (role == Qt::EditRole) {
+ return Formatting::expirationDate(subkey);
+ } else {
+ return Formatting::expirationDateString(subkey);
+ }
+ case Status:
+ return Formatting::validityShort(subkey);
+ case Usage:
+ return Formatting::usageString(subkey);
+ case Strength:
+ const QString algName = QString::fromStdString(subkey.algoName());
+ // For ECC keys the algo name is something like bp512 and directly
+ // indicated the "strength"
+ return algName.isEmpty() ? QVariant(subkey.length()) : algName;
+ }
+
+ return QVariant();
+}
+
--- /dev/null
+/* -*- mode: c++; c-basic-offset:4 -*-
+ models/subkeylistmodel.h
+
+ This file is part of Kleopatra, the KDE keymanager
+ Copyright (c) 2007 Klarälvdalens Datakonsult AB
+
+ Kleopatra is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Kleopatra 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+#ifndef __KLEOPATRA_MODELS_SUBKEYLISTMODEL_H__
+#define __KLEOPATRA_MODELS_SUBKEYLISTMODEL_H__
+
+#include <QAbstractTableModel>
+
+#include <kleo_export.h>
+
+#include <vector>
+
+namespace GpgME
+{
+class Key;
+class Subkey;
+}
+
+namespace Kleo
+{
+
+class KLEO_EXPORT SubkeyListModel : public QAbstractTableModel
+{
+ Q_OBJECT
+public:
+ explicit SubkeyListModel(QObject *parent = nullptr);
+ ~SubkeyListModel();
+
+ GpgME::Key key() const;
+
+ enum Columns {
+ ID,
+ Type,
+ ValidFrom,
+ ValidUntil,
+ Status,
+ Strength,
+ Usage,
+
+ NumColumns,
+ Icon = ID // which column shall the icon be displayed in?
+ };
+
+ GpgME::Subkey subkey(const QModelIndex &idx) const;
+ std::vector<GpgME::Subkey> subkeys(const QList<QModelIndex> &indexes) const;
+
+ using QAbstractTableModel::index;
+ QModelIndex index(const GpgME::Subkey &subkey, int col = 0) const;
+ QList<QModelIndex> indexes(const std::vector<GpgME::Subkey> &subkeys) const;
+
+public Q_SLOTS:
+ void setKey(const GpgME::Key &key);
+ void clear();
+
+public:
+ int columnCount(const QModelIndex &pidx = QModelIndex()) const override;
+ int rowCount(const QModelIndex &pidx = QModelIndex()) const override;
+ QVariant headerData(int section, Qt::Orientation o, int role = Qt::DisplayRole) const override;
+ QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
+
+private:
+ class Private;
+ QScopedPointer<Private> const d;
+};
+
+}
+
+#endif /* __KLEOPATRA_MODELS_SUBKEYLISTMODEL_H__ */
--- /dev/null
+/* -*- mode: c++; c-basic-offset:4 -*-
+ models/useridlistmodel.cpp
+
+ This file is part of Kleopatra, the KDE keymanager
+ Copyright (c) 2007 Klarälvdalens Datakonsult AB
+ 2016 Andre Heinecke <aheinecke@gnupg.org>
+
+ Kleopatra is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Kleopatra 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#include "useridlistmodel.h"
+#include "utils/formatting.h"
+
+#include <gpgme++/key.h>
+
+#include <KLocalizedString>
+
+#include <QVariant>
+#include <QDate>
+
+using namespace GpgME;
+using namespace Kleo;
+
+class UIDModelItem
+{
+ // A uid model item can either be a UserID::Signature or a UserID.
+ // you can find out which it is if the uid or the signature return
+ // null values. (Not null but isNull)
+ //
+public:
+ explicit UIDModelItem(const UserID::Signature &sig, UIDModelItem *parentItem)
+ {
+ mItemData << QString::fromUtf8(sig.signerKeyID())
+ << Formatting::prettyName(sig)
+ << Formatting::prettyEMail(sig)
+ << Formatting::creationDateString(sig)
+ << Formatting::expirationDateString(sig)
+ << Formatting::validityShort(sig);
+ mSig = sig;
+ mParentItem = parentItem;
+ }
+
+ explicit UIDModelItem(const UserID &uid, UIDModelItem *parentItem)
+ {
+ mItemData << Formatting::prettyUserID(uid);
+ mUid = uid;
+ mParentItem = parentItem;
+ }
+
+ // The root item
+ explicit UIDModelItem() : mParentItem(nullptr)
+ {
+ mItemData << i18n("ID")
+ << i18n("Name")
+ << i18n("EMail")
+ << i18n("Valid From")
+ << i18n("Valid Until")
+ << i18n("Status");
+ }
+
+ ~UIDModelItem()
+ {
+ qDeleteAll(mChildItems);
+ }
+
+ void appendChild(UIDModelItem *child)
+ {
+ mChildItems << child;
+ }
+
+ UIDModelItem *child(int row) const
+ {
+ return mChildItems.value(row);
+ }
+
+ const UIDModelItem *constChild(int row) const
+ {
+ return mChildItems.value(row);
+ }
+
+ int childCount() const
+ {
+ return mChildItems.count();
+ }
+
+ int columnCount() const
+ {
+ if (childCount()) {
+ // We take the value from the first child
+ // as we are likely a UID and our children
+ // are UID Signatures.
+ return constChild(0)->columnCount();
+ }
+ return mItemData.count();
+ }
+
+ QVariant data(int column) const
+ {
+ return mItemData.value(column);
+ }
+
+ int row() const
+ {
+ if (mParentItem) {
+ return mParentItem->mChildItems.indexOf(const_cast<UIDModelItem*>(this));
+ }
+ return 0;
+ }
+
+ UIDModelItem *parentItem() const
+ {
+ return mParentItem;
+ }
+
+ UserID::Signature signature() const
+ {
+ return mSig;
+ }
+
+ UserID uid() const
+ {
+ return mUid;
+ }
+
+private:
+ QList<UIDModelItem*> mChildItems;
+ QList<QVariant> mItemData;
+ UIDModelItem *mParentItem;
+ UserID::Signature mSig;
+ UserID mUid;
+};
+
+UserIDListModel::UserIDListModel(QObject *p)
+ : QAbstractItemModel(p), mRootItem(nullptr)
+{
+}
+
+UserIDListModel::~UserIDListModel()
+{
+ delete mRootItem;
+}
+
+Key UserIDListModel::key() const
+{
+ return mKey;
+}
+
+void UserIDListModel::setKey(const Key &key)
+{
+ beginResetModel();
+ delete mRootItem;
+ mKey = key;
+
+ mRootItem = new UIDModelItem();
+ for (int i = 0, ids = key.numUserIDs(); i < ids; ++i) {
+ UserID uid = key.userID(i);
+ UIDModelItem *uidItem = new UIDModelItem(uid, mRootItem);
+ mRootItem->appendChild(uidItem);
+ for (int j = 0, sigs = uid.numSignatures(); j < sigs; ++j) {
+ UserID::Signature sig = uid.signature(j);
+ UIDModelItem *sigItem = new UIDModelItem(sig, uidItem);
+ uidItem->appendChild(sigItem);
+ }
+ }
+
+ endResetModel();
+}
+
+int UserIDListModel::columnCount(const QModelIndex &parent) const
+{
+ if (parent.isValid()) {
+ return static_cast<UIDModelItem*>(parent.internalPointer())->columnCount();
+ }
+
+ if (!mRootItem) {
+ return 0;
+ }
+
+ return mRootItem->columnCount();
+}
+
+int UserIDListModel::rowCount(const QModelIndex &parent) const
+{
+ UIDModelItem *parentItem;
+ if (parent.column() > 0 || !mRootItem) {
+ return 0;
+ }
+
+ if (!parent.isValid()) {
+ parentItem = mRootItem;
+ } else {
+ parentItem = static_cast<UIDModelItem*>(parent.internalPointer());
+ }
+
+ return parentItem->childCount();
+}
+
+QModelIndex UserIDListModel::index(int row, int column, const QModelIndex &parent) const
+{
+ if (!hasIndex(row, column, parent)) {
+ return QModelIndex();
+ }
+
+ UIDModelItem *parentItem;
+
+ if (!parent.isValid()) {
+ parentItem = mRootItem;
+ } else {
+ parentItem = static_cast<UIDModelItem*>(parent.internalPointer());
+ }
+
+ UIDModelItem *childItem = parentItem->child(row);
+ if (childItem) {
+ return createIndex(row, column, childItem);
+ } else {
+ return QModelIndex();
+ }
+}
+
+QModelIndex UserIDListModel::parent(const QModelIndex &index) const
+{
+ if (!index.isValid()) {
+ return QModelIndex();
+ }
+ UIDModelItem *childItem = static_cast<UIDModelItem*>(index.internalPointer());
+ UIDModelItem *parentItem = childItem->parentItem();
+
+ if (parentItem == mRootItem) {
+ return QModelIndex();
+ }
+
+ return createIndex(parentItem->row(), 0, parentItem);
+}
+
+QVariant UserIDListModel::headerData(int section, Qt::Orientation o, int role) const
+{
+ if (o == Qt::Horizontal && mRootItem) {
+ if (role == Qt::DisplayRole || role == Qt::EditRole || role == Qt::ToolTipRole) {
+ return mRootItem->data(section);
+ }
+ }
+ return QVariant();
+}
+
+QVariant UserIDListModel::data(const QModelIndex &index, int role) const
+{
+ if (!index.isValid()) {
+ return QVariant();
+ }
+
+ if (role != Qt::DisplayRole && role != Qt::EditRole && role != Qt::ToolTipRole) {
+ return QVariant();
+ }
+
+ UIDModelItem *item = static_cast<UIDModelItem*>(index.internalPointer());
+
+ return item->data(index.column());
+}
+
+QVector<UserID> UserIDListModel::userIDs (const QModelIndexList &indexs) const {
+ QVector<GpgME::UserID> ret;
+ for (const QModelIndex &idx : indexs) {
+ if (!idx.isValid()) {
+ continue;
+ }
+ UIDModelItem *item = static_cast<UIDModelItem*>(idx.internalPointer());
+ if (!item->uid().isNull()) {
+ ret << item->uid();
+ }
+ }
+ return ret;
+}
+
+QVector<UserID::Signature> UserIDListModel::signatures (const QModelIndexList &indexs) const {
+ QVector<GpgME::UserID::Signature> ret;
+ for (const QModelIndex &idx : indexs) {
+ if (!idx.isValid()) {
+ continue;
+ }
+ UIDModelItem *item = static_cast<UIDModelItem*>(idx.internalPointer());
+ if (!item->signature().isNull()) {
+ ret << item->signature();
+ }
+ }
+ return ret;
+}
--- /dev/null
+/* -*- mode: c++; c-basic-offset:4 -*-
+ models/userIDlistmodel.h
+
+ This file is part of Kleopatra, the KDE keymanager
+ Copyright (c) 2007 Klarälvdalens Datakonsult AB
+ 2016 Andre Heinecke <aheinecke@gnupg.org>
+
+ Kleopatra is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Kleopatra 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+#ifndef __KLEOPATRA_MODELS_USERIDLISTMODEL_H__
+#define __KLEOPATRA_MODELS_USERIDLISTMODEL_H__
+
+#include <QAbstractItemModel>
+
+#include <kleo_export.h>
+
+#include <gpgme++/key.h> // since Signature is nested in UserID...
+
+class UIDModelItem;
+
+namespace Kleo
+{
+
+class KLEO_EXPORT UserIDListModel : public QAbstractItemModel
+{
+ Q_OBJECT
+public:
+ explicit UserIDListModel(QObject *parent = nullptr);
+ ~UserIDListModel();
+
+ GpgME::Key key() const;
+
+public:
+ QVector<GpgME::UserID> userIDs(const QModelIndexList &indexs) const;
+ QVector<GpgME::UserID::Signature> signatures(const QModelIndexList &indexs) const;
+
+public Q_SLOTS:
+ void setKey(const GpgME::Key &key);
+
+public:
+ int columnCount(const QModelIndex &pindex = QModelIndex()) const override;
+ int rowCount(const QModelIndex &pindex = QModelIndex()) const override;
+ QVariant headerData(int section, Qt::Orientation o, int role = Qt::DisplayRole) const override;
+ QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
+
+ QModelIndex index(int row, int col, const QModelIndex &parent = QModelIndex()) const override;
+ QModelIndex parent(const QModelIndex &index) const override;
+
+private:
+ GpgME::Key mKey;
+ UIDModelItem *mRootItem;
+};
+
+}
+
+#endif /* __KLEOPATRA_MODELS_USERIDLISTMODEL_H__ */
--- /dev/null
+install(FILES
+hi16-app-gpg.png
+hi16-app-gpgsm.png
+hi22-app-gpg.png
+hi22-app-gpgsm.png
+hi32-app-gpg.png
+hi32-app-gpgsm.png
+chiasmus_chi.png
+key.png
+key_ok.png
+key_bad.png
+key_unknown.png
+smartcard.xpm
+DESTINATION ${KDE_INSTALL_DATADIR}/libkleopatra/pics)
--- /dev/null
+/* XPM */
+static char * smartcard_xpm[] = {
+"24 24 6 1",
+" c None",
+". c #CFCCC8",
+"+ c #8F8D8B",
+"@ c #FFFFFF",
+"# c #FFD700",
+"$ c #FF9D00",
+" ",
+" ",
+" ",
+" ",
+" ",
+" .+++++++++++++++++++. ",
+".+@@@@@@@@@@@@@@@@@@@+. ",
+"+@@@@@@@@@@@@@@@@@@@@@+ ",
+"+@@@@@@@@@@@@@@@@@@@@@+ ",
+"+@@###$@@@@@@@@@@@@@@@+ ",
+"+@@$###@@@@@@@@@@@@@@@+ ",
+"+@@###$@@@@@@@@@@@@@@@+ ",
+"+@@$###@@@@@@@@@@@@@@@+ ",
+"+@@@@@@@@@@@@@@@@@@@@@+ ",
+"+@@@@@@@@@@@@@@@@@@@@@+ ",
+"+@@@@@@@@@@@@@@@@@@@@@+ ",
+"+@@@@@@@@@@@@@@@@@@@@@+ ",
+"+@@@@@@@@@@@@@@@@@@@@@+ ",
+".+@@@@@@@@@@@@@@@@@@@+. ",
+" .+++++++++++++++++++. ",
+" ",
+" ",
+" ",
+" "};
--- /dev/null
+# Convenience macro to add kleo unit tests.
+macro( add_kleo_test _source )
+ set( _test ${_source} )
+ get_filename_component( _name ${_source} NAME_WE )
+ add_executable( ${_name} ${_test} )
+ ecm_mark_as_test(kleo-${_name})
+ target_link_libraries(${_name} KF5::Libkleo Qt5::Widgets KF5::CoreAddons KF5::I18n KF5::WidgetsAddons)
+endmacro()
+
+
+add_kleo_test(test_kdhorizontalline.cpp)
+add_kleo_test(test_jobs.cpp)
+add_kleo_test(test_cryptoconfig.cpp)
+add_kleo_test(test_keyselectiondialog.cpp)
+add_kleo_test(test_keygen.cpp)
+add_kleo_test(test_keylister.cpp)
+add_kleo_test(test_auditlog.cpp)
+add_kleo_test(test_keyformailbox.cpp)
+add_kleo_test(test_keyselectioncombo.cpp)
--- /dev/null
+/*
+ gnupgviewer.h
+
+ This file is part of libkleopatra's test suite.
+ Copyright (c) 2004 Klarälvdalens Datakonsult AB
+
+ Libkleopatra is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ Libkleopatra 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#ifndef __KLEO_TESTS_GNUPGVIEWER_H__
+#define __KLEO_TESTS_GNUPGVIEWER_H__
+
+#include <qtextedit.h>
+#include <QString>
+#include <QProcess>
+namespace Kleo
+{
+class GnuPGProcessBase;
+}
+class QStringList;
+
+class GnuPGViewer : public QTextEdit
+{
+ Q_OBJECT
+public:
+ GnuPGViewer(QWidget *parent = nullptr);
+ ~GnuPGViewer();
+
+ void setProcess(Kleo::GnuPGProcessBase *process);
+
+private Q_SLOTS:
+ void slotStdout();
+ void slotStderr();
+ void slotStatus(Kleo::GnuPGProcessBase *, const QString &, const QStringList &);
+ void slotProcessExited(int, QProcess::ExitStatus);
+
+private:
+ Kleo::GnuPGProcessBase *mProcess;
+ QString mLastStdout, mLastStderr, mLastStatus;
+};
+
+#endif // __KLEO_TESTS_GNUPGVIEWER_H__
--- /dev/null
+/*
+ test_auditlog.cpp
+
+ This file is part of libkleopatra's test suite.
+ Copyright (c) 2016 by Bundesamt für Sicherheit in der Informationstechnik
+ Software engineering by Intevation GmbH
+
+ Libkleopatra is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License,
+ version 2, as published by the Free Software Foundation.
+
+ Libkleopatra 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+const char * auditlog =
+"<div class=\"GnuPGAuditLog\">"
+"<table border=\"0\">"
+" <colgroup>"
+" <col width=\"80%\" />"
+" <col width=\"20%\" />"
+" </colgroup>"
+" <tr><td><table><tr><td><font color=\"green\">*</font></td><td>Data verification succeeded</td></tr></table></td><td><font color=\"green\">Yes</font></td></tr>"
+" <tr><td><table><tr><td><font color=\"green\">*</font> </td><td>Data available</td></tr></table></td><td><font color=\"green\">Yes</font></td></tr>"
+" <tr><td><table><tr><td><font color=\"green\">*</font> </td><td>Signature available</td></tr></table></td><td><font color=\"green\">Yes</font></td></tr>"
+" <tr><td><table><tr><td><font color=\"green\">*</font> </td><td>Parsing data succeeded</td></tr></table></td><td><font color=\"green\">Yes</font></td></tr>"
+" <tr><td><table><tr><td>* </td><td> (data hash algorithm: SHA1)</td></tr></table></td></tr>"
+" <tr><td><table><tr><td><font color=\"green\">*</font> </td><td>Signature 0</td></tr></table></td><td><font color=\"green\">Good</font></td></tr>"
+" <tr><td><table><tr><td>* </td><td> (#0B/CN=Email CA 2013,O=Intevation GmbH,C=DE)</td></tr></table></td></tr>"
+" <tr><td><table><tr><td>* </td><td> (data hash algorithm: SHA1)</td></tr></table></td></tr>"
+" <tr><td><table><tr><td>* </td><td> (attr hash algorithm: SHA1)</td></tr></table></td></tr>"
+" <tr><td><table><tr><td><font color=\"green\">*</font> </td><td>Certificate chain available</td></tr></table></td><td><font color=\"green\">Yes</font></td></tr>"
+" <tr><td><table><tr><td>* </td><td> (#00/CN=Root CA 2010,O=Intevation GmbH,C=DE)</td></tr></table></td></tr>"
+" <tr><td><table><tr><td>* </td><td> (#04/CN=Root CA 2010,O=Intevation GmbH,C=DE)</td></tr></table></td></tr>"
+" <tr><td><table><tr><td>* </td><td> (/CN=Email CA 2013,O=Intevation GmbH,C=DE)</td></tr></table></td></tr>"
+" <tr><td><table><tr><td>* </td><td> (/<ca@intevation.de>)</td></tr></table></td></tr>"
+" <tr><td><table><tr><td>* </td><td> (/(3:uri24:http://ca.intevation.org))</td></tr></table></td></tr>"
+" <tr><td><table><tr><td>* </td><td> (#0B/CN=Email CA 2013,O=Intevation GmbH,C=DE)</td></tr></table></td></tr>"
+" <tr><td><table><tr><td>* </td><td> (/CN=Andre Heinecke,O=Intevation GmbH,C=DE)</td></tr></table></td></tr>"
+" <tr><td><table><tr><td>* </td><td> (/<andre.heinecke@intevation.de>)</td></tr></table></td></tr>"
+" <tr><td><table><tr><td>* </td><td> (/<aheinecke@intevation.de>)</td></tr></table></td></tr>"
+" <tr><td><table><tr><td>* </td><td> (/<andre@heinecke.or.at>)</td></tr></table></td></tr>"
+" <tr><td><table><tr><td><font color=\"green\">*</font> </td><td>Certificate chain valid</td></tr></table></td><td><font color=\"green\">Yes</font></td></tr>"
+" <tr><td><table><tr><td><font color=\"green\">*</font> </td><td>Root certificate trustworthy</td></tr></table></td><td><font color=\"green\">Yes</font></td></tr>"
+" <tr><td><table><tr><td>* </td><td>CRL/OCSP check of certificates</td></tr></table></td><td>Not enabled</td></tr>"
+" <tr><td><table><tr><td>* </td><td>Included certificates</td></tr></table></td><td>2</td></tr>"
+" <tr><td><table><tr><td>* </td><td> (#0B/CN=Email CA 2013,O=Intevation GmbH,C=DE)</td></tr></table></td></tr>"
+" <tr><td><table><tr><td>* </td><td> (/CN=Andre Heinecke,O=Intevation GmbH,C=DE)</td></tr></table></td></tr>"
+" <tr><td><table><tr><td>* </td><td> (/<andre.heinecke@intevation.de>)</td></tr></table></td></tr>"
+" <tr><td><table><tr><td>* </td><td> (/<aheinecke@intevation.de>)</td></tr></table></td></tr>"
+" <tr><td><table><tr><td>* </td><td> (/<andre@heinecke.or.at>)</td></tr></table></td></tr>"
+" <tr><td><table><tr><td>* </td><td> (#04/CN=Root CA 2010,O=Intevation GmbH,C=DE)</td></tr></table></td></tr>"
+" <tr><td><table><tr><td>* </td><td> (/CN=Email CA 2013,O=Intevation GmbH,C=DE)</td></tr></table></td></tr>"
+" <tr><td><table><tr><td>* </td><td> (/<ca@intevation.de>)</td></tr></table></td></tr>"
+" <tr><td><table><tr><td>* </td><td> (/(3:uri24:http://ca.intevation.org))</td></tr></table></td></tr>"
+" <tr><td><table><tr><td><font color=\"green\">*</font></td><td>Gpg-Agent usable</td></tr></table></td><td><font color=\"green\">Yes</font></td></tr>"
+"</table>"
+"</div>";
+
+#include "libkleo/messagebox.h"
+
+#include <KAboutData>
+
+#include <QDebug>
+
+#include <QApplication>
+#include <KLocalizedString>
+#include <QCommandLineParser>
+
+int main(int argc, char **argv)
+{
+
+ QApplication app(argc, argv);
+ KAboutData aboutData(QStringLiteral("test_auditlog"), i18n("Auditlog Test"), QStringLiteral("0.1"));
+ QCommandLineParser parser;
+ KAboutData::setApplicationData(aboutData);
+ parser.addVersionOption();
+ parser.addHelpOption();
+ aboutData.setupCommandLine(&parser);
+ parser.process(app);
+ aboutData.processCommandLine(&parser);
+
+ Kleo::MessageBox::auditLog(nullptr, QString::fromLatin1(auditlog), QStringLiteral("Test"));
+
+ return app.exec();
+}
+
--- /dev/null
+/*
+ test_cryptoconfig.cpp
+
+ This file is part of libkleopatra's test suite.
+ Copyright (c) 2004 Klarälvdalens Datakonsult AB
+
+ Libkleopatra is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License,
+ version 2, as published by the Free Software Foundation.
+
+ Libkleopatra 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#include <qgpgme/qgpgmenewcryptoconfig.h>
+
+#include <QCoreApplication>
+#include <iostream>
+
+using namespace std;
+using namespace QGpgME;
+
+#include <gpgme++/global.h>
+#include <gpgme++/error.h>
+
+#include <stdlib.h>
+
+int main(int argc, char **argv)
+{
+
+ if (GpgME::initializeLibrary(0)) {
+ return 1;
+ }
+
+ QCoreApplication::setApplicationName(QStringLiteral("test_cryptoconfig"));
+ QCoreApplication app(argc, argv);
+
+ QGpgME::CryptoConfig *config = new QGpgMENewCryptoConfig;
+
+ // Dynamic querying of the options
+ cout << "Components:" << endl;
+ QStringList components = config->componentList();
+
+ for (QStringList::Iterator compit = components.begin(); compit != components.end(); ++compit) {
+ cout << "Component " << (*compit).toLocal8Bit().constData() << ":" << endl;
+ const QGpgME::CryptoConfigComponent *comp = config->component(*compit);
+ Q_ASSERT(comp);
+ QStringList groups = comp->groupList();
+ for (QStringList::Iterator groupit = groups.begin(); groupit != groups.end(); ++groupit) {
+ const QGpgME::CryptoConfigGroup *group = comp->group(*groupit);
+ Q_ASSERT(group);
+ cout << " Group " << (*groupit).toLocal8Bit().constData() << ": descr=\"" << group->description().toLocal8Bit().constData() << "\""
+ << " level=" << group->level() << endl;
+ QStringList entries = group->entryList();
+ for (QStringList::Iterator entryit = entries.begin(); entryit != entries.end(); ++entryit) {
+ const QGpgME::CryptoConfigEntry *entry = group->entry(*entryit);
+ Q_ASSERT(entry);
+ cout << " Entry " << (*entryit).toLocal8Bit().constData() << ":"
+ << " descr=\"" << entry->description().toLocal8Bit().constData() << "\""
+ << " " << (entry->isSet() ? "is set" : "is not set");
+ if (!entry->isList())
+ switch (entry->argType()) {
+ case QGpgME::CryptoConfigEntry::ArgType_None:
+ break;
+ case QGpgME::CryptoConfigEntry::ArgType_Int:
+ cout << " int value=" << entry->intValue();
+ break;
+ case QGpgME::CryptoConfigEntry::ArgType_UInt:
+ cout << " uint value=" << entry->uintValue();
+ break;
+ case QGpgME::CryptoConfigEntry::ArgType_LDAPURL:
+ case QGpgME::CryptoConfigEntry::ArgType_Path:
+ // fallthrough
+ case QGpgME::CryptoConfigEntry::ArgType_DirPath:
+ // fallthrough
+ case QGpgME::CryptoConfigEntry::ArgType_String:
+
+ cout << " string value=" << entry->stringValue().toLocal8Bit().constData();
+ break;
+ case QGpgME::CryptoConfigEntry::NumArgType:
+ // just metadata and should never actually occur in the switch
+ break;
+ }
+ else { // lists
+ switch (entry->argType()) {
+ case QGpgME::CryptoConfigEntry::ArgType_None: {
+ cout << " set " << entry->numberOfTimesSet() << " times";
+ break;
+ }
+ case QGpgME::CryptoConfigEntry::ArgType_Int: {
+ // (marc) if an entry isn't optional, you have to unset it for the default to take effect, so this Q_ASSERT is wrong:
+ // Q_ASSERT( entry->isOptional() ); // empty lists must be allowed (see https://www.intevation.de/roundup/aegypten/issue121)
+ std::vector<int> lst = entry->intValueList();
+ QString str;
+ for (std::vector<int>::const_iterator it = lst.begin(); it != lst.end(); ++it) {
+ str += QString::number(*it);
+ }
+ cout << " int values=" << str.toLocal8Bit().constData();
+ break;
+ }
+ case QGpgME::CryptoConfigEntry::ArgType_UInt: {
+ // (marc) if an entry isn't optional, you have to unset it for the default to take effect, so this Q_ASSERT is wrong:
+ // Q_ASSERT( entry->isOptional() ); // empty lists must be allowed (see https://www.intevation.de/roundup/aegypten/issue121)
+ std::vector<uint> lst = entry->uintValueList();
+ QString str;
+ for (std::vector<uint>::const_iterator it = lst.begin(); it != lst.end(); ++it) {
+ str += QString::number(*it);
+ }
+ cout << " uint values=" << str.toLocal8Bit().constData();
+ break;
+ }
+ case QGpgME::CryptoConfigEntry::ArgType_LDAPURL: {
+ // (marc) if an entry isn't optional, you have to unset it for the default to take effect, so this Q_ASSERT is wrong:
+ // Q_ASSERT( entry->isOptional() ); // empty lists must be allowed (see https://www.intevation.de/roundup/aegypten/issue121)
+ const QList<QUrl> urls = entry->urlValueList();
+ cout << " url values ";
+ for (const QUrl &url : urls) {
+ cout << url.toString().toLocal8Bit().constData() << " ";
+ }
+ cout << endl;
+ }
+ // fallthrough
+ case QGpgME::CryptoConfigEntry::ArgType_Path:
+ // fallthrough
+ case QGpgME::CryptoConfigEntry::ArgType_DirPath:
+ // fallthrough
+ case QGpgME::CryptoConfigEntry::ArgType_String:
+ // fallthrough string value lists were removed from
+ // gpgconf in 2008
+ case QGpgME::CryptoConfigEntry::NumArgType:
+ // just metadata and should never actually occur in the switch
+ break;
+ }
+ }
+ cout << endl;
+ }
+ // ...
+ }
+ }
+
+ {
+ // Static querying of a single boolean option
+ static const QString s_groupName = QStringLiteral("Monitor");
+ static const QString s_entryName = QStringLiteral("quiet");
+ QGpgME::CryptoConfigEntry *entry = config->entry(QStringLiteral("dirmngr"), s_groupName, s_entryName);
+ if (entry) {
+ Q_ASSERT(entry->argType() == QGpgME::CryptoConfigEntry::ArgType_None);
+ bool val = entry->boolValue();
+ cout << "quiet option initially: " << (val ? "is set" : "is not set") << endl;
+
+ entry->setBoolValue(!val);
+ Q_ASSERT(entry->isDirty());
+ config->sync(true);
+
+ // Clear cached values!
+ config->clear();
+
+ // Check new value
+ QGpgME::CryptoConfigEntry *entry = config->entry(QStringLiteral("dirmngr"), s_groupName, s_entryName);
+ Q_ASSERT(entry);
+ Q_ASSERT(entry->argType() == QGpgME::CryptoConfigEntry::ArgType_None);
+ cout << "quiet option now: " << (val ? "is set" : "is not set") << endl;
+ Q_ASSERT(entry->boolValue() == !val);
+
+ // Set to default
+ entry->resetToDefault();
+ Q_ASSERT(entry->boolValue() == false); // that's the default
+ Q_ASSERT(entry->isDirty());
+ Q_ASSERT(!entry->isSet());
+ config->sync(true);
+ config->clear();
+
+ // Check value
+ entry = config->entry(QStringLiteral("dirmngr"), s_groupName, s_entryName);
+ Q_ASSERT(!entry->isDirty());
+ Q_ASSERT(!entry->isSet());
+ cout << "quiet option reset to default: " << (entry->boolValue() ? "is set" : "is not set") << endl;
+ Q_ASSERT(entry->boolValue() == false);
+
+ // Reset old value
+ entry->setBoolValue(val);
+ Q_ASSERT(entry->isDirty());
+ config->sync(true);
+
+ cout << "quiet option reset to initial: " << (val ? "is set" : "is not set") << endl;
+ } else {
+ cout << "Entry 'dirmngr/" << qPrintable(s_groupName) << "/" << qPrintable(s_entryName) << "' not found" << endl;
+ }
+ }
+
+ {
+ // Static querying and setting of a single int option
+ static const QString s_groupName = QStringLiteral("LDAP");
+ static const QString s_entryName = QStringLiteral("ldaptimeout");
+ QGpgME::CryptoConfigEntry *entry = config->entry(QStringLiteral("dirmngr"), s_groupName, s_entryName);
+ if (entry) {
+ Q_ASSERT(entry->argType() == QGpgME::CryptoConfigEntry::ArgType_UInt);
+ uint val = entry->uintValue();
+ cout << "LDAP timeout initially: " << val << " seconds." << endl;
+
+ // Test setting the option directly, then querying again
+ //system( "echo 'ldaptimeout:0:101' | gpgconf --change-options dirmngr" );
+ // Now let's do it with the C++ API instead
+ entry->setUIntValue(101);
+ Q_ASSERT(entry->isDirty());
+ config->sync(true);
+
+ // Clear cached values!
+ config->clear();
+
+ // Check new value
+ QGpgME::CryptoConfigEntry *entry = config->entry(QStringLiteral("dirmngr"), s_groupName, s_entryName);
+ Q_ASSERT(entry);
+ Q_ASSERT(entry->argType() == QGpgME::CryptoConfigEntry::ArgType_UInt);
+ cout << "LDAP timeout now: " << entry->uintValue() << " seconds." << endl;
+ Q_ASSERT(entry->uintValue() == 101);
+
+ // Set to default
+ entry->resetToDefault();
+ Q_ASSERT(entry->uintValue() == 100);
+ Q_ASSERT(entry->isDirty());
+ Q_ASSERT(!entry->isSet());
+ config->sync(true);
+ config->clear();
+
+ // Check value
+ entry = config->entry(QStringLiteral("dirmngr"), s_groupName, s_entryName);
+ Q_ASSERT(!entry->isDirty());
+ Q_ASSERT(!entry->isSet());
+ cout << "LDAP timeout reset to default, " << entry->uintValue() << " seconds." << endl;
+ Q_ASSERT(entry->uintValue() == 100);
+
+ // Reset old value
+ entry->setUIntValue(val);
+ Q_ASSERT(entry->isDirty());
+ config->sync(true);
+
+ cout << "LDAP timeout reset to initial " << val << " seconds." << endl;
+ } else {
+ cout << "Entry 'dirmngr/" << qPrintable(s_groupName) << "/" << qPrintable(s_entryName) << "' not found" << endl;
+ }
+ }
+
+ {
+ // Static querying and setting of a single string option
+ static const QString s_groupName = QStringLiteral("Debug");
+ static const QString s_entryName = QStringLiteral("log-file");
+ QGpgME::CryptoConfigEntry *entry = config->entry(QStringLiteral("dirmngr"), s_groupName, s_entryName);
+ if (entry) {
+ Q_ASSERT(entry->argType() == QGpgME::CryptoConfigEntry::ArgType_Path);
+ QString val = entry->stringValue();
+ cout << "Log-file initially: " << val.toLocal8Bit().constData() << endl;
+
+ // Test setting the option, sync'ing, then querying again
+ entry->setStringValue(QStringLiteral("/tmp/test:%e5ä"));
+ Q_ASSERT(entry->isDirty());
+ config->sync(true);
+
+ // Let's see how it prints it
+ system("gpgconf --list-options dirmngr | grep log-file");
+
+ // Clear cached values!
+ config->clear();
+
+ // Check new value
+ QGpgME::CryptoConfigEntry *entry = config->entry(QStringLiteral("dirmngr"), s_groupName, s_entryName);
+ Q_ASSERT(entry);
+ Q_ASSERT(entry->argType() == QGpgME::CryptoConfigEntry::ArgType_Path);
+ cout << "Log-file now: " << entry->stringValue().toLocal8Bit().constData() << endl;
+ Q_ASSERT(entry->stringValue() == QStringLiteral("/tmp/test:%e5ä")); // (or even with %e5 decoded)
+
+ // Reset old value
+#if 0
+ QString arg(val);
+ if (!arg.isEmpty()) {
+ arg.prepend('"');
+ }
+ Q3CString sys;
+ sys.sprintf("echo 'log-file:%s' | gpgconf --change-options dirmngr", arg.local8Bit().data());
+ system(sys.data());
+#endif
+ entry->setStringValue(val);
+ Q_ASSERT(entry->isDirty());
+ config->sync(true);
+
+ cout << "Log-file reset to initial " << val.toLocal8Bit().constData() << endl;
+ } else {
+ cout << "Entry 'dirmngr/" << qPrintable(s_groupName) << "/" << qPrintable(s_entryName) << "' not found" << endl;
+ }
+ }
+
+ {
+ // Static querying and setting of the LDAP URL list option
+ static const QString s_groupName = QStringLiteral("LDAP");
+ static const QString s_entryName = QStringLiteral("LDAP Server");
+ QGpgME::CryptoConfigEntry *entry = config->entry(QStringLiteral("dirmngr"), s_groupName, s_entryName);
+ if (entry) {
+ Q_ASSERT(entry->argType() == QGpgME::CryptoConfigEntry::ArgType_LDAPURL);
+ Q_ASSERT(entry->isList());
+ const QList<QUrl> val = entry->urlValueList();
+ cout << "URL list initially: ";
+ for (const QUrl &url : val) {
+ cout << url.toString().toLocal8Bit().constData() << ", ";
+ }
+ cout << endl;
+
+ // Test setting the option, sync'ing, then querying again
+ QList<QUrl> lst;
+ lst << QUrl(QStringLiteral("ldap://a:389?b"));
+ lst << QUrl(QStringLiteral("ldap://foo:389?a:b c"));
+ lst << QUrl(QStringLiteral("ldap://server:389?a=b,c=DE")); // the query contains a literal ','
+ //cout << " trying to set: " << lst.toStringList().join(", ").local8Bit() << endl;
+ Q_ASSERT(lst[0].query() == QStringLiteral("b"));
+ Q_ASSERT(lst[1].query() == QStringLiteral("a:b c")); // see, the space got _not_escaped
+ entry->setURLValueList(lst);
+ Q_ASSERT(entry->isDirty());
+ config->sync(true);
+
+ // Let's see how it prints it
+ system("gpgconf --list-options dirmngr | grep 'LDAP Server'");
+
+ // Clear cached values!
+ config->clear();
+
+ // Check new value
+ QGpgME::CryptoConfigEntry *entry = config->entry(QStringLiteral("dirmngr"), s_groupName, s_entryName);
+ Q_ASSERT(entry);
+ Q_ASSERT(entry->argType() == QGpgME::CryptoConfigEntry::ArgType_LDAPURL);
+ Q_ASSERT(entry->isList());
+ // Get QUrl form
+ const QList<QUrl> newlst = entry->urlValueList();
+ cout << "URL list now: ";
+ for (const QUrl &url : newlst) {
+ cout << url.toString().toLocal8Bit().constData() << endl;
+ }
+ cout << endl;
+ Q_ASSERT(newlst.count() == 3);
+ Q_ASSERT(newlst[0].url() == lst[0].url());
+ Q_ASSERT(newlst[1].url() == lst[1].url());
+ Q_ASSERT(newlst[2].url() == lst[2].url());
+
+ // Reset old value
+ entry->setURLValueList(val);
+ Q_ASSERT(entry->isDirty());
+ config->sync(true);
+
+ cout << "URL list reset to initial: ";
+ for (const QUrl &url : qAsConst(newlst)) {
+ cout << url.toString().toLocal8Bit().constData() << ", ";
+ }
+ cout << endl;
+ } else {
+ cout << "Entry 'dirmngr/" << qPrintable(s_groupName) << "/" << qPrintable(s_entryName) << "' not found" << endl;
+ }
+ }
+
+ cout << "Done." << endl;
+}
--- /dev/null
+/*
+ test_jobs.cpp
+
+ This file is part of libkleopatra's test suite.
+ Copyright (c) 2004 Klarälvdalens Datakonsult AB
+
+ Libkleopatra is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License,
+ version 2, as published by the Free Software Foundation.
+
+ Libkleopatra 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#include <qgpgme/protocol.h>
+#include <qgpgme/signjob.h>
+#include <qgpgme/keylistjob.h>
+
+#include <gpgme++/key.h>
+#include <gpgme++/signingresult.h>
+#include <gpgme++/keylistresult.h>
+
+#include <QDebug>
+#include <KAboutData>
+
+#include <memory>
+#include <QApplication>
+#include <KLocalizedString>
+#include <QCommandLineParser>
+
+static const char *protocol = nullptr;
+
+static void testSign()
+{
+ const QGpgME::Protocol *proto = !strcmp(protocol, "openpgp") ? QGpgME::openpgp() : QGpgME::smime();
+ Q_ASSERT(proto);
+
+ qDebug() << "Using protocol" << proto->name();
+
+ std::vector<GpgME::Key> signingKeys;
+
+ std::unique_ptr<QGpgME::KeyListJob> listJob(proto->keyListJob(false, false, true)); // use validating keylisting
+ if (listJob.get()) {
+ // ##### Adjust this to your own identity
+ listJob->exec(QStringList(QStringLiteral("kloecker@kde.org")), true /*secret*/, signingKeys);
+ Q_ASSERT(!signingKeys.empty());
+ } else {
+ Q_ASSERT(0); // job failed
+ }
+
+ QGpgME::SignJob *job = proto->signJob(true, true);
+
+ QByteArray plainText = "Hallo Leute\n"; // like gpgme's t-sign.c
+ qDebug() << "plainText=" << plainText;
+
+ qDebug() << " signing with" << signingKeys[0].primaryFingerprint();
+
+ QByteArray signature;
+ const GpgME::SigningResult res =
+ job->exec(signingKeys, plainText, GpgME::Clearsigned, signature);
+ if (res.error().isCanceled()) {
+ qDebug() << "signing was canceled by user";
+ return;
+ }
+ if (res.error()) {
+ qDebug() << "signing failed:" << res.error().asString();
+ return;
+ }
+ qDebug() << "signing resulted in signature="
+ << signature;
+}
+
+int main(int argc, char **argv)
+{
+ protocol = "openpgp";
+ if (argc == 2) {
+ protocol = argv[1];
+ argc = 1; // hide from KDE
+ }
+ QApplication app(argc, argv);
+ KAboutData aboutData(QStringLiteral("test_jobs"), i18n("Signing Job Test"), QStringLiteral("0.1"));
+ QCommandLineParser parser;
+ KAboutData::setApplicationData(aboutData);
+ parser.addVersionOption();
+ parser.addHelpOption();
+ aboutData.setupCommandLine(&parser);
+ parser.process(app);
+ aboutData.processCommandLine(&parser);
+
+ testSign();
+}
--- /dev/null
+/*
+ test_kdhorizontalline.cpp
+
+ This file is part of libkleopatra's test suite.
+ Copyright (c) 2008 Klarälvdalens Datakonsult AB
+
+ Libkleopatra is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License,
+ version 2, as published by the Free Software Foundation.
+
+ Libkleopatra 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#include "ui/kdhorizontalline.h"
+
+#include <QApplication>
+#include <QGridLayout>
+#include <QLabel>
+#include <QLineEdit>
+int main(int argc, char *argv[])
+{
+
+ QApplication app(argc, argv);
+
+ QWidget w;
+ QGridLayout glay(&w);
+
+ KDHorizontalLine hl1(QStringLiteral("Foo"), &w);
+ glay.addWidget(&hl1, 0, 0, 1, 2);
+
+ QLabel lb1(QStringLiteral("Foo 1:"), &w);
+ glay.addWidget(&lb1, 1, 0);
+ QLineEdit le1(&w);
+ glay.addWidget(&le1, 1, 1);
+
+ glay.setColumnStretch(1, 1);
+ glay.setRowStretch(2, 1);
+
+ w.show();
+
+ return app.exec();
+}
--- /dev/null
+/*
+ test_keyformailbox.cpp
+
+ This file is part of libkleopatra's test suite.
+ Copyright (c) 2016 by Bundesamt für Sicherheit in der Informationstechnik
+ Software engineering by Intevation GmbH
+
+ Libkleopatra is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License,
+ version 2, as published by the Free Software Foundation.
+
+ Libkleopatra 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#include <qgpgme/protocol.h>
+#include <qgpgme/keyformailboxjob.h>
+
+#include <gpgme++/key.h>
+#include <gpgme++/keylistresult.h>
+
+#include <QDebug>
+
+
+int main(int argc, char **argv)
+{
+ QString mailbox;
+ if (argc == 2) {
+ mailbox = QString::fromLocal8Bit(argv[1]);
+ }
+
+ const auto proto = QGpgME::openpgp();
+ auto *job = proto->keyForMailboxJob();
+ GpgME::Key k;
+ GpgME::UserID uid;
+ job->exec(mailbox, true, k, uid);
+ qDebug() << "UID Name: " << uid.name() << " Mail: " << uid.email() << " id: " << uid.id();
+ qDebug() << "Key fpr: " << k.primaryFingerprint();
+ return 0;
+}
--- /dev/null
+/*
+ test_keygen.cpp
+
+ This file is part of libkleopatra's test suite.
+ Copyright (c) 2004 Klarälvdalens Datakonsult AB
+
+ Libkleopatra is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License,
+ version 2, as published by the Free Software Foundation.
+
+ Libkleopatra 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#include "test_keygen.h"
+
+#include <qgpgme/keylistjob.h>
+#include <qgpgme/keygenerationjob.h>
+#include <qgpgme/protocol.h>
+#include "ui/progressdialog.h"
+
+#include <gpgme++/keygenerationresult.h>
+
+#include <KAboutData>
+
+#include <kmessagebox.h>
+#include <QDebug>
+
+#include <QLineEdit>
+#include <QLabel>
+#include <QGridLayout>
+
+#include <QApplication>
+#include <KLocalizedString>
+#include <QCommandLineParser>
+#include <QDialogButtonBox>
+#include <QPushButton>
+#include <KGuiItem>
+#include <QVBoxLayout>
+
+static const char *const keyParams[] = {
+ "Key-Type", "Key-Length",
+ "Subkey-Type", "Subkey-Length",
+ "Name-Real", "Name-Comment", "Name-Email", "Name-DN",
+ "Expire-Date",
+ "Passphrase"
+};
+static const int numKeyParams = sizeof keyParams / sizeof * keyParams;
+
+static const char *protocol = nullptr;
+
+KeyGenerator::KeyGenerator(QWidget *parent)
+ : QDialog(parent)
+{
+ setModal(true);
+ setWindowTitle(QStringLiteral("KeyGenerationJob test"));
+ QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Close);
+ QWidget *mainWidget = new QWidget(this);
+ QVBoxLayout *mainLayout = new QVBoxLayout;
+ setLayout(mainLayout);
+ mainLayout->addWidget(mainWidget);
+ QPushButton *user1Button = new QPushButton;
+ buttonBox->addButton(user1Button, QDialogButtonBox::ActionRole);
+ connect(buttonBox, &QDialogButtonBox::rejected, this, &KeyGenerator::reject);
+ user1Button->setDefault(true);
+ KGuiItem::assign(user1Button, KGuiItem(QStringLiteral("Create")));
+
+ QWidget *w = new QWidget(this);
+ mainLayout->addWidget(w);
+ mainLayout->addWidget(buttonBox);
+
+ QGridLayout *glay = new QGridLayout(w);
+
+ int row = -1;
+
+ ++row;
+ glay->addWidget(new QLabel(QStringLiteral("<GnupgKeyParms format=\"internal\">"), w),
+ row, 0, 1, 2);
+ for (int i = 0; i < numKeyParams; ++i) {
+ ++row;
+ glay->addWidget(new QLabel(QString::fromLatin1(keyParams[i]), w), row, 0);
+ glay->addWidget(mLineEdits[i] = new QLineEdit(w), row, 1);
+ }
+
+ ++row;
+ glay->addWidget(new QLabel(QStringLiteral("</GnupgKeyParms>"), w), row, 0, 1, 2);
+ ++row;
+ glay->setRowStretch(row, 1);
+ glay->setColumnStretch(1, 1);
+
+ connect(user1Button, &QPushButton::clicked, this, &KeyGenerator::slotStartKeyGeneration);
+}
+
+KeyGenerator::~KeyGenerator() {}
+
+void KeyGenerator::slotStartKeyGeneration()
+{
+ QString params = QStringLiteral("<GnupgKeyParms format=\"internal\">\n");
+ for (int i = 0; i < numKeyParams; ++i)
+ if (mLineEdits[i] && !mLineEdits[i]->text().trimmed().isEmpty()) {
+ params += QString::fromLatin1(keyParams[i]) + (QStringLiteral(": ") + mLineEdits[i]->text().trimmed()) + QLatin1Char('\n');
+ }
+ params += QStringLiteral("</GnupgKeyParms>\n");
+
+ const QGpgME::Protocol *proto = nullptr;
+ if (protocol) {
+ proto = !strcmp(protocol, "openpgp") ? QGpgME::openpgp() : QGpgME::smime();
+ }
+ if (!proto) {
+ proto = QGpgME::smime();
+ }
+ Q_ASSERT(proto);
+
+ qDebug() << "Using protocol" << proto->name();
+
+ QGpgME::KeyGenerationJob *job = proto->keyGenerationJob();
+ Q_ASSERT(job);
+
+ connect(job, &QGpgME::KeyGenerationJob::result, this, &KeyGenerator::slotResult);
+
+ const GpgME::Error err = job->start(params);
+ if (err) {
+ showError(err);
+ }
+#ifndef LIBKLEO_NO_PROGRESSDIALOG
+ else {
+ (void)new Kleo::ProgressDialog(job, QStringLiteral("Generating key"), this);
+ }
+#endif
+}
+
+void KeyGenerator::showError(const GpgME::Error &err)
+{
+ KMessageBox::error(this, QStringLiteral("Could not start key generation: %1").arg(QString::fromLocal8Bit(err.asString())),
+ QStringLiteral("Key Generation Error"));
+}
+
+void KeyGenerator::slotResult(const GpgME::KeyGenerationResult &res, const QByteArray &keyData)
+{
+ if (res.error()) {
+ showError(res.error());
+ } else
+ KMessageBox::information(this, QStringLiteral("Key generated successfully, %1 bytes long").arg(keyData.size()),
+ QStringLiteral("Key Generation Finished"));
+}
+
+int main(int argc, char **argv)
+{
+ if (argc == 2) {
+ protocol = argv[1];
+ argc = 1; // hide from KDE
+ }
+ QApplication app(argc, argv);
+ KAboutData aboutData(QStringLiteral("test_keygen"), i18n("KeyGenerationJob Test"), QStringLiteral("0.1"));
+ QCommandLineParser parser;
+ KAboutData::setApplicationData(aboutData);
+ parser.addVersionOption();
+ parser.addHelpOption();
+ aboutData.setupCommandLine(&parser);
+ parser.process(app);
+ aboutData.processCommandLine(&parser);
+
+ KeyGenerator *keygen = new KeyGenerator(nullptr);
+ keygen->setObjectName(QStringLiteral("KeyGenerator top-level"));
+ keygen->show();
+
+ return app.exec();
+}
+
--- /dev/null
+/*
+ test_keygen.h
+
+ This file is part of libkleopatra's test suite.
+ Copyright (c) 2004 Klarälvdalens Datakonsult AB
+
+ Libkleopatra is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License,
+ version 2, as published by the Free Software Foundation.
+
+ Libkleopatra 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#ifndef __KLEO_TEST_KEYGEN_H__
+#define __KLEO_TEST_KEYGEN_H__
+
+#include <QDialog>
+
+#include <qbytearray.h>
+
+namespace GpgME
+{
+class Error;
+class KeyGenerationResult;
+}
+
+class QLineEdit;
+
+class KeyGenerator : public QDialog
+{
+ Q_OBJECT
+public:
+ KeyGenerator(QWidget *parent = nullptr);
+ ~KeyGenerator();
+
+public Q_SLOTS:
+ void slotStartKeyGeneration();
+ void slotResult(const GpgME::KeyGenerationResult &res, const QByteArray &keyData);
+private:
+ void showError(const GpgME::Error &err);
+
+private:
+ QLineEdit *mLineEdits[20];
+};
+
+#endif // __KLEO_TEST_KEYGEN_H__
--- /dev/null
+/*
+ test_keylister.cpp
+
+ This file is part of libkleopatra's test suite.
+ Copyright (c) 2004 Klarälvdalens Datakonsult AB
+
+ Libkleopatra is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License,
+ version 2, as published by the Free Software Foundation.
+
+ Libkleopatra 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#include "test_keylister.h"
+
+#include <qgpgme/keylistjob.h>
+#include <qgpgme/protocol.h>
+
+#include <gpgme++/keylistresult.h>
+#include <gpgme++/key.h>
+
+#include <KAboutData>
+
+#include <QDebug>
+
+#include <QMessageBox>
+#include <QStringList>
+#include <QTimer>
+
+#include <QApplication>
+#include <KLocalizedString>
+#include <QCommandLineParser>
+
+namespace
+{
+class TestColumnStrategy : public Kleo::KeyListView::ColumnStrategy
+{
+public:
+ ~TestColumnStrategy() {}
+ QString title(int col) const override;
+ QString toolTip(const GpgME::Key &key, int col) const override;
+ QString text(const GpgME::Key &key, int col) const override;
+};
+
+QString TestColumnStrategy::title(int col) const
+{
+ switch (col) {
+ case 0: return QStringLiteral("Subject");
+ case 1: return QStringLiteral("EMail");
+ case 2: return QStringLiteral("Issuer");
+ case 3: return QStringLiteral("Serial");
+ case 4: return QStringLiteral("Protocol");
+ case 5: return QStringLiteral("Validity");
+ default: return QString();
+ }
+}
+
+QString TestColumnStrategy::toolTip(const GpgME::Key &key, int) const
+{
+ return QStringLiteral("Fingerprint: ") + QString::fromUtf8(key.primaryFingerprint());
+}
+
+QString TestColumnStrategy::text(const GpgME::Key &key, int col) const
+{
+ if (key.isNull()) {
+ return QStringLiteral("<null>");
+ }
+ switch (col) {
+ case 0: return QString::fromUtf8(key.userID(0).id());
+ case 1: return QString::fromUtf8(key.userID(0).email());
+ case 2: return QString::fromUtf8(key.issuerName());
+ case 3: return QString::fromLatin1(key.issuerSerial());
+ case 4: return QString::fromLatin1(key.protocolAsString());
+ case 5: return QString(QLatin1Char(key.userID(0).validityAsString()));
+ default: return QString();
+ }
+}
+}
+
+CertListView::CertListView(QWidget *parent, Qt::WindowFlags f)
+ : Kleo::KeyListView(new TestColumnStrategy(), nullptr, parent, f)
+{
+ setHierarchical(true);
+ setRootIsDecorated(true);
+}
+
+CertListView::~CertListView() {}
+
+void CertListView::slotResult(const GpgME::KeyListResult &result)
+{
+ qDebug() << "CertListView::slotResult()";
+ if (result.isNull()) {
+ QMessageBox::information(this, QStringLiteral("Key Listing Result"), QStringLiteral("KeyListResult is null!"));
+ } else if (result.error())
+ QMessageBox::critical(this, QStringLiteral("Key Listing Result"),
+ QStringLiteral("KeyListResult Error: %1").arg(QString::fromLatin1(result.error().asString())));
+ else if (result.isTruncated()) {
+ QMessageBox::information(this, QStringLiteral("Key Listing Result"), QStringLiteral("KeyListResult is truncated!"));
+ } else {
+ QMessageBox::information(this, QStringLiteral("Key Listing Result"), QStringLiteral("Key listing successful"));
+ }
+}
+
+void CertListView::slotStart()
+{
+ qDebug() << "CertListView::slotStart()";
+ QGpgME::KeyListJob *job = QGpgME::smime()->keyListJob(false);
+ Q_ASSERT(job);
+ QObject::connect(job, &QGpgME::KeyListJob::nextKey, this, &CertListView::slotAddKey);
+ QObject::connect(job, &QGpgME::KeyListJob::result, this, &CertListView::slotResult);
+#if 0
+ QStringList l;
+ l << "Marc";
+ job->start(l, false);
+#else
+ job->start(QStringList(), false);
+#endif
+}
+
+int main(int argc, char **argv)
+{
+
+ QApplication app(argc, argv);
+ KAboutData aboutData(QStringLiteral("test_keylister"), i18n("KeyLister Test"), QStringLiteral("0.1"));
+ QCommandLineParser parser;
+ KAboutData::setApplicationData(aboutData);
+ parser.addVersionOption();
+ parser.addHelpOption();
+ aboutData.setupCommandLine(&parser);
+ parser.process(app);
+ aboutData.processCommandLine(&parser);
+
+ CertListView *clv = new CertListView;
+ clv->show();
+
+ QTimer::singleShot(5000, clv, &CertListView::slotStart);
+
+ return app.exec();
+}
--- /dev/null
+/*
+ test_keylister.h
+
+ This file is part of libkleopatra's test suite.
+ Copyright (c) 2004 Klarälvdalens Datakonsult AB
+
+ Libkleopatra is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License,
+ version 2, as published by the Free Software Foundation.
+
+ Libkleopatra 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#ifndef __KLEO_TEST_KEYLISTER_H__
+#define __KLEO_TEST_KEYLISTER_H__
+
+#include "ui/keylistview.h"
+
+namespace GpgME
+{
+class Key;
+class KeyListResult;
+}
+
+class CertListView : public Kleo::KeyListView
+{
+ Q_OBJECT
+public:
+ explicit CertListView(QWidget *parent = nullptr, Qt::WindowFlags f = 0);
+ ~CertListView();
+
+public Q_SLOTS:
+ void slotResult(const GpgME::KeyListResult &result);
+ void slotStart();
+};
+
+#endif // __KLEO_TEST_KEYLISTER_H__
--- /dev/null
+/*
+ This file is part of libkleopatra's test suite.
+ Copyright (c) 2016 Klarälvdalens Datakonsult AB
+
+ Libkleopatra is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License,
+ version 2, as published by the Free Software Foundation.
+
+ Libkleopatra 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+*/
+
+#include "ui/keyselectioncombo.h"
+#include "kleo/defaultkeyfilter.h"
+#include <gpgme++/key.h>
+
+#include <KAboutData>
+#include <QDebug>
+
+#include <vector>
+#include <QApplication>
+#include <KLocalizedString>
+#include <QCommandLineParser>
+#include <QVBoxLayout>
+
+int main(int argc, char **argv)
+{
+ QApplication app(argc, argv);
+ KAboutData aboutData(QStringLiteral("test_keyselectioncombo"), i18n("KeySelectionCombo Test"), QStringLiteral("0.1"));
+ QCommandLineParser parser;
+ QCommandLineOption openpgpOption(QStringLiteral("openpgp"), i18n("Show OpenPGP keys"));
+ parser.addOption(openpgpOption);
+ QCommandLineOption smimeOption(QStringLiteral("smime"), i18n("Show S/MIME keys"));
+ parser.addOption(smimeOption);
+ QCommandLineOption encryptOption(QStringLiteral("encryption"), i18n("Show keys for encryption"));
+ parser.addOption(encryptOption);
+ QCommandLineOption signingOption(QStringLiteral("signing"), i18n("Show keys for signing"));
+ parser.addOption(signingOption);
+
+ KAboutData::setApplicationData(aboutData);
+ parser.addVersionOption();
+ parser.addHelpOption();
+ aboutData.setupCommandLine(&parser);
+ parser.process(app);
+ aboutData.processCommandLine(&parser);
+
+ QWidget window;
+ QVBoxLayout layout(&window);
+
+ Kleo::KeySelectionCombo combo;
+ layout.addWidget(&combo);
+
+ std::shared_ptr<const Kleo::DefaultKeyFilter> filter(new Kleo::DefaultKeyFilter);
+ filter->setCanSign(parser.isSet(signingOption) ? Kleo::DefaultKeyFilter::Set : Kleo::DefaultKeyFilter::DoesNotMatter);
+ filter->setCanEncrypt(parser.isSet(encryptOption) ? Kleo::DefaultKeyFilter::Set : Kleo::DefaultKeyFilter::DoesNotMatter);
+ filter->setIsOpenPGP(parser.isSet(openpgpOption) ? Kleo::DefaultKeyFilter::Set : Kleo::DefaultKeyFilter::NotSet);
+ filter->setHasSecret(Kleo::DefaultKeyFilter::Set);
+ //filter->setOwnerTrust(Kleo::DefaultKeyFilter::IsAtLeast);
+ //filter->setOwnerTrustReferenceLevel(GpgME::Key::Ultimate);
+ combo.setKeyFilter(filter);
+
+ combo.prependCustomItem(QIcon(), i18n("No key"), QStringLiteral("no-key"));
+ QObject::connect(&combo, &Kleo::KeySelectionCombo::currentKeyChanged, [](const GpgME::Key &key) { qDebug() << "Current key changed:" << key.keyID(); });
+ QObject::connect(&combo, &Kleo::KeySelectionCombo::customItemSelected, [](const QVariant &data) { qDebug() << "Custom item selected:" << data.toString(); });
+
+ window.show();
+
+ /*
+ if (dlg.exec() == QDialog::Accepted) {
+ qDebug() << "accepted; selected key:" << (dlg.selectedKey().userID(0).id() ? dlg.selectedKey().userID(0).id() : "<null>") << "\nselected _keys_:";
+ for (std::vector<GpgME::Key>::const_iterator it = dlg.selectedKeys().begin(); it != dlg.selectedKeys().end(); ++it) {
+ qDebug() << (it->userID(0).id() ? it->userID(0).id() : "<null>");
+ }
+ } else {
+ qDebug() << "rejected";
+ }
+ */
+
+ return app.exec();
+}
+
--- /dev/null
+/*
+ test_keygen.cpp
+
+ This file is part of libkleopatra's test suite.
+ Copyright (c) 2004 Klarälvdalens Datakonsult AB
+
+ Libkleopatra is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License,
+ version 2, as published by the Free Software Foundation.
+
+ Libkleopatra 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#include "ui/keyselectiondialog.h"
+#include <gpgme++/key.h>
+
+#include <KAboutData>
+#include <QDebug>
+
+#include <vector>
+#include <QApplication>
+#include <KLocalizedString>
+#include <QCommandLineParser>
+
+int main(int argc, char **argv)
+{
+ QApplication app(argc, argv);
+ KAboutData aboutData(QStringLiteral("test_keyselectiondialog"), i18n("KeySelectionDialog Test"), QStringLiteral("0.1"));
+ QCommandLineParser parser;
+ KAboutData::setApplicationData(aboutData);
+ parser.addVersionOption();
+ parser.addHelpOption();
+ aboutData.setupCommandLine(&parser);
+ parser.process(app);
+ aboutData.processCommandLine(&parser);
+
+ Kleo::KeySelectionDialog dlg(QStringLiteral("Kleo::KeySelectionDialog Test"),
+ QStringLiteral("Please select a key:"),
+ std::vector<GpgME::Key>(),
+ Kleo::KeySelectionDialog::AllKeys, true, true);
+
+ if (dlg.exec() == QDialog::Accepted) {
+ qDebug() << "accepted; selected key:" << (dlg.selectedKey().userID(0).id() ? dlg.selectedKey().userID(0).id() : "<null>") << "\nselected _keys_:";
+ for (std::vector<GpgME::Key>::const_iterator it = dlg.selectedKeys().begin(); it != dlg.selectedKeys().end(); ++it) {
+ qDebug() << (it->userID(0).id() ? it->userID(0).id() : "<null>");
+ }
+ } else {
+ qDebug() << "rejected";
+ }
+
+ return 0;
+}
--- /dev/null
+/*
+ Copyright (c) 2015-2017 Montel Laurent <montel@kde.org>
+
+ 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 "auditlogviewer.h"
+
+#ifdef HAVE_PIMTEXTEDIT
+# include "kpimtextedit/richtexteditor.h"
+#else
+# include <QTextEdit>
+#endif
+#include <QSaveFile>
+#include <QFileDialog>
+#include <KConfigGroup>
+#include <KMessageBox>
+#include <KLocalizedString>
+#include <KSharedConfig>
+#include <QTextStream>
+#include <QDialogButtonBox>
+#include <QPushButton>
+#include <QVBoxLayout>
+
+using namespace Kleo::Private;
+
+AuditLogViewer::AuditLogViewer(const QString &log, QWidget *parent)
+ : QDialog(parent),
+ m_log(/* sic */),
+#ifdef HAVE_PIMTEXTEDIT
+ m_textEdit(new KPIMTextEdit::RichTextEditorWidget(this))
+#else
+ m_textEdit(new QTextEdit(this))
+#endif
+{
+ setWindowTitle(i18n("View GnuPG Audit Log"));
+ QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Close);
+
+ QPushButton *copyClipBtn = new QPushButton;
+ copyClipBtn->setText(i18n("&Copy to Clipboard"));
+ copyClipBtn->setIcon(QIcon::fromTheme(QStringLiteral("edit-copy")));
+ buttonBox->addButton(copyClipBtn, QDialogButtonBox::ActionRole);
+ connect(copyClipBtn, &QPushButton::clicked, this, &AuditLogViewer::slotCopyClip);
+
+ QPushButton *saveAsBtn = new QPushButton;
+ saveAsBtn->setText(i18n("&Save to Disk..."));
+ saveAsBtn->setIcon(QIcon::fromTheme(QStringLiteral("document-save-as")));
+ buttonBox->addButton(saveAsBtn, QDialogButtonBox::ActionRole);
+ connect(saveAsBtn, &QPushButton::clicked, this, &AuditLogViewer::slotSaveAs);
+
+ m_textEdit->setObjectName(QStringLiteral("m_textEdit"));
+ m_textEdit->setReadOnly(true);
+
+ QVBoxLayout *mainLayout = new QVBoxLayout;
+ mainLayout->addWidget(m_textEdit);
+ mainLayout->addWidget(buttonBox);
+ setLayout(mainLayout);
+
+ connect(buttonBox, &QDialogButtonBox::rejected, this, &QDialog::reject);
+
+ setAuditLog(log);
+
+ readConfig();
+}
+
+AuditLogViewer::~AuditLogViewer()
+{
+ writeConfig();
+}
+
+void AuditLogViewer::setAuditLog(const QString &log)
+{
+ if (log == m_log) {
+ return;
+ }
+ m_log = log;
+ m_textEdit->setHtml(QLatin1String("<qt>") + log + QLatin1String("</qt>"));
+}
+
+void AuditLogViewer::slotSaveAs()
+{
+ const QString fileName = QFileDialog::getSaveFileName(this, i18n("Choose File to Save GnuPG Audit Log to"));
+ if (fileName.isEmpty()) {
+ return;
+ }
+
+ QSaveFile file(fileName);
+
+ if (file.open(QIODevice::WriteOnly)) {
+ QTextStream s(&file);
+ s << "<html><head>";
+ if (!windowTitle().isEmpty()) {
+ s << "\n<title>"
+ << windowTitle().toHtmlEscaped()
+ << "</title>\n";
+ }
+ s << "</head><body>\n"
+ << m_log
+ << "\n</body></html>" << endl;
+ s.flush();
+ file.commit();
+ }
+
+ if (const int err = file.error())
+ KMessageBox::error(this, i18n("Could not save to file \"%1\": %2",
+ file.fileName(), QString::fromLocal8Bit(strerror(err))),
+ i18n("File Save Error"));
+}
+
+void AuditLogViewer::slotCopyClip()
+{
+#ifdef HAVE_PIMTEXTEDIT
+ m_textEdit->editor()->selectAll();
+ m_textEdit->editor()->copy();
+ m_textEdit->editor()->textCursor().clearSelection();
+#else
+ m_textEdit->selectAll();
+ m_textEdit->copy();
+ m_textEdit->textCursor().clearSelection();
+#endif
+}
+
+void AuditLogViewer::readConfig()
+{
+ KConfigGroup group(KSharedConfig::openConfig(), "AuditLogViewer");
+ const QSize size = group.readEntry("Size", QSize());
+ if (size.isValid()) {
+ resize(size);
+ } else {
+ resize(600, 400);
+ }
+}
+
+void AuditLogViewer::writeConfig()
+{
+ KConfigGroup group(KSharedConfig::openConfig(), "AuditLogViewer");
+ group.writeEntry("Size", size());
+ group.sync();
+}
+
--- /dev/null
+/*
+ Copyright (c) 2015-2016 Montel Laurent <montel@kde.org>
+
+ 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 AUDITLOGVIEWER_H
+#define AUDITLOGVIEWER_H
+
+#include <QDialog>
+
+#include <kleo_export.h>
+
+#ifdef HAVE_PIMTEXTEDIT
+#include "kpimtextedit/richtexteditorwidget.h"
+
+namespace KPIMTextEdit
+{
+class RichTextEditorWidget;
+}
+#else
+
+class QTextEdit;
+#endif // HAVE_PIMTEXTEDIT
+
+namespace Kleo
+{
+namespace Private
+{
+
+class KLEO_EXPORT AuditLogViewer : public QDialog
+{
+ Q_OBJECT
+public:
+ explicit AuditLogViewer(const QString &log, QWidget *parent = nullptr);
+
+ ~AuditLogViewer();
+
+ void setAuditLog(const QString &log);
+
+private Q_SLOTS:
+ void slotSaveAs();
+ void slotCopyClip();
+
+private:
+ void writeConfig();
+ void readConfig();
+
+ QString m_log;
+#ifdef HAVE_PIMTEXTEDIT
+ KPIMTextEdit::RichTextEditorWidget *m_textEdit;
+#else
+ QTextEdit *m_textEdit;
+#endif
+};
+
+}
+}
+#endif // AUDITLOGVIEWER_H
--- /dev/null
+/*
+ cryptoconfigdialog.h
+
+ This file is part of kgpgcertmanager
+ Copyright (c) 2004 Klarälvdalens Datakonsult AB
+
+ Libkleopatra is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License,
+ version 2, as published by the Free Software Foundation.
+
+ Libkleopatra 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#include "cryptoconfigdialog.h"
+#include "cryptoconfigmodule.h"
+#include <KLocalizedString>
+#include <kacceleratormanager.h>
+#include <QDialogButtonBox>
+#include <QPushButton>
+#include <KGuiItem>
+#include <QVBoxLayout>
+
+Kleo::CryptoConfigDialog::CryptoConfigDialog(QGpgME::CryptoConfig *config, QWidget *parent)
+ : QDialog(parent)
+{
+ setWindowTitle(i18n("Configure GnuPG Backend"));
+ QVBoxLayout *mainLayout = new QVBoxLayout(this);
+ mButtonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel | QDialogButtonBox::RestoreDefaults | QDialogButtonBox::Apply, this);
+ QPushButton *okButton = mButtonBox->button(QDialogButtonBox::Ok);
+ okButton->setShortcut(Qt::CTRL | Qt::Key_Return);
+ QPushButton *user1Button = new QPushButton(this);
+ mButtonBox->addButton(user1Button, QDialogButtonBox::ActionRole);
+ connect(mButtonBox, &QDialogButtonBox::accepted, this, &CryptoConfigDialog::accept);
+ connect(mButtonBox, &QDialogButtonBox::rejected, this, &CryptoConfigDialog::reject);
+ okButton->setDefault(true);
+ setModal(true);
+ KGuiItem::assign(user1Button, KGuiItem(i18n("&Reset")));
+
+ mMainWidget = new CryptoConfigModule(config, this);
+ mainLayout->addWidget(mMainWidget);
+ mainLayout->addWidget(mButtonBox);
+
+ connect(mMainWidget, &CryptoConfigModule::changed, this, &CryptoConfigDialog::slotChanged);
+ mButtonBox->button(QDialogButtonBox::Apply)->setEnabled(false);
+ if (mMainWidget->hasError()) {
+ mButtonBox->button(QDialogButtonBox::RestoreDefaults)->setVisible(false);
+ user1Button->setVisible(false);
+ mButtonBox->button(QDialogButtonBox::Apply)->setVisible(false);
+ okButton->setVisible(false);
+ }
+
+ // Automatically assign accelerators
+ KAcceleratorManager::manage(this);
+ connect(user1Button, &QPushButton::clicked, this, &CryptoConfigDialog::slotUser1);
+ connect(mButtonBox->button(QDialogButtonBox::Cancel), &QPushButton::clicked, this, &CryptoConfigDialog::slotCancel);
+ connect(okButton, &QPushButton::clicked, this, &CryptoConfigDialog::slotOk);
+ connect(mButtonBox->button(QDialogButtonBox::RestoreDefaults), &QPushButton::clicked, this, &CryptoConfigDialog::slotDefault);
+ connect(mButtonBox->button(QDialogButtonBox::Apply), &QPushButton::clicked, this, &CryptoConfigDialog::slotApply);
+}
+
+void Kleo::CryptoConfigDialog::slotOk()
+{
+ slotApply();
+ accept();
+}
+
+void Kleo::CryptoConfigDialog::slotCancel()
+{
+ mMainWidget->cancel();
+ reject();
+}
+
+void Kleo::CryptoConfigDialog::slotDefault()
+{
+ mMainWidget->defaults();
+ slotChanged();
+}
+
+void Kleo::CryptoConfigDialog::slotApply()
+{
+ mMainWidget->save();
+ mButtonBox->button(QDialogButtonBox::Apply)->setEnabled(false);
+}
+
+void Kleo::CryptoConfigDialog::slotUser1() // reset
+{
+ mMainWidget->reset();
+ mButtonBox->button(QDialogButtonBox::Apply)->setEnabled(false);
+}
+
+void Kleo::CryptoConfigDialog::slotChanged()
+{
+ mButtonBox->button(QDialogButtonBox::Apply)->setEnabled(true);
+}
+
--- /dev/null
+/*
+ cryptoconfigdialog.h
+
+ This file is part of kgpgcertmanager
+ Copyright (c) 2004 Klarälvdalens Datakonsult AB
+
+ Libkleopatra is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License,
+ version 2, as published by the Free Software Foundation.
+
+ Libkleopatra 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#ifndef CRYPTOCONFIGDIALOG_H
+#define CRYPTOCONFIGDIALOG_H
+
+#include "kleo_export.h"
+#include <QDialog>
+class QDialogButtonBox;
+
+namespace QGpgME
+{
+class CryptoConfig;
+} // namespace QGpgME
+
+namespace Kleo
+{
+
+class CryptoConfigModule;
+
+/**
+ * Simple QDialog wrapper around CryptoConfigModule
+ */
+class KLEO_EXPORT CryptoConfigDialog : public QDialog
+{
+ Q_OBJECT
+public:
+ explicit CryptoConfigDialog(QGpgME::CryptoConfig *config, QWidget *parent = nullptr);
+
+protected Q_SLOTS:
+ void slotOk();
+ void slotCancel();
+ void slotDefault();
+ void slotApply();
+ void slotUser1(); // reset
+
+public Q_SLOTS:
+ void slotChanged();
+
+private:
+ CryptoConfigModule *mMainWidget;
+ QDialogButtonBox *mButtonBox;
+};
+
+}
+
+#endif /* CRYPTOCONFIGDIALOG_H */
+
--- /dev/null
+/*
+ cryptoconfigmodule.cpp
+
+ This file is part of kgpgcertmanager
+ Copyright (c) 2004 Klar�vdalens Datakonsult AB
+
+ Libkleopatra is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License,
+ version 2, as published by the Free Software Foundation.
+
+ Libkleopatra 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#include "cryptoconfigmodule.h"
+#include "cryptoconfigmodule_p.h"
+#include "directoryserviceswidget.h"
+#include "kdhorizontalline.h"
+#include "filenamerequester.h"
+
+#include <qgpgme/cryptoconfig.h>
+
+#include <klineedit.h>
+#include <KLocalizedString>
+#include "kleo_ui_debug.h"
+#include <utils/formatting.h>
+#include <qicon.h>
+#include <QDialogButtonBox>
+
+#include <QSpinBox>
+
+#include <QApplication>
+#include <QLabel>
+#include <QLayout>
+#include <QPushButton>
+#include <QRegExp>
+#include <QVBoxLayout>
+#include <QList>
+#include <QHBoxLayout>
+#include <QGridLayout>
+#include <QScrollArea>
+#include <QDesktopWidget>
+#include <QCheckBox>
+#include <QStyle>
+#include <QComboBox>
+#include <QGroupBox>
+
+#include <memory>
+#include <limits>
+
+using namespace Kleo;
+
+namespace
+{
+
+class ScrollArea : public QScrollArea
+{
+public:
+ explicit ScrollArea(QWidget *p) : QScrollArea(p) {}
+ QSize sizeHint() const override
+ {
+ const QSize wsz = widget() ? widget()->sizeHint() : QSize();
+ return QSize(wsz.width() + style()->pixelMetric(QStyle::PM_ScrollBarExtent), QScrollArea::sizeHint().height());
+ }
+};
+
+}
+inline QIcon loadIcon(const QString &s)
+{
+ QString ss = s;
+ return QIcon::fromTheme(ss.replace(QRegExp(QLatin1String("[^a-zA-Z0-9_]")), QStringLiteral("-")));
+}
+
+static unsigned int num_components_with_options(const QGpgME::CryptoConfig *config)
+{
+ if (!config) {
+ return 0;
+ }
+ const QStringList components = config->componentList();
+ unsigned int result = 0;
+ for (QStringList::const_iterator it = components.begin(); it != components.end(); ++it)
+ if (const QGpgME::CryptoConfigComponent *const comp = config->component(*it))
+ if (!comp->groupList().empty()) {
+ ++result;
+ }
+ return result;
+}
+
+static KPageView::FaceType determineJanusFace(const QGpgME::CryptoConfig *config, Kleo::CryptoConfigModule::Layout layout, bool &ok)
+{
+ ok = true;
+ if (num_components_with_options(config) < 2) {
+ ok = false;
+ return KPageView::Plain;
+ }
+ return
+ layout == CryptoConfigModule::LinearizedLayout ? KPageView::Plain :
+ layout == CryptoConfigModule::TabbedLayout ? KPageView::Tabbed :
+ /* else */ KPageView::List;
+}
+
+Kleo::CryptoConfigModule::CryptoConfigModule(QGpgME::CryptoConfig *config, QWidget *parent)
+ : KPageWidget(parent), mConfig(config)
+{
+ init(IconListLayout);
+}
+
+Kleo::CryptoConfigModule::CryptoConfigModule(QGpgME::CryptoConfig *config, Layout layout, QWidget *parent)
+ : KPageWidget(parent), mConfig(config)
+{
+ init(layout);
+}
+
+void Kleo::CryptoConfigModule::init(Layout layout)
+{
+ if (QLayout *l = this->layout()) {
+ l->setMargin(0);
+ }
+
+ QGpgME::CryptoConfig *const config = mConfig;
+
+ bool configOK = false;
+ const KPageView::FaceType type = determineJanusFace(config, layout, configOK);
+
+ setFaceType(type);
+
+ QVBoxLayout *vlay = nullptr;
+ QWidget *vbox = nullptr;
+
+ if (type == Plain) {
+ QWidget *w = new QWidget(this);
+ QVBoxLayout *l = new QVBoxLayout(w);
+ l->setMargin(0);
+ QScrollArea *s = new QScrollArea(w);
+ s->setFrameStyle(QFrame::NoFrame);
+ s->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Preferred);
+ s->setWidgetResizable(true);
+ l->addWidget(s);
+ vbox = new QWidget(s->viewport());
+ vlay = new QVBoxLayout(vbox);
+ vlay->setMargin(0);
+ s->setWidget(vbox);
+ addPage(w, configOK ? QString() : i18n("GpgConf Error"));
+ }
+
+ const QStringList components = config->componentList();
+ for (QStringList::const_iterator it = components.begin(); it != components.end(); ++it) {
+ //qCDebug(KLEO_UI_LOG) <<"Component" << (*it).toLocal8Bit() <<":";
+ QGpgME::CryptoConfigComponent *comp = config->component(*it);
+ Q_ASSERT(comp);
+ if (comp->groupList().empty()) {
+ continue;
+ }
+
+ std::unique_ptr<CryptoConfigComponentGUI> compGUI(new CryptoConfigComponentGUI(this, comp));
+ compGUI->setObjectName(*it);
+ // KJanusWidget doesn't seem to have iterators, so we store a copy...
+ mComponentGUIs.append(compGUI.get());
+
+ if (type == Plain) {
+ QGroupBox *gb = new QGroupBox(comp->description(), vbox);
+ (new QVBoxLayout(gb))->addWidget(compGUI.release());
+ vlay->addWidget(gb);
+ } else {
+ vbox = new QWidget(this);
+ vlay = new QVBoxLayout(vbox);
+ vlay->setMargin(0);
+ KPageWidgetItem *pageItem = new KPageWidgetItem(vbox, comp->description());
+ if (type != Tabbed) {
+ pageItem->setIcon(loadIcon(comp->iconName()));
+ }
+ addPage(pageItem);
+
+ QScrollArea *scrollArea = type == Tabbed ? new QScrollArea(vbox) : new ScrollArea(vbox);
+ scrollArea->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Preferred);
+ scrollArea->setWidgetResizable(true);
+
+ vlay->addWidget(scrollArea);
+ const QSize compGUISize = compGUI->sizeHint();
+ scrollArea->setWidget(compGUI.release());
+
+ // Set a nice startup size
+ const int deskHeight = QApplication::desktop()->height();
+ int dialogHeight;
+ if (deskHeight > 1000) { // very big desktop ?
+ dialogHeight = 800;
+ } else if (deskHeight > 650) { // big desktop ?
+ dialogHeight = 500;
+ } else { // small (800x600, 640x480) desktop
+ dialogHeight = 400;
+ }
+ Q_ASSERT(scrollArea->widget());
+ if (type != Tabbed) {
+ scrollArea->setMinimumHeight(qMin(compGUISize.height(), dialogHeight));
+ }
+ }
+ }
+ if (mComponentGUIs.empty()) {
+ const QString msg = i18n("The gpgconf tool used to provide the information "
+ "for this dialog does not seem to be installed "
+ "properly. It did not return any components. "
+ "Try running \"%1\" on the command line for more "
+ "information.",
+ components.empty() ? QLatin1String("gpgconf --list-components") : QLatin1String("gpgconf --list-options gpg"));
+ QLabel *label = new QLabel(msg, vbox);
+ label->setWordWrap(true);
+ label->setMinimumHeight(fontMetrics().lineSpacing() * 5);
+ vlay->addWidget(label);
+ }
+}
+
+bool Kleo::CryptoConfigModule::hasError() const
+{
+ return mComponentGUIs.empty();
+}
+
+void Kleo::CryptoConfigModule::save()
+{
+ bool changed = false;
+ QList<CryptoConfigComponentGUI *>::Iterator it = mComponentGUIs.begin();
+ for (; it != mComponentGUIs.end(); ++it) {
+ if ((*it)->save()) {
+ changed = true;
+ }
+ }
+ if (changed) {
+ mConfig->sync(true /*runtime*/);
+ }
+}
+
+void Kleo::CryptoConfigModule::reset()
+{
+ QList<CryptoConfigComponentGUI *>::Iterator it = mComponentGUIs.begin();
+ for (; it != mComponentGUIs.end(); ++it) {
+ (*it)->load();
+ }
+}
+
+void Kleo::CryptoConfigModule::defaults()
+{
+ QList<CryptoConfigComponentGUI *>::Iterator it = mComponentGUIs.begin();
+ for (; it != mComponentGUIs.end(); ++it) {
+ (*it)->defaults();
+ }
+}
+
+void Kleo::CryptoConfigModule::cancel()
+{
+ mConfig->clear();
+}
+
+////
+
+Kleo::CryptoConfigComponentGUI::CryptoConfigComponentGUI(
+ CryptoConfigModule *module, QGpgME::CryptoConfigComponent *component,
+ QWidget *parent)
+ : QWidget(parent),
+ mComponent(component)
+{
+ QGridLayout *glay = new QGridLayout(this);
+ const QStringList groups = mComponent->groupList();
+ if (groups.size() > 1) {
+ glay->setColumnMinimumWidth(0, KDHorizontalLine::indentHint());
+ for (QStringList::const_iterator it = groups.begin(), end = groups.end(); it != end; ++it) {
+ QGpgME::CryptoConfigGroup *group = mComponent->group(*it);
+ Q_ASSERT(group);
+ if (!group) {
+ continue;
+ }
+ const QString title = group->description();
+ KDHorizontalLine *hl = new KDHorizontalLine(title.isEmpty() ? *it : title, this);
+ const int row = glay->rowCount();
+ glay->addWidget(hl, row, 0, 1, 3);
+ mGroupGUIs.append(new CryptoConfigGroupGUI(module, group, glay, this));
+ }
+ } else if (!groups.empty()) {
+ mGroupGUIs.append(new CryptoConfigGroupGUI(module, mComponent->group(groups.front()), glay, this));
+ }
+ glay->setRowStretch(glay->rowCount(), 1);
+}
+
+bool Kleo::CryptoConfigComponentGUI::save()
+{
+ bool changed = false;
+ QList<CryptoConfigGroupGUI *>::Iterator it = mGroupGUIs.begin();
+ for (; it != mGroupGUIs.end(); ++it) {
+ if ((*it)->save()) {
+ changed = true;
+ }
+ }
+ return changed;
+}
+
+void Kleo::CryptoConfigComponentGUI::load()
+{
+ QList<CryptoConfigGroupGUI *>::Iterator it = mGroupGUIs.begin();
+ for (; it != mGroupGUIs.end(); ++it) {
+ (*it)->load();
+ }
+}
+
+void Kleo::CryptoConfigComponentGUI::defaults()
+{
+ QList<CryptoConfigGroupGUI *>::Iterator it = mGroupGUIs.begin();
+ for (; it != mGroupGUIs.end(); ++it) {
+ (*it)->defaults();
+ }
+}
+
+////
+
+Kleo::CryptoConfigGroupGUI::CryptoConfigGroupGUI(
+ CryptoConfigModule *module, QGpgME::CryptoConfigGroup *group,
+ QGridLayout *glay, QWidget *widget)
+ : QObject(module), mGroup(group)
+{
+ const bool de_vs = Kleo::Formatting::complianceMode() == QStringLiteral("de-vs");
+ const int startRow = glay->rowCount();
+ const QStringList entries = mGroup->entryList();
+ for (QStringList::const_iterator it = entries.begin(), end = entries.end(); it != end; ++it) {
+ QGpgME::CryptoConfigEntry *entry = group->entry(*it);
+ Q_ASSERT(entry);
+ /* Skip "dangerous" options if we are running in CO_DE_VS. */
+ if (de_vs && entry->level() > QGpgME::CryptoConfigEntry::Level_Advanced) {
+ qCDebug(KLEO_UI_LOG) << "entry" << *it << "too advanced, skipping";
+ continue;
+ }
+ CryptoConfigEntryGUI *entryGUI =
+ CryptoConfigEntryGUIFactory::createEntryGUI(module, entry, *it, glay, widget);
+ if (entryGUI) {
+ mEntryGUIs.append(entryGUI);
+ entryGUI->load();
+ }
+ }
+ const int endRow = glay->rowCount() - 1;
+ if (endRow < startRow) {
+ return;
+ }
+
+ const QString iconName = group->iconName();
+ if (iconName.isEmpty()) {
+ return;
+ }
+
+ QLabel *l = new QLabel(widget);
+ l->setPixmap(loadIcon(iconName).pixmap(32, 32));
+ glay->addWidget(l, startRow, 0, endRow - startRow + 1, 1, Qt::AlignTop);
+}
+
+bool Kleo::CryptoConfigGroupGUI::save()
+{
+ bool changed = false;
+ QList<CryptoConfigEntryGUI *>::Iterator it = mEntryGUIs.begin();
+ for (; it != mEntryGUIs.end(); ++it) {
+ if ((*it)->isChanged()) {
+ (*it)->save();
+ changed = true;
+ }
+ }
+ return changed;
+}
+
+void Kleo::CryptoConfigGroupGUI::load()
+{
+ QList<CryptoConfigEntryGUI *>::Iterator it = mEntryGUIs.begin();
+ for (; it != mEntryGUIs.end(); ++it) {
+ (*it)->load();
+ }
+}
+
+void Kleo::CryptoConfigGroupGUI::defaults()
+{
+ QList<CryptoConfigEntryGUI *>::Iterator it = mEntryGUIs.begin();
+ for (; it != mEntryGUIs.end(); ++it) {
+ (*it)->resetToDefault();
+ }
+}
+
+////
+
+typedef CryptoConfigEntryGUI *(*constructor)(CryptoConfigModule *, QGpgME::CryptoConfigEntry *, const QString &, QGridLayout *, QWidget *);
+
+namespace
+{
+template <typename T_Widget>
+CryptoConfigEntryGUI *_create(CryptoConfigModule *m, QGpgME::CryptoConfigEntry *e, const QString &n, QGridLayout *l, QWidget *p)
+{
+ return new T_Widget(m, e, n, l, p);
+}
+}
+
+static const struct WidgetsByEntryName {
+ const char *entryGlob;
+ constructor create;
+} widgetsByEntryName[] = {
+ { "*/*/debug-level", &_create<CryptoConfigEntryDebugLevel> },
+ { "gpg/*/keyserver", &_create<CryptoConfigEntryKeyserver> }
+};
+static const unsigned int numWidgetsByEntryName = sizeof widgetsByEntryName / sizeof * widgetsByEntryName;
+
+static const constructor listWidgets[QGpgME::CryptoConfigEntry::NumArgType] = {
+ // None: A list of options with no arguments (e.g. -v -v -v) is shown as a spinbox
+ &_create<CryptoConfigEntrySpinBox>,
+ nullptr, // String
+ // Int/UInt: Let people type list of numbers (1,2,3....). Untested.
+ &_create<CryptoConfigEntryLineEdit>,
+ &_create<CryptoConfigEntryLineEdit>,
+ nullptr, // Path
+ nullptr, // Formerly URL
+ &_create<CryptoConfigEntryLDAPURL>,
+ nullptr, // DirPath
+};
+
+static const constructor scalarWidgets[QGpgME::CryptoConfigEntry::NumArgType] = {
+ &_create<CryptoConfigEntryCheckBox>, // None
+ &_create<CryptoConfigEntryLineEdit>, // String
+ &_create<CryptoConfigEntrySpinBox>, // Int
+ &_create<CryptoConfigEntrySpinBox>, // UInt
+ &_create<CryptoConfigEntryPath>, // Path
+ nullptr, // Formerly URL
+ nullptr, // LDAPURL
+ &_create<CryptoConfigEntryDirPath>, // DirPath
+};
+
+CryptoConfigEntryGUI *Kleo::CryptoConfigEntryGUIFactory::createEntryGUI(CryptoConfigModule *module, QGpgME::CryptoConfigEntry *entry, const QString &entryName, QGridLayout *glay, QWidget *widget)
+{
+ Q_ASSERT(entry);
+
+ // try to lookup by path:
+ const QString path = entry->path();
+ for (unsigned int i = 0; i < numWidgetsByEntryName; ++i)
+ if (QRegExp(QLatin1String(widgetsByEntryName[i].entryGlob), Qt::CaseSensitive, QRegExp::Wildcard).exactMatch(path)) {
+ return widgetsByEntryName[i].create(module, entry, entryName, glay, widget);
+ }
+
+ // none found, so look up by type:
+ const unsigned int argType = entry->argType();
+ Q_ASSERT(argType < QGpgME::CryptoConfigEntry::NumArgType);
+ if (entry->isList())
+ if (const constructor create = listWidgets[argType]) {
+ return create(module, entry, entryName, glay, widget);
+ } else {
+ qCWarning(KLEO_UI_LOG) << "No widget implemented for list of type" << entry->argType();
+ }
+ else if (const constructor create = scalarWidgets[argType]) {
+ return create(module, entry, entryName, glay, widget);
+ } else {
+ qCWarning(KLEO_UI_LOG) << "No widget implemented for type" << entry->argType();
+ }
+
+ return nullptr;
+}
+
+////
+
+Kleo::CryptoConfigEntryGUI::CryptoConfigEntryGUI(
+ CryptoConfigModule *module,
+ QGpgME::CryptoConfigEntry *entry,
+ const QString &entryName)
+ : QObject(module), mEntry(entry), mName(entryName), mChanged(false)
+{
+ connect(this, &CryptoConfigEntryGUI::changed, module, &CryptoConfigModule::changed);
+}
+
+QString Kleo::CryptoConfigEntryGUI::description() const
+{
+ QString descr = mEntry->description();
+ if (descr.isEmpty()) { // happens for expert options
+ // String does not need to be translated because the options itself
+ // are also not translated
+ return QStringLiteral("\"%1\"").arg(mName);
+ }
+ if (i18nc("Translate this to 'yes' or 'no' (use the English words!) "
+ "depending on whether your language uses "
+ "Sentence style capitalisation in GUI labels (yes) or not (no). "
+ "Context: We get some backend strings in that have the wrong "
+ "capitalizaion (in English, at least) so we need to force the "
+ "first character to upper-case. It is this behaviour you can "
+ "control for your language with this translation.", "yes") == QLatin1String("yes")) {
+ descr[0] = descr[0].toUpper();
+ }
+ return descr;
+}
+
+void Kleo::CryptoConfigEntryGUI::resetToDefault()
+{
+ mEntry->resetToDefault();
+ load();
+}
+
+////
+
+Kleo::CryptoConfigEntryLineEdit::CryptoConfigEntryLineEdit(
+ CryptoConfigModule *module,
+ QGpgME::CryptoConfigEntry *entry, const QString &entryName,
+ QGridLayout *glay, QWidget *widget)
+ : CryptoConfigEntryGUI(module, entry, entryName)
+{
+ const int row = glay->rowCount();
+ mLineEdit = new KLineEdit(widget);
+ QLabel *label = new QLabel(description(), widget);
+ label->setBuddy(mLineEdit);
+ glay->addWidget(label, row, 1);
+ glay->addWidget(mLineEdit, row, 2);
+ if (entry->isReadOnly()) {
+ label->setEnabled(false);
+ mLineEdit->setEnabled(false);
+ } else {
+ connect(mLineEdit, &KLineEdit::textChanged, this, &CryptoConfigEntryLineEdit::slotChanged);
+ }
+}
+
+void Kleo::CryptoConfigEntryLineEdit::doSave()
+{
+ mEntry->setStringValue(mLineEdit->text());
+}
+
+void Kleo::CryptoConfigEntryLineEdit::doLoad()
+{
+ mLineEdit->setText(mEntry->stringValue());
+}
+
+////
+
+static const struct {
+ const char *label;
+ const char *name;
+} debugLevels[] = {
+ { I18N_NOOP("0 - None"), "none"},
+ { I18N_NOOP("1 - Basic"), "basic"},
+ { I18N_NOOP("2 - Verbose"), "advanced"},
+ { I18N_NOOP("3 - More Verbose"), "expert"},
+ { I18N_NOOP("4 - All"), "guru"},
+};
+static const unsigned int numDebugLevels = sizeof debugLevels / sizeof * debugLevels;
+
+Kleo::CryptoConfigEntryDebugLevel::CryptoConfigEntryDebugLevel(CryptoConfigModule *module, QGpgME::CryptoConfigEntry *entry,
+ const QString &entryName, QGridLayout *glay, QWidget *widget)
+ : CryptoConfigEntryGUI(module, entry, entryName),
+ mComboBox(new QComboBox(widget))
+{
+ QLabel *label = new QLabel(i18n("Set the debugging level to"), widget);
+ label->setBuddy(mComboBox);
+
+ for (unsigned int i = 0; i < numDebugLevels; ++i) {
+ mComboBox->addItem(i18n(debugLevels[i].label));
+ }
+
+ if (entry->isReadOnly()) {
+ label->setEnabled(false);
+ mComboBox->setEnabled(false);
+ } else {
+ connect(mComboBox, static_cast<void(QComboBox::*)(int)>(&QComboBox::currentIndexChanged),
+ this, &CryptoConfigEntryDebugLevel::slotChanged);
+ }
+
+ const int row = glay->rowCount();
+ glay->addWidget(label, row, 1);
+ glay->addWidget(mComboBox, row, 2);
+}
+
+void Kleo::CryptoConfigEntryDebugLevel::doSave()
+{
+ const unsigned int idx = mComboBox->currentIndex();
+ if (idx < numDebugLevels) {
+ mEntry->setStringValue(QLatin1String(debugLevels[idx].name));
+ } else {
+ mEntry->setStringValue(QString());
+ }
+}
+
+void Kleo::CryptoConfigEntryDebugLevel::doLoad()
+{
+ const QString str = mEntry->stringValue();
+ for (unsigned int i = 0; i < numDebugLevels; ++i)
+ if (str == QLatin1String(debugLevels[i].name)) {
+ mComboBox->setCurrentIndex(i);
+ return;
+ }
+ mComboBox->setCurrentIndex(0);
+}
+
+////
+
+Kleo::CryptoConfigEntryPath::CryptoConfigEntryPath(
+ CryptoConfigModule *module,
+ QGpgME::CryptoConfigEntry *entry, const QString &entryName,
+ QGridLayout *glay, QWidget *widget)
+ : CryptoConfigEntryGUI(module, entry, entryName),
+ mFileNameRequester(nullptr)
+{
+ const int row = glay->rowCount();
+ QWidget *req;
+ req = mFileNameRequester = new FileNameRequester(widget);
+ mFileNameRequester->setExistingOnly(false);
+ mFileNameRequester->setFilter(QDir::Files);
+ QLabel *label = new QLabel(description(), widget);
+ label->setBuddy(req);
+ glay->addWidget(label, row, 1);
+ glay->addWidget(req, row, 2);
+ if (entry->isReadOnly()) {
+ label->setEnabled(false);
+ if (mFileNameRequester) {
+ mFileNameRequester->setEnabled(false);
+ }
+ } else {
+ if (mFileNameRequester)
+ connect(mFileNameRequester, &FileNameRequester::fileNameChanged, this, &CryptoConfigEntryPath::slotChanged);
+ }
+}
+
+void Kleo::CryptoConfigEntryPath::doSave()
+{
+ mEntry->setURLValue(QUrl::fromLocalFile(mFileNameRequester->fileName()));
+}
+
+void Kleo::CryptoConfigEntryPath::doLoad()
+{
+ if (mEntry->urlValue().isLocalFile()) {
+ mFileNameRequester->setFileName(mEntry->urlValue().toLocalFile());
+ } else {
+ mFileNameRequester->setFileName(mEntry->urlValue().toString());
+ }
+}
+
+////
+
+Kleo::CryptoConfigEntryDirPath::CryptoConfigEntryDirPath(
+ CryptoConfigModule *module,
+ QGpgME::CryptoConfigEntry *entry, const QString &entryName,
+ QGridLayout *glay, QWidget *widget)
+ : CryptoConfigEntryGUI(module, entry, entryName),
+ mFileNameRequester(nullptr)
+{
+ const int row = glay->rowCount();
+ QWidget *req;
+ req = mFileNameRequester = new FileNameRequester(widget);
+ mFileNameRequester->setExistingOnly(false);
+ mFileNameRequester->setFilter(QDir::Dirs);
+ QLabel *label = new QLabel(description(), widget);
+ label->setBuddy(req);
+ glay->addWidget(label, row, 1);
+ glay->addWidget(req, row, 2);
+ if (entry->isReadOnly()) {
+ label->setEnabled(false);
+ if (mFileNameRequester) {
+ mFileNameRequester->setEnabled(false);
+ }
+ } else {
+ if (mFileNameRequester)
+ connect(mFileNameRequester, &FileNameRequester::fileNameChanged, this, &CryptoConfigEntryDirPath::slotChanged);
+ }
+}
+
+void Kleo::CryptoConfigEntryDirPath::doSave()
+{
+ mEntry->setURLValue(QUrl::fromLocalFile(mFileNameRequester->fileName()));
+}
+
+void Kleo::CryptoConfigEntryDirPath::doLoad()
+{
+ mFileNameRequester->setFileName(mEntry->urlValue().toLocalFile());
+}
+
+////
+
+Kleo::CryptoConfigEntrySpinBox::CryptoConfigEntrySpinBox(
+ CryptoConfigModule *module,
+ QGpgME::CryptoConfigEntry *entry, const QString &entryName,
+ QGridLayout *glay, QWidget *widget)
+ : CryptoConfigEntryGUI(module, entry, entryName)
+{
+
+ if (entry->argType() == QGpgME::CryptoConfigEntry::ArgType_None && entry->isList()) {
+ mKind = ListOfNone;
+ } else if (entry->argType() == QGpgME::CryptoConfigEntry::ArgType_UInt) {
+ mKind = UInt;
+ } else {
+ Q_ASSERT(entry->argType() == QGpgME::CryptoConfigEntry::ArgType_Int);
+ mKind = Int;
+ }
+
+ const int row = glay->rowCount();
+ mNumInput = new QSpinBox(widget);
+ QLabel *label = new QLabel(description(), widget);
+ label->setBuddy(mNumInput);
+ glay->addWidget(label, row, 1);
+ glay->addWidget(mNumInput, row, 2);
+
+ if (entry->isReadOnly()) {
+ label->setEnabled(false);
+ mNumInput->setEnabled(false);
+ } else {
+ mNumInput->setMinimum(mKind == Int ? std::numeric_limits<int>::min() : 0);
+ mNumInput->setMaximum(std::numeric_limits<int>::max());
+ connect(mNumInput, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged), this, &CryptoConfigEntrySpinBox::slotChanged);
+ }
+}
+
+void Kleo::CryptoConfigEntrySpinBox::doSave()
+{
+ int value = mNumInput->value();
+ switch (mKind) {
+ case ListOfNone:
+ mEntry->setNumberOfTimesSet(value);
+ break;
+ case UInt:
+ mEntry->setUIntValue(value);
+ break;
+ case Int:
+ mEntry->setIntValue(value);
+ break;
+ }
+}
+
+void Kleo::CryptoConfigEntrySpinBox::doLoad()
+{
+ int value = 0;
+ switch (mKind) {
+ case ListOfNone:
+ value = mEntry->numberOfTimesSet();
+ break;
+ case UInt:
+ value = mEntry->uintValue();
+ break;
+ case Int:
+ value = mEntry->intValue();
+ break;
+ }
+ mNumInput->setValue(value);
+}
+
+////
+
+Kleo::CryptoConfigEntryCheckBox::CryptoConfigEntryCheckBox(
+ CryptoConfigModule *module,
+ QGpgME::CryptoConfigEntry *entry, const QString &entryName,
+ QGridLayout *glay, QWidget *widget)
+ : CryptoConfigEntryGUI(module, entry, entryName)
+{
+ const int row = glay->rowCount();
+ mCheckBox = new QCheckBox(widget);
+ glay->addWidget(mCheckBox, row, 1, 1, 2);
+ mCheckBox->setText(description());
+ if (entry->isReadOnly()) {
+ mCheckBox->setEnabled(false);
+ } else {
+ connect(mCheckBox, &QCheckBox::toggled, this, &CryptoConfigEntryCheckBox::slotChanged);
+ }
+}
+
+void Kleo::CryptoConfigEntryCheckBox::doSave()
+{
+ mEntry->setBoolValue(mCheckBox->isChecked());
+}
+
+void Kleo::CryptoConfigEntryCheckBox::doLoad()
+{
+ mCheckBox->setChecked(mEntry->boolValue());
+}
+
+Kleo::CryptoConfigEntryLDAPURL::CryptoConfigEntryLDAPURL(
+ CryptoConfigModule *module,
+ QGpgME::CryptoConfigEntry *entry,
+ const QString &entryName,
+ QGridLayout *glay, QWidget *widget)
+ : CryptoConfigEntryGUI(module, entry, entryName)
+{
+ mLabel = new QLabel(widget);
+ mPushButton = new QPushButton(entry->isReadOnly() ? i18n("Show...") : i18n("Edit..."), widget);
+
+ const int row = glay->rowCount();
+ QLabel *label = new QLabel(description(), widget);
+ label->setBuddy(mPushButton);
+ glay->addWidget(label, row, 1);
+ QHBoxLayout *hlay = new QHBoxLayout;
+ glay->addLayout(hlay, row, 2);
+ hlay->addWidget(mLabel, 1);
+ hlay->addWidget(mPushButton);
+
+ if (entry->isReadOnly()) {
+ mLabel->setEnabled(false);
+ }
+ connect(mPushButton, &QPushButton::clicked, this, &CryptoConfigEntryLDAPURL::slotOpenDialog);
+}
+
+void Kleo::CryptoConfigEntryLDAPURL::doLoad()
+{
+ setURLList(mEntry->urlValueList());
+}
+
+void Kleo::CryptoConfigEntryLDAPURL::doSave()
+{
+ mEntry->setURLValueList(mURLList);
+}
+
+void prepareURLCfgDialog(QDialog *dialog, DirectoryServicesWidget *dirserv, bool readOnly)
+{
+ QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok);
+
+ if (!readOnly) {
+ buttonBox->addButton(QDialogButtonBox::Cancel);
+ buttonBox->addButton(QDialogButtonBox::RestoreDefaults);
+
+ QPushButton *defaultsBtn = buttonBox->button(QDialogButtonBox::RestoreDefaults);
+
+ QObject::connect(defaultsBtn, &QPushButton::clicked, dirserv, &DirectoryServicesWidget::clear);
+ QObject::connect(buttonBox, &QDialogButtonBox::rejected, dialog, &QDialog::reject);
+ }
+
+ QObject::connect(buttonBox, &QDialogButtonBox::accepted, dialog, &QDialog::accept);
+
+ QVBoxLayout *layout = new QVBoxLayout;
+ layout->addWidget(dirserv);
+ layout->addWidget(buttonBox);
+ dialog->setLayout(layout);
+}
+
+void Kleo::CryptoConfigEntryLDAPURL::slotOpenDialog()
+{
+ // I'm a bad boy and I do it all on the stack. Enough classes already :)
+ // This is just a simple dialog around the directory-services-widget
+ QDialog dialog(mPushButton->parentWidget());
+ dialog.setWindowTitle(i18n("Configure LDAP Servers"));
+
+ DirectoryServicesWidget *dirserv = new DirectoryServicesWidget(&dialog);
+
+ prepareURLCfgDialog(&dialog, dirserv, mEntry->isReadOnly());
+
+ dirserv->setX509ReadOnly(mEntry->isReadOnly());
+ dirserv->setAllowedSchemes(DirectoryServicesWidget::LDAP);
+ dirserv->setAllowedProtocols(DirectoryServicesWidget::X509Protocol);
+ dirserv->addX509Services(mURLList);
+
+ if (dialog.exec()) {
+ setURLList(dirserv->x509Services());
+ slotChanged();
+ }
+}
+
+void Kleo::CryptoConfigEntryLDAPURL::setURLList(const QList<QUrl> &urlList)
+{
+ mURLList = urlList;
+ if (mURLList.isEmpty()) {
+ mLabel->setText(i18n("None configured"));
+ } else {
+ mLabel->setText(i18np("1 server configured", "%1 servers configured", mURLList.count()));
+ }
+}
+
+Kleo::CryptoConfigEntryKeyserver::CryptoConfigEntryKeyserver(
+ CryptoConfigModule *module,
+ QGpgME::CryptoConfigEntry *entry,
+ const QString &entryName,
+ QGridLayout *glay, QWidget *widget)
+ : CryptoConfigEntryGUI(module, entry, entryName)
+{
+ mLabel = new QLabel(widget);
+ mPushButton = new QPushButton(i18n("Edit..."), widget);
+
+ const int row = glay->rowCount();
+ QLabel *label = new QLabel(i18n("Use keyserver at"), widget);
+ label->setBuddy(mPushButton);
+ glay->addWidget(label, row, 1);
+ QHBoxLayout *hlay = new QHBoxLayout;
+ glay->addLayout(hlay, row, 2);
+ hlay->addWidget(mLabel, 1);
+ hlay->addWidget(mPushButton);
+
+ if (entry->isReadOnly()) {
+ mLabel->setEnabled(false);
+ mPushButton->hide();
+ } else {
+ connect(mPushButton, &QPushButton::clicked, this, &CryptoConfigEntryKeyserver::slotOpenDialog);
+ }
+}
+
+Kleo::ParsedKeyserver Kleo::parseKeyserver(const QString &str)
+{
+ const QStringList list = str.split(QRegExp(QLatin1String("[\\s,]")), QString::SkipEmptyParts);
+ if (list.empty()) {
+ return Kleo::ParsedKeyserver();
+ }
+ Kleo::ParsedKeyserver result;
+ result.url = list.front();
+ Q_FOREACH (const QString &kvpair, list.mid(1)) {
+ const int idx = kvpair.indexOf(QLatin1Char('='));
+ if (idx < 0) {
+ result.options.push_back(qMakePair(kvpair, QString())); // null QString
+ } else {
+ const QString key = kvpair.left(idx);
+ const QString value = kvpair.mid(idx + 1);
+ if (value.isEmpty()) {
+ result.options.push_back(qMakePair(key, QStringLiteral(""))); // make sure it's not a null QString, only an empty one
+ } else {
+ result.options.push_back(qMakePair(key, value));
+ }
+ }
+ }
+ return result;
+}
+
+QString Kleo::assembleKeyserver(const ParsedKeyserver &keyserver)
+{
+ if (keyserver.options.empty()) {
+ return keyserver.url;
+ }
+ QString result = keyserver.url;
+ typedef QPair<QString, QString> Pair;
+ for (const Pair &pair : qAsConst(keyserver.options))
+ if (pair.second.isNull()) {
+ result += QLatin1Char(' ') + pair.first;
+ } else {
+ result += QLatin1Char(' ') + pair.first + QLatin1Char('=') + pair.second;
+ }
+ return result;
+}
+
+void Kleo::CryptoConfigEntryKeyserver::doLoad()
+{
+ mParsedKeyserver = parseKeyserver(mEntry->stringValue());
+ mLabel->setText(mParsedKeyserver.url);
+}
+
+void Kleo::CryptoConfigEntryKeyserver::doSave()
+{
+ mParsedKeyserver.url = mLabel->text();
+ mEntry->setStringValue(assembleKeyserver(mParsedKeyserver));
+}
+
+static QList<QUrl> string2urls(const QString &str)
+{
+ QList<QUrl> ret;
+ if (str.isEmpty()) {
+ return ret;
+ }
+ ret << QUrl::fromUserInput(str);
+ return ret;
+}
+
+static QString urls2string(const QList<QUrl> &urls)
+{
+ return urls.empty() ? QString() : urls.front().url();
+}
+
+void Kleo::CryptoConfigEntryKeyserver::slotOpenDialog()
+{
+ // I'm a bad boy and I do it all on the stack. Enough classes already :)
+ // This is just a simple dialog around the directory-services-widget
+ QDialog dialog(mPushButton->parentWidget());
+ dialog.setWindowTitle(i18n("Configure Keyservers"));
+
+ DirectoryServicesWidget *dirserv = new DirectoryServicesWidget(&dialog);
+
+ prepareURLCfgDialog(&dialog, dirserv, mEntry->isReadOnly());
+
+ dirserv->setOpenPGPReadOnly(mEntry->isReadOnly());
+ dirserv->setAllowedSchemes(DirectoryServicesWidget::AllSchemes);
+ dirserv->setAllowedProtocols(DirectoryServicesWidget::OpenPGPProtocol);
+ dirserv->addOpenPGPServices(string2urls(mLabel->text()));
+
+ if (dialog.exec()) {
+ mLabel->setText(urls2string(dirserv->openPGPServices()));
+ slotChanged();
+ }
+}
+
+#include "moc_cryptoconfigmodule_p.cpp"
--- /dev/null
+/*
+ cryptoconfigmodule.h
+
+ This file is part of libkleopatra
+ Copyright (c) 2004,2005 Klarälvdalens Datakonsult AB
+
+ Libkleopatra is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License,
+ version 2, as published by the Free Software Foundation.
+
+ Libkleopatra 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#ifndef CRYPTOCONFIGMODULE_H
+#define CRYPTOCONFIGMODULE_H
+
+#include "kleo_export.h"
+#include <kpagedialog.h>
+#include <QList>
+
+namespace QGpgME
+{
+class CryptoConfig;
+} // namespace QGpgME
+
+namespace Kleo
+{
+class CryptoConfigComponentGUI;
+struct ParsedKeyserver {
+ QString url;
+ QVector< QPair<QString, QString> > options;
+};
+
+KLEO_EXPORT ParsedKeyserver parseKeyserver(const QString &str);
+KLEO_EXPORT QString assembleKeyserver(const ParsedKeyserver &keyserver);
+
+/**
+ * Crypto Config Module widget, dynamically generated from CryptoConfig
+ * It's a simple QWidget so that it can be embedded into a dialog or into a KCModule.
+ */
+class KLEO_EXPORT CryptoConfigModule : public KPageWidget
+{
+ Q_OBJECT
+public:
+ enum Layout { TabbedLayout, IconListLayout, LinearizedLayout };
+ explicit CryptoConfigModule(QGpgME::CryptoConfig *config, QWidget *parent = nullptr);
+ explicit CryptoConfigModule(QGpgME::CryptoConfig *config, Layout layout, QWidget *parent = nullptr);
+
+ bool hasError() const;
+
+ void save();
+ void reset(); // i.e. reload current settings, discarding user input
+ void defaults();
+ void cancel();
+
+Q_SIGNALS:
+ void changed();
+
+private:
+ void init(Layout layout);
+
+private:
+ QGpgME::CryptoConfig *mConfig;
+ QList<CryptoConfigComponentGUI *> mComponentGUIs;
+};
+
+}
+
+#endif
--- /dev/null
+/*
+ cryptoconfigmodule_p.h
+
+ This file is part of libkleopatra
+ Copyright (c) 2004,2005 Klarälvdalens Datakonsult AB
+
+ Libkleopatra is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License,
+ version 2, as published by the Free Software Foundation.
+
+ Libkleopatra 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#ifndef CRYPTOCONFIGMODULE_P_H
+#define CRYPTOCONFIGMODULE_P_H
+
+#include <QWidget>
+
+#include <QList>
+
+class KLineEdit;
+class QSpinBox;
+
+class QPushButton;
+class QGridLayout;
+class QLabel;
+class QCheckBox;
+class QComboBox;
+
+namespace Kleo
+{
+class FileNameRequester;
+}
+
+namespace QGpgME
+{
+class CryptoConfig;
+class CryptoConfigComponent;
+class CryptoConfigGroup;
+class CryptoConfigEntry;
+} // namespace QGpgME
+
+namespace Kleo
+{
+class CryptoConfigComponentGUI;
+class CryptoConfigGroupGUI;
+class CryptoConfigEntryGUI;
+
+/**
+ * A widget corresponding to a component in the crypto config
+ */
+class CryptoConfigComponentGUI : public QWidget
+{
+ Q_OBJECT
+
+public:
+ CryptoConfigComponentGUI(CryptoConfigModule *module, QGpgME::CryptoConfigComponent *component,
+ QWidget *parent = nullptr);
+
+ bool save();
+ void load();
+ void defaults();
+
+private:
+ QGpgME::CryptoConfigComponent *mComponent;
+ QList<CryptoConfigGroupGUI *> mGroupGUIs;
+};
+
+/**
+ * A class managing widgets corresponding to a group in the crypto config
+ */
+class CryptoConfigGroupGUI : public QObject
+{
+ Q_OBJECT
+
+public:
+ CryptoConfigGroupGUI(CryptoConfigModule *module, QGpgME::CryptoConfigGroup *group,
+ QGridLayout *layout, QWidget *parent = nullptr);
+
+ bool save();
+ void load();
+ void defaults();
+
+private:
+ QGpgME::CryptoConfigGroup *mGroup;
+ QList<CryptoConfigEntryGUI *> mEntryGUIs;
+};
+
+/**
+ * Factory for CryptoConfigEntryGUI instances
+ * Not a real factory, but can become one later.
+ */
+class CryptoConfigEntryGUIFactory
+{
+public:
+ static CryptoConfigEntryGUI *createEntryGUI(
+ CryptoConfigModule *module,
+ QGpgME::CryptoConfigEntry *entry, const QString &entryName,
+ QGridLayout *layout, QWidget *widget);
+};
+
+/**
+ * Base class for the widget managers tied to an entry in the crypto config
+ */
+class CryptoConfigEntryGUI : public QObject
+{
+ Q_OBJECT
+public:
+ CryptoConfigEntryGUI(CryptoConfigModule *module,
+ QGpgME::CryptoConfigEntry *entry,
+ const QString &entryName);
+
+ void load()
+ {
+ doLoad();
+ mChanged = false;
+ }
+ void save()
+ {
+ Q_ASSERT(mChanged);
+ doSave();
+ mChanged = false;
+ }
+ void resetToDefault();
+
+ QString description() const;
+ bool isChanged() const
+ {
+ return mChanged;
+ }
+
+Q_SIGNALS:
+ void changed();
+
+protected Q_SLOTS:
+ void slotChanged()
+ {
+ mChanged = true;
+ emit changed();
+ }
+
+protected:
+ virtual void doSave() = 0;
+ virtual void doLoad() = 0;
+
+ QGpgME::CryptoConfigEntry *mEntry;
+ QString mName;
+ bool mChanged;
+};
+
+/**
+ * A widget manager for a string entry in the crypto config
+ */
+class CryptoConfigEntryLineEdit : public CryptoConfigEntryGUI
+{
+ Q_OBJECT
+
+public:
+ CryptoConfigEntryLineEdit(CryptoConfigModule *module,
+ QGpgME::CryptoConfigEntry *entry,
+ const QString &entryName,
+ QGridLayout *layout,
+ QWidget *parent = nullptr);
+
+ void doSave() override;
+ void doLoad() override;
+private:
+ KLineEdit *mLineEdit;
+};
+
+/**
+ * A widget manager for a debug-level entry in the crypto config
+ */
+class CryptoConfigEntryDebugLevel : public CryptoConfigEntryGUI
+{
+ Q_OBJECT
+public:
+ CryptoConfigEntryDebugLevel(CryptoConfigModule *module, QGpgME::CryptoConfigEntry *entry,
+ const QString &entryName, QGridLayout *layout, QWidget *parent = nullptr);
+
+ void doSave() override;
+ void doLoad() override;
+private:
+ QComboBox *mComboBox;
+};
+
+/**
+ * A widget manager for a path entry in the crypto config
+ */
+class CryptoConfigEntryPath : public CryptoConfigEntryGUI
+{
+ Q_OBJECT
+
+public:
+ CryptoConfigEntryPath(CryptoConfigModule *module,
+ QGpgME::CryptoConfigEntry *entry,
+ const QString &entryName,
+ QGridLayout *layout,
+ QWidget *parent = nullptr);
+
+ void doSave() override;
+ void doLoad() override;
+private:
+ Kleo::FileNameRequester *mFileNameRequester;
+};
+
+/**
+ * A widget manager for a directory path entry in the crypto config
+ */
+class CryptoConfigEntryDirPath : public CryptoConfigEntryGUI
+{
+ Q_OBJECT
+
+public:
+ CryptoConfigEntryDirPath(CryptoConfigModule *module,
+ QGpgME::CryptoConfigEntry *entry,
+ const QString &entryName,
+ QGridLayout *layout,
+ QWidget *parent = nullptr);
+
+ void doSave() override;
+ void doLoad() override;
+private:
+ Kleo::FileNameRequester *mFileNameRequester;
+};
+
+/**
+ * A widget manager for an int/uint entry in the crypto config
+ */
+class CryptoConfigEntrySpinBox : public CryptoConfigEntryGUI
+{
+ Q_OBJECT
+
+public:
+ CryptoConfigEntrySpinBox(CryptoConfigModule *module,
+ QGpgME::CryptoConfigEntry *entry,
+ const QString &entryName,
+ QGridLayout *layout,
+ QWidget *parent = nullptr);
+ void doSave() override;
+ void doLoad() override;
+private:
+ enum { Int, UInt, ListOfNone } mKind;
+ QSpinBox *mNumInput;
+};
+
+/**
+ * A widget manager for a bool entry in the crypto config
+ */
+class CryptoConfigEntryCheckBox : public CryptoConfigEntryGUI
+{
+ Q_OBJECT
+
+public:
+ CryptoConfigEntryCheckBox(CryptoConfigModule *module,
+ QGpgME::CryptoConfigEntry *entry,
+ const QString &entryName,
+ QGridLayout *layout,
+ QWidget *parent = nullptr);
+ void doSave() override;
+ void doLoad() override;
+private:
+ QCheckBox *mCheckBox;
+};
+
+/**
+ * A widget manager for an LDAP list entry in the crypto config
+ */
+class CryptoConfigEntryLDAPURL : public CryptoConfigEntryGUI
+{
+ Q_OBJECT
+
+public:
+ CryptoConfigEntryLDAPURL(CryptoConfigModule *module,
+ QGpgME::CryptoConfigEntry *entry,
+ const QString &entryName,
+ QGridLayout *layout,
+ QWidget *parent = nullptr);
+ void doSave() override;
+ void doLoad() override;
+private Q_SLOTS:
+ void slotOpenDialog();
+private:
+ void setURLList(const QList<QUrl> &urlList);
+ QLabel *mLabel;
+ QPushButton *mPushButton;
+ QList<QUrl> mURLList;
+};
+
+/**
+ * A widget manager for a (OpenPGP) keyserver entry in the crypto config
+ */
+class CryptoConfigEntryKeyserver : public CryptoConfigEntryGUI
+{
+ Q_OBJECT
+
+public:
+ CryptoConfigEntryKeyserver(CryptoConfigModule *module,
+ QGpgME::CryptoConfigEntry *entry,
+ const QString &entryName,
+ QGridLayout *layout,
+ QWidget *parent = nullptr);
+ void doSave() override;
+ void doLoad() override;
+private Q_SLOTS:
+ void slotOpenDialog();
+private:
+ QLabel *mLabel;
+ QPushButton *mPushButton;
+ ParsedKeyserver mParsedKeyserver;
+};
+}
+
+#endif // CRYPTOCONFIGMODULE_P_H
--- /dev/null
+/*
+ directoryserviceswidget.cpp
+
+ This file is part of Kleopatra, the KDE keymanager
+ Copyright (c) 2001,2002,2004 Klarävdalens Datakonsult AB
+ Copyright (c) 2017 Bundesamnt für Sicherheit in der Informationstechnik
+
+ Kleopatra is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Kleopatra 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#include "directoryserviceswidget.h"
+
+#include "ui_directoryserviceswidget.h"
+
+#include "kleo_ui_debug.h"
+
+#include <KLocalizedString>
+
+#include <QItemDelegate>
+#include <QAbstractTableModel>
+#include <QSpinBox>
+#include <QComboBox>
+#include <QHeaderView>
+#include <QMenu>
+#include <QAction>
+
+#include <vector>
+
+#include <climits>
+#include <algorithm>
+#include <functional>
+
+#include <gpgme++/engineinfo.h>
+
+using namespace Kleo;
+
+namespace
+{
+
+static QUrl defaultX509Service()
+{
+ QUrl url;
+ url.setScheme(QStringLiteral("ldap"));
+ url.setHost(i18nc("default server name, keep it a valid domain name, ie. no spaces", "server"));
+ return url;
+}
+static QUrl defaultOpenPGPService()
+{
+ QUrl url;
+ if (GpgME::engineInfo(GpgME::GpgEngine).engineVersion() < "2.1.16") {
+ url.setScheme(QStringLiteral("hkp"));
+ url.setHost(QStringLiteral("keys.gnupg.net"));
+ } else {
+ url.setScheme(QStringLiteral("hkps"));
+ url.setHost(QStringLiteral("hkps.pool.sks-keyservers.net"));
+ }
+ return url;
+}
+
+static bool is_ldap_scheme(const QUrl &url)
+{
+ const QString scheme = url.scheme();
+ return QString::compare(scheme, QStringLiteral("ldap"), Qt::CaseInsensitive) == 0
+ || QString::compare(scheme, QStringLiteral("ldaps"), Qt::CaseInsensitive) == 0;
+}
+
+static const struct {
+ const char label[6];
+ unsigned short port;
+ DirectoryServicesWidget::Scheme base;
+} protocols[] = {
+ { I18N_NOOP("hkp"), 11371, DirectoryServicesWidget::HKP },
+ { I18N_NOOP("http"), 80, DirectoryServicesWidget::HTTP },
+ { I18N_NOOP("https"), 443, DirectoryServicesWidget::HTTP },
+ { I18N_NOOP("ftp"), 21, DirectoryServicesWidget::FTP },
+ { I18N_NOOP("ftps"), 990, DirectoryServicesWidget::FTP },
+ { I18N_NOOP("ldap"), 389, DirectoryServicesWidget::LDAP },
+ { I18N_NOOP("ldaps"), 636, DirectoryServicesWidget::LDAP },
+};
+static const unsigned int numProtocols = sizeof protocols / sizeof * protocols;
+
+static unsigned short default_port(const QString &scheme)
+{
+ for (unsigned int i = 0; i < numProtocols; ++i)
+ if (QString::compare(scheme, QLatin1String(protocols[i].label), Qt::CaseInsensitive) == 0) {
+ return protocols[i].port;
+ }
+ return 0;
+}
+
+static QString display_scheme(const QUrl &url)
+{
+ if (url.scheme().isEmpty()) {
+ return QStringLiteral("hkp");
+ } else {
+ return url.scheme();
+ }
+}
+
+static QString display_host(const QUrl &url)
+{
+ // work around "subkeys.pgp.net" being interpreted as a path, not host
+ if (url.host().isEmpty()) {
+ return url.path();
+ } else {
+ return url.host();
+ }
+}
+
+static unsigned short display_port(const QUrl &url)
+{
+ if (url.port() > 0) {
+ return url.port();
+ } else {
+ return default_port(display_scheme(url));
+ }
+}
+
+static QRect calculate_geometry(const QRect &cell, const QSize &sizeHint)
+{
+ const int height = qMax(cell.height(), sizeHint.height());
+ return QRect(cell.left(), cell.top() - (height - cell.height()) / 2,
+ cell.width(), height);
+}
+
+/* The Model contains a bit historic cruft because in the past it was
+ * thought to be a good idea to combine openPGP and X509 in a single
+ * table although while you can have multiple X509 Keyservers there can
+ * only be one OpenPGP Keyserver. So the OpenPGP Keyserver is now a
+ * single lineedit. */
+class Model : public QAbstractTableModel
+{
+ Q_OBJECT
+public:
+ explicit Model(QObject *parent = nullptr)
+ : QAbstractTableModel(parent),
+ m_items(),
+ m_x509ReadOnly(false),
+ m_schemes(DirectoryServicesWidget::LDAP)
+ {
+
+ }
+
+ void setX509ReadOnly(bool ro)
+ {
+ if (ro == m_x509ReadOnly) {
+ return;
+ }
+ m_x509ReadOnly = ro;
+ for (unsigned int row = 0, end = rowCount(); row != end; ++row) {
+ Q_EMIT dataChanged(index(row, 0), index(row, NumColumns));
+ }
+ }
+
+ QModelIndex addX509Service(const QUrl &url, bool force = false)
+ {
+ const auto it = force ? m_items.end() : findExistingUrl(url);
+ unsigned int row;
+ if (it != m_items.end()) {
+ // existing item:
+ row = it - m_items.begin();
+ Q_EMIT dataChanged(index(row, 0), index(row, NumColumns));
+ } else {
+ // append new item
+ row = m_items.size();
+ beginInsertRows(QModelIndex(), row, row);
+ m_items.push_back(url);
+ endInsertRows();
+ }
+ return index(row, firstEditableColumn(row));
+ }
+
+ unsigned int numServices() const
+ {
+ return m_items.size();
+ }
+ QUrl service(unsigned int row) const
+ {
+ return row < m_items.size() ? m_items[row] : QUrl();
+ }
+
+ enum Columns {
+ Host,
+ Port,
+ BaseDN,
+ UserName,
+ Password,
+
+ NumColumns
+ };
+
+ QModelIndex duplicateRow(unsigned int row)
+ {
+ if (row >= m_items.size()) {
+ return QModelIndex();
+ }
+
+ beginInsertRows(QModelIndex(), row + 1, row + 1);
+ m_items.insert(m_items.begin() + row + 1, m_items[row]);
+ endInsertRows();
+ return index(row + 1, 0);
+ }
+
+ void deleteRow(unsigned int row)
+ {
+ if (row >= m_items.size()) {
+ return;
+ }
+
+ beginRemoveRows(QModelIndex(), row, row);
+ m_items.erase(m_items.begin() + row);
+ endInsertRows();
+ }
+
+ void clear()
+ {
+ if (m_items.empty()) {
+ return;
+ }
+ beginRemoveRows(QModelIndex(), 0, m_items.size() - 1);
+ m_items.clear();
+ endRemoveRows();
+ }
+
+ int columnCount(const QModelIndex & = QModelIndex()) const override
+ {
+ return NumColumns;
+ }
+ int rowCount(const QModelIndex & = QModelIndex()) const override
+ {
+ return m_items.size();
+ }
+
+ QVariant data(const QModelIndex &idx, int role) const override;
+ QVariant headerData(int section, Qt::Orientation o, int role) const override;
+
+ Qt::ItemFlags flags(const QModelIndex &idx) const override;
+ bool setData(const QModelIndex &idx, const QVariant &value, int role) override;
+
+private:
+ bool doSetData(unsigned int row, unsigned int column, const QVariant &value, int role);
+
+ static QString toolTipForColumn(int column);
+ bool isLdapRow(unsigned int row) const;
+ int firstEditableColumn(unsigned int) const
+ {
+ return Host;
+ }
+
+private:
+ std::vector<QUrl> m_items;
+ bool m_x509ReadOnly : 1;
+ DirectoryServicesWidget::Schemes m_schemes;
+
+private:
+ std::vector<QUrl>::iterator findExistingUrl(const QUrl &url)
+ {
+ return std::find_if(m_items.begin(), m_items.end(),
+ [&url](const QUrl &item) {
+ const QUrl &lhs = url;
+ const QUrl &rhs = item;
+ return QString::compare(display_scheme(lhs), display_scheme(rhs), Qt::CaseInsensitive) == 0
+ && QString::compare(display_host(lhs), display_host(rhs), Qt::CaseInsensitive) == 0
+ && lhs.port() == rhs.port()
+ && lhs.userName() == rhs.userName()
+ // ... ignore password...
+ && (!is_ldap_scheme(lhs)
+ || lhs.query() == rhs.query());
+ });
+ }
+};
+
+class Delegate : public QItemDelegate
+{
+ Q_OBJECT
+public:
+ explicit Delegate(QObject *parent = nullptr)
+ : QItemDelegate(parent),
+ m_schemes(DirectoryServicesWidget::LDAP)
+ {
+
+ }
+
+ void setAllowedSchemes(const DirectoryServicesWidget::Schemes schemes)
+ {
+ m_schemes = schemes;
+ }
+ DirectoryServicesWidget::Schemes allowedSchemes() const
+ {
+ return m_schemes;
+ }
+
+ QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &idx) const override
+ {
+ switch (idx.column()) {
+ case Model::Port:
+ return createPortWidget(parent);
+ }
+ return QItemDelegate::createEditor(parent, option, idx);
+ }
+
+ void setEditorData(QWidget *editor, const QModelIndex &idx) const override
+ {
+ switch (idx.column()) {
+ case Model::Port:
+ setPortEditorData(qobject_cast<QSpinBox *>(editor), idx.data(Qt::EditRole).toInt());
+ break;
+ default:
+ QItemDelegate::setEditorData(editor, idx);
+ break;
+ }
+ }
+
+ void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &idx) const override
+ {
+ switch (idx.column()) {
+ case Model::Port:
+ setPortModelData(qobject_cast<QSpinBox *>(editor), model, idx);
+ break;
+ default:
+ QItemDelegate::setModelData(editor, model, idx);
+ break;
+ }
+ }
+
+ void updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &index) const override
+ {
+ if (index.column() == Model::Port) {
+ editor->setGeometry(calculate_geometry(option.rect, editor->sizeHint()));
+ } else {
+ QItemDelegate::updateEditorGeometry(editor, option, index);
+ }
+ }
+
+private:
+ QWidget *createPortWidget(QWidget *parent) const
+ {
+ QSpinBox *sb = new QSpinBox(parent);
+ sb->setRange(1, USHRT_MAX); // valid port numbers
+ return sb;
+ }
+ void setPortEditorData(QSpinBox *sb, unsigned short port) const
+ {
+ Q_ASSERT(sb);
+ sb->setValue(port);
+ }
+ void setPortModelData(const QSpinBox *sb, QAbstractItemModel *model, const QModelIndex &idx) const
+ {
+ Q_ASSERT(sb);
+ Q_ASSERT(model);
+ model->setData(idx, sb->value());
+ }
+
+private:
+ DirectoryServicesWidget::Schemes m_schemes;
+};
+
+}
+
+class DirectoryServicesWidget::Private
+{
+ friend class ::Kleo::DirectoryServicesWidget;
+ DirectoryServicesWidget *const q;
+public:
+ explicit Private(DirectoryServicesWidget *qq)
+ : q(qq),
+ protocols(AllProtocols),
+ readOnlyProtocols(NoProtocol),
+ model(),
+ delegate(),
+ ui(q)
+ {
+ ui.treeView->setModel(&model);
+ ui.treeView->setItemDelegate(&delegate);
+
+ ui.pgpKeyserver->setPlaceholderText(defaultOpenPGPService().toString());
+
+ connect(&model, &QAbstractItemModel::dataChanged, q, &DirectoryServicesWidget::changed);
+ connect(&model, &QAbstractItemModel::rowsInserted, q, &DirectoryServicesWidget::changed);
+ connect(&model, &QAbstractItemModel::rowsRemoved, q, &DirectoryServicesWidget::changed);
+ connect(ui.treeView->selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)),
+ q, SLOT(slotSelectionChanged()));
+ connect(ui.pgpKeyserver, &QLineEdit::textChanged, q, &DirectoryServicesWidget::changed);
+
+ slotShowUserAndPasswordToggled(false);
+ }
+
+private:
+ void edit(const QModelIndex &index)
+ {
+ if (index.isValid()) {
+ ui.treeView->clearSelection();
+ ui.treeView->selectionModel()->setCurrentIndex(index, QItemSelectionModel::Select | QItemSelectionModel::Rows);
+ ui.treeView->edit(index);
+ }
+ }
+ void slotNewX509Clicked()
+ {
+ edit(model.addX509Service(defaultX509Service(), true));
+ }
+ void slotDeleteClicked()
+ {
+ model.deleteRow(selectedRow());
+ }
+ void slotSelectionChanged()
+ {
+ enableDisableActions();
+ }
+ void slotShowUserAndPasswordToggled(bool on)
+ {
+ QHeaderView *const hv = ui.treeView->header();
+ Q_ASSERT(hv);
+ hv->setSectionHidden(Model::UserName, !on);
+ hv->setSectionHidden(Model::Password, !on);
+ }
+
+ int selectedRow() const
+ {
+ const QModelIndexList mil = ui.treeView->selectionModel()->selectedRows();
+ return mil.empty() ? -1 : mil.front().row();
+ }
+ int currentRow() const
+ {
+ const QModelIndex idx = ui.treeView->selectionModel()->currentIndex();
+ return idx.isValid() ? idx.row() : -1;
+ }
+
+ void enableDisableActions()
+ {
+ const bool x509 = (protocols & X509Protocol) && !(readOnlyProtocols & X509Protocol);
+ const bool pgp = (protocols & OpenPGPProtocol) && !(readOnlyProtocols & OpenPGPProtocol);
+ ui.newTB->setEnabled(x509);
+ ui.pgpKeyserver->setEnabled(pgp);
+ const int row = selectedRow();
+ ui.deleteTB->setEnabled(row >= 0 && !(readOnlyProtocols & X509Protocol));
+ }
+
+private:
+ Protocols protocols;
+ Protocols readOnlyProtocols;
+ Model model;
+ Delegate delegate;
+ struct UI : Ui_DirectoryServicesWidget {
+
+ explicit UI(DirectoryServicesWidget *q)
+ : Ui_DirectoryServicesWidget()
+ {
+ setupUi(q);
+ }
+
+ } ui;
+};
+
+DirectoryServicesWidget::DirectoryServicesWidget(QWidget *p, Qt::WindowFlags f)
+ : QWidget(p, f), d(new Private(this))
+{
+
+}
+
+DirectoryServicesWidget::~DirectoryServicesWidget()
+{
+ delete d;
+}
+
+void DirectoryServicesWidget::setAllowedSchemes(Schemes schemes)
+{
+ d->delegate.setAllowedSchemes(schemes);
+}
+
+DirectoryServicesWidget::Schemes DirectoryServicesWidget::allowedSchemes() const
+{
+ return d->delegate.allowedSchemes();
+}
+
+void DirectoryServicesWidget::setAllowedProtocols(Protocols protocols)
+{
+ if (d->protocols == protocols) {
+ return;
+ }
+ d->protocols = protocols;
+ d->enableDisableActions();
+}
+
+DirectoryServicesWidget::Protocols DirectoryServicesWidget::allowedProtocols() const
+{
+ return d->protocols;
+}
+
+void DirectoryServicesWidget::setReadOnlyProtocols(Protocols protocols)
+{
+ if (d->readOnlyProtocols == protocols) {
+ return;
+ }
+ d->readOnlyProtocols = protocols;
+ d->model.setX509ReadOnly(protocols & X509Protocol);
+ d->enableDisableActions();
+}
+
+DirectoryServicesWidget::Protocols DirectoryServicesWidget::readOnlyProtocols() const
+{
+ return d->readOnlyProtocols;
+}
+
+void DirectoryServicesWidget::addOpenPGPServices(const QList<QUrl> &urls)
+{
+ if (urls.size() > 1) {
+ qCWarning(KLEO_UI_LOG) << "More then one PGP Server, Ignoring all others.";
+ }
+ if (urls.size()) {
+ d->ui.pgpKeyserver->setText(urls[0].toString());
+ }
+}
+
+QList<QUrl> DirectoryServicesWidget::openPGPServices() const
+{
+ QList<QUrl> result;
+ const QString pgpStr = d->ui.pgpKeyserver->text();
+ if (pgpStr.contains(QStringLiteral("://"))) {
+ // Maybe validate here? Otoh maybe gnupg adds support for more schemes
+ // then we know about in the future.
+ result.push_back(QUrl::fromUserInput(pgpStr));
+ } else if (!pgpStr.isEmpty()) {
+ result.push_back(QUrl::fromUserInput(QStringLiteral("hkp://") + pgpStr));
+ }
+ return result;
+}
+
+void DirectoryServicesWidget::addX509Services(const QList<QUrl> &urls)
+{
+ for (const QUrl &url : urls) {
+ d->model.addX509Service(url);
+ }
+}
+
+QList<QUrl> DirectoryServicesWidget::x509Services() const
+{
+ QList<QUrl> result;
+ for (unsigned int i = 0, end = d->model.numServices(); i != end; ++i) {
+ result.push_back(d->model.service(i));
+ }
+ return result;
+}
+
+void DirectoryServicesWidget::clear()
+{
+ if (!d->model.numServices()) {
+ return;
+ }
+ d->model.clear();
+ d->ui.pgpKeyserver->setText(QString());
+ Q_EMIT changed();
+}
+
+//
+// Model
+//
+
+QVariant Model::headerData(int section, Qt::Orientation orientation, int role) const
+{
+ if (orientation == Qt::Horizontal)
+ if (role == Qt::ToolTipRole) {
+ return toolTipForColumn(section);
+ } else if (role == Qt::DisplayRole)
+ switch (section) {
+ case Host: return i18n("Server Name");
+ case Port: return i18n("Server Port");
+ case BaseDN: return i18n("Base DN");
+ case UserName: return i18n("User Name");
+ case Password: return i18n("Password");
+ default: return QVariant();
+ }
+ else {
+ return QVariant();
+ }
+ else {
+ return QAbstractTableModel::headerData(section, orientation, role);
+ }
+}
+
+QVariant Model::data(const QModelIndex &index, int role) const
+{
+ const unsigned int row = index.row();
+ if (index.isValid() && row < m_items.size())
+ switch (role) {
+ case Qt::ToolTipRole: {
+ const QString tt = toolTipForColumn(index.column());
+ if (!m_x509ReadOnly) {
+ return tt;
+ } else
+ return tt.isEmpty()
+ ? i18n("(read-only)")
+ : i18nc("amended tooltip; %1: original tooltip",
+ "%1 (read-only)", tt);
+ }
+ case Qt::DisplayRole:
+ case Qt::EditRole:
+ switch (index.column()) {
+ case Host:
+ return display_host(m_items[row]);
+ case Port:
+ return display_port(m_items[row]);
+ case BaseDN:
+ if (isLdapRow(row)) {
+ return m_items[row].query();
+ } else {
+ return QVariant();
+ }
+ case UserName:
+ return m_items[row].userName();
+ case Password:
+ return m_items[row].password();
+ default:
+ return QVariant();
+ }
+ }
+ return QVariant();
+}
+
+bool Model::isLdapRow(unsigned int row) const
+{
+ if (row >= m_items.size()) {
+ return false;
+ }
+ return is_ldap_scheme(m_items[row]);
+}
+
+Qt::ItemFlags Model::flags(const QModelIndex &index) const
+{
+ const unsigned int row = index.row();
+ Qt::ItemFlags flags = QAbstractTableModel::flags(index);
+ if (m_x509ReadOnly) {
+ flags &= ~Qt::ItemIsSelectable;
+ }
+ if (index.isValid() && row < m_items.size())
+ switch (index.column()) {
+ case Host:
+ case Port:
+ if (m_x509ReadOnly) {
+ return flags & ~(Qt::ItemIsEditable | Qt::ItemIsEnabled);
+ } else {
+ return flags | Qt::ItemIsEditable;
+ }
+ case BaseDN:
+ if (isLdapRow(row) && !m_x509ReadOnly) {
+ return flags | Qt::ItemIsEditable;
+ } else {
+ return flags & ~(Qt::ItemIsEditable | Qt::ItemIsEnabled);
+ }
+ case UserName:
+ case Password:
+ if (m_x509ReadOnly) {
+ return flags & ~(Qt::ItemIsEditable | Qt::ItemIsEnabled);
+ } else {
+ return flags | Qt::ItemIsEditable;
+ }
+ }
+ return flags;
+}
+
+bool Model::setData(const QModelIndex &idx, const QVariant &value, int role)
+{
+ const unsigned int row = idx.row();
+ if (!idx.isValid() || row >= m_items.size()) {
+ return false;
+ }
+ if (m_x509ReadOnly) {
+ return false;
+ }
+ if (!doSetData(row, idx.column(), value, role)) {
+ return false;
+ }
+ Q_EMIT dataChanged(idx, idx);
+ return true;
+}
+
+bool Model::doSetData(unsigned int row, unsigned int column, const QVariant &value, int role)
+{
+ if (role == Qt::EditRole)
+ switch (column) {
+ case Host:
+ if (display_host(m_items[row]) != m_items[row].host()) {
+ m_items[row].setScheme(display_scheme(m_items[row]));
+ }
+ m_items[row].setHost(value.toString());
+ return true;
+ case Port:
+ if (value.toUInt() == default_port(display_scheme(m_items[row]))) {
+ m_items[row].setPort(-1);
+ } else {
+ m_items[row].setPort(value.toUInt());
+ }
+ return true;
+ case BaseDN:
+ if (value.toString().isEmpty()) {
+ m_items[row].setPath(QString());
+ m_items[row].setQuery(QString());
+ } else {
+ m_items[row].setQuery(value.toString());
+ }
+ return true;
+ case UserName:
+ m_items[row].setUserName(value.toString());
+ return true;
+ case Password:
+ m_items[row].setPassword(value.toString());
+ return true;
+ }
+ return false;
+}
+
+
+// static
+QString Model::toolTipForColumn(int column)
+{
+ switch (column) {
+ case Host: return i18n("Enter the name or IP address of the server "
+ "hosting the directory service.");
+ case Port: return i18n("<b>(Optional, the default is fine in most cases)</b> "
+ "Pick the port number the directory service is "
+ "listening on.");
+ case BaseDN: return i18n("<b>(Only for LDAP)</b> "
+ "Enter the base DN for this LDAP server to "
+ "limit searches to only that subtree of the directory.");
+ case UserName: return i18n("<b>(Optional)</b> "
+ "Enter your user name here, if needed.");
+ case Password: return i18n("<b>(Optional, not recommended)</b> "
+ "Enter your password here, if needed. "
+ "Note that the password will be saved in the clear "
+ "in a config file in your home directory.");
+ default:
+ return QString();
+ }
+}
+
+#include "directoryserviceswidget.moc"
+#include "moc_directoryserviceswidget.cpp"
--- /dev/null
+/*
+ directoryserviceswidget.h
+
+ This file is part of Kleopatra, the KDE keymanager
+ Copyright (c) 2001,2002,2004 Klarälvdalens Datakonsult AB
+
+ Kleopatra is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Kleopatra 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#ifndef DIRECTORYSERVICESWIDGET_H
+#define DIRECTORYSERVICESWIDGET_H
+
+#include "kleo_export.h"
+#include <QUrl>
+#include <QWidget>
+
+namespace Kleo
+{
+
+class KLEO_EXPORT DirectoryServicesWidget : public QWidget
+{
+ Q_OBJECT
+public:
+ explicit DirectoryServicesWidget(QWidget *parent = nullptr, Qt::WindowFlags f = 0);
+ ~DirectoryServicesWidget();
+
+ enum Scheme {
+ NoScheme = 0,
+ HKP = 1,
+ HTTP = 2,
+ FTP = 4,
+ LDAP = 8,
+
+ AllSchemes = HKP | HTTP | FTP | LDAP
+ };
+ Q_DECLARE_FLAGS(Schemes, Scheme)
+
+ enum Protocol {
+ NoProtocol = 0,
+ X509Protocol = 1,
+ OpenPGPProtocol = 2,
+
+ AllProtocols = X509Protocol | OpenPGPProtocol
+ };
+ Q_DECLARE_FLAGS(Protocols, Protocol)
+
+ void setAllowedSchemes(Schemes schemes);
+ Schemes allowedSchemes() const;
+
+ void setAllowedProtocols(Protocols protocols);
+ Protocols allowedProtocols() const;
+
+ void setX509Allowed(bool allowed);
+ void setOpenPGPAllowed(bool allowed);
+
+ void setReadOnlyProtocols(Protocols protocols);
+ Protocols readOnlyProtocols() const;
+
+ void setOpenPGPReadOnly(bool ro);
+ void setX509ReadOnly(bool ro);
+
+ void addOpenPGPServices(const QList<QUrl> &urls);
+ QList<QUrl> openPGPServices() const;
+
+ void addX509Services(const QList<QUrl> &urls);
+ QList<QUrl> x509Services() const;
+
+public Q_SLOTS:
+ void clear();
+
+Q_SIGNALS:
+ void changed();
+
+private:
+ class Private;
+ Private *const d;
+ Q_PRIVATE_SLOT(d, void slotNewX509Clicked())
+ Q_PRIVATE_SLOT(d, void slotDeleteClicked())
+ Q_PRIVATE_SLOT(d, void slotSelectionChanged())
+ Q_PRIVATE_SLOT(d, void slotShowUserAndPasswordToggled(bool))
+};
+
+}
+
+inline void Kleo::DirectoryServicesWidget::setOpenPGPAllowed(bool allowed)
+{
+ if (allowed) {
+ setAllowedProtocols(allowedProtocols() | OpenPGPProtocol);
+ } else {
+ setAllowedProtocols(allowedProtocols() & ~OpenPGPProtocol);
+ }
+}
+
+inline void Kleo::DirectoryServicesWidget::setX509Allowed(bool allowed)
+{
+ if (allowed) {
+ setAllowedProtocols(allowedProtocols() | X509Protocol);
+ } else {
+ setAllowedProtocols(allowedProtocols() & ~X509Protocol);
+ }
+}
+
+inline void Kleo::DirectoryServicesWidget::setOpenPGPReadOnly(bool ro)
+{
+ if (ro) {
+ setReadOnlyProtocols(readOnlyProtocols() | OpenPGPProtocol);
+ } else {
+ setReadOnlyProtocols(readOnlyProtocols() & ~OpenPGPProtocol);
+ }
+}
+
+inline void Kleo::DirectoryServicesWidget::setX509ReadOnly(bool ro)
+{
+ if (ro) {
+ setReadOnlyProtocols(readOnlyProtocols() | X509Protocol);
+ } else {
+ setReadOnlyProtocols(readOnlyProtocols() & ~X509Protocol);
+ }
+}
+
+#endif // DIRECTORYSERVICESWIDGET_H
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>DirectoryServicesWidget</class>
+ <widget class="QWidget" name="DirectoryServicesWidget">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>345</width>
+ <height>363</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Directory Services Configuration</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <widget class="QLabel" name="pgpKSLabel">
+ <property name="text">
+ <string>OpenPGP Keyserver:</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLineEdit" name="pgpKeyserver">
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <widget class="QGroupBox" name="x500LA">
+ <property name="title">
+ <string>X509 Directory services:</string>
+ </property>
+ <layout class="QVBoxLayout" name="grpVbox">
+ <item>
+ <layout class="QHBoxLayout" name="grpVboxhorizontalLayout">
+ <item>
+ <widget class="QTreeView" name="treeView">
+ <property name="whatsThis">
+ <string>This is a list of all directory services that are configured for use with X.509.</string>
+ </property>
+ <property name="rootIsDecorated">
+ <bool>false</bool>
+ </property>
+ <property name="allColumnsShowFocus">
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <layout class="QVBoxLayout" name="vlay">
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <property name="margin">
+ <number>0</number>
+ </property>
+ <item>
+ <widget class="QToolButton" name="newTB">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="toolTip">
+ <string>Click to add a service</string>
+ </property>
+ <property name="whatsThis">
+ <string>Click this button to create a new directory service entry as a clone of the currently selected one (or with default values, if no other is selected). You can then configure details in the table on the left hand.</string>
+ </property>
+ <property name="text">
+ <string>New</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QToolButton" name="deleteTB">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="toolTip">
+ <string>Click to remove the currently selected service</string>
+ </property>
+ <property name="whatsThis">
+ <string>Click this button to remove the currently selected directory service. The change will only take effect once you acknowledge the main configuration dialog.</string>
+ </property>
+ <property name="text">
+ <string>Delete</string>
+ </property>
+ <property name="toolButtonStyle">
+ <enum>Qt::ToolButtonTextBesideIcon</enum>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer>
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeType">
+ <enum>QSizePolicy::Expanding</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>51</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="showUserAndPasswordCB">
+ <property name="whatsThis">
+ <string>Use this option to switch display of username and password information on or off in the above table.</string>
+ </property>
+ <property name="text">
+ <string>Show user and password information</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections>
+ <connection>
+ <sender>newTB</sender>
+ <signal>clicked()</signal>
+ <receiver>DirectoryServicesWidget</receiver>
+ <slot>slotNewX509Clicked()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>535</x>
+ <y>57</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>571</x>
+ <y>55</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>deleteTB</sender>
+ <signal>clicked()</signal>
+ <receiver>DirectoryServicesWidget</receiver>
+ <slot>slotDeleteClicked()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>537</x>
+ <y>95</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>575</x>
+ <y>95</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>showUserAndPasswordCB</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>DirectoryServicesWidget</receiver>
+ <slot>slotShowUserAndPasswordToggled(bool)</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>314</x>
+ <y>341</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>342</x>
+ <y>357</y>
+ </hint>
+ </hints>
+ </connection>
+ </connections>
+ <slots>
+ <slot>slotNewX509Clicked()</slot>
+ <slot>slotDeleteClicked()</slot>
+ <slot>slotShowUserAndPasswordToggled(bool)</slot>
+ </slots>
+</ui>
--- /dev/null
+/* -*- c++ -*-
+ dnattributeorderconfigwidget.cpp
+
+ This file is part of libkleopatra, the KDE keymanagement library
+ Copyright (c) 2004 Klarävdalens Datakonsult AB
+
+ Libkleopatra is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ Libkleopatra 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+ */
+
+#include "dnattributeorderconfigwidget.h"
+
+#include "libkleo/dn.h"
+
+#include <KLocalizedString>
+#include <qdebug.h>
+#include <kconfig.h>
+#include <QIcon>
+
+#include <QToolButton>
+#include <QGridLayout>
+#include <QLabel>
+
+#include <QTreeWidget>
+#include <QHeaderView>
+
+
+class Kleo::DNAttributeOrderConfigWidget::Private
+{
+public:
+ enum { UUp = 0, Up = 1, Left = 2, Right = 3, Down = 4, DDown = 5 };
+
+#ifndef QT_NO_TREEWIDGET
+ QTreeWidget *availableLV;
+ QTreeWidget *currentLV;
+#endif
+ QToolButton *navTB[6];
+
+#ifndef QT_NO_TREEWIDGET
+ QTreeWidgetItem *placeHolderItem;
+#endif
+
+ Kleo::DNAttributeMapper *mapper;
+};
+
+#ifndef QT_NO_TREEWIDGET
+static void prepare(QTreeWidget *lv)
+{
+ lv->setAllColumnsShowFocus(true);
+ lv->header()->setStretchLastSection(true);
+ lv->setHeaderLabels(QStringList() << QString() << i18n("Description"));
+}
+#endif
+
+Kleo::DNAttributeOrderConfigWidget::DNAttributeOrderConfigWidget(DNAttributeMapper *mapper, QWidget *parent, Qt::WindowFlags f)
+ : QWidget(parent, f), d(new Private)
+{
+ Q_ASSERT(mapper);
+ d->mapper = mapper;
+
+ QGridLayout *glay = new QGridLayout(this);
+ glay->setMargin(0);
+ glay->setColumnStretch(0, 1);
+ glay->setColumnStretch(2, 1);
+
+ int row = -1;
+
+ ++row;
+ glay->addWidget(new QLabel(i18n("Available attributes:"), this), row, 0);
+ glay->addWidget(new QLabel(i18n("Current attribute order:"), this), row, 2);
+
+ ++row;
+ glay->setRowStretch(row, 1);
+
+#ifndef QT_NO_TREEWIDGET
+ d->availableLV = new QTreeWidget(this);
+ prepare(d->availableLV);
+ d->availableLV->sortItems(0, Qt::AscendingOrder);
+ glay->addWidget(d->availableLV, row, 0);
+
+ d->currentLV = new QTreeWidget(this);
+ prepare(d->currentLV);
+ glay->addWidget(d->currentLV, row, 2);
+
+ connect(d->availableLV, &QTreeWidget::itemClicked, this, &DNAttributeOrderConfigWidget::slotAvailableSelectionChanged);
+ connect(d->currentLV, &QTreeWidget::itemClicked, this, &DNAttributeOrderConfigWidget::slotCurrentOrderSelectionChanged);
+
+ d->placeHolderItem = new QTreeWidgetItem(d->availableLV);
+ d->placeHolderItem->setText(0, QStringLiteral("_X_"));
+ d->placeHolderItem->setText(1, i18n("All others"));
+#endif
+
+ // the up/down/left/right arrow cross:
+
+ QGridLayout *xlay = new QGridLayout();
+ xlay->setSpacing(0);
+ xlay->setObjectName(QStringLiteral("xlay"));
+ xlay->setAlignment(Qt::AlignCenter);
+
+ static const struct {
+ const char *icon;
+ int row, col;
+ const char *tooltip;
+ void(DNAttributeOrderConfigWidget::*slot)();
+ bool autorepeat;
+ } navButtons[] = {
+ { "go-top", 0, 1, I18N_NOOP("Move to top"), &DNAttributeOrderConfigWidget::slotDoubleUpButtonClicked, false },
+ { "go-up", 1, 1, I18N_NOOP("Move one up"), &DNAttributeOrderConfigWidget::slotUpButtonClicked, true },
+ { "go-previous", 2, 0, I18N_NOOP("Remove from current attribute order"), &DNAttributeOrderConfigWidget::slotLeftButtonClicked, false },
+ { "go-next", 2, 2, I18N_NOOP("Add to current attribute order"), &DNAttributeOrderConfigWidget::slotRightButtonClicked, false },
+ { "go-down", 3, 1, I18N_NOOP("Move one down"), &DNAttributeOrderConfigWidget::slotDownButtonClicked, true },
+ { "go-bottom", 4, 1, I18N_NOOP("Move to bottom"), &DNAttributeOrderConfigWidget::slotDoubleDownButtonClicked, false }
+ };
+
+ for (unsigned int i = 0; i < sizeof navButtons / sizeof * navButtons; ++i) {
+ QToolButton *tb = d->navTB[i] = new QToolButton(this);
+ tb->setIcon(QIcon::fromTheme(QLatin1String(navButtons[i].icon)));
+ tb->setEnabled(false);
+ tb->setToolTip(i18n(navButtons[i].tooltip));
+ xlay->addWidget(tb, navButtons[i].row, navButtons[i].col);
+ tb->setAutoRepeat(navButtons[i].autorepeat);
+ connect(tb, &QToolButton::clicked, this, navButtons[i].slot);
+ }
+
+ glay->addLayout(xlay, row, 1);
+}
+
+Kleo::DNAttributeOrderConfigWidget::~DNAttributeOrderConfigWidget()
+{
+ delete d;
+}
+
+void Kleo::DNAttributeOrderConfigWidget::load()
+{
+#ifndef QT_NO_TREEWIDGET
+ // save the _X_ item:
+ takePlaceHolderItem();
+ // clear the rest:
+ d->availableLV->clear();
+ d->currentLV->clear();
+
+ const QStringList order = d->mapper->attributeOrder();
+
+ // fill the RHS listview:
+ QTreeWidgetItem *last = nullptr;
+ for (QStringList::const_iterator it = order.begin(); it != order.end(); ++it) {
+ const QString attr = (*it).toUpper();
+ if (attr == QLatin1String("_X_")) {
+ takePlaceHolderItem();
+ d->currentLV->insertTopLevelItem(d->currentLV->topLevelItemCount(), d->placeHolderItem);
+ last = d->placeHolderItem;
+ } else {
+ last = new QTreeWidgetItem(d->currentLV, last);
+ last->setText(0, attr);
+ last->setText(1, d->mapper->name2label(attr));
+ }
+ }
+
+ // fill the LHS listview with what's left:
+
+ const QStringList all = Kleo::DNAttributeMapper::instance()->names();
+ const QStringList::const_iterator end(all.end());
+ for (QStringList::const_iterator it = all.begin(); it != end; ++it) {
+ if (!order.contains(*it)) {
+ QTreeWidgetItem *item = new QTreeWidgetItem(d->availableLV);
+ item->setText(0, *it);
+ item->setText(1, d->mapper->name2label(*it));
+ }
+ }
+
+ if (!d->placeHolderItem->treeWidget()) {
+ d->availableLV->addTopLevelItem(d->placeHolderItem);
+ }
+#endif
+}
+
+void Kleo::DNAttributeOrderConfigWidget::takePlaceHolderItem()
+{
+#ifndef QT_NO_TREEWIDGET
+ if (QTreeWidget *lv = d->placeHolderItem->treeWidget()) {
+ lv->takeTopLevelItem(lv->indexOfTopLevelItem(d->placeHolderItem));
+ }
+#endif
+}
+
+void Kleo::DNAttributeOrderConfigWidget::save() const
+{
+#ifndef QT_NO_TREEWIDGET
+ QStringList order;
+ for (QTreeWidgetItemIterator it(d->currentLV); (*it); ++it) {
+ order.push_back((*it)->text(0));
+ }
+
+ d->mapper->setAttributeOrder(order);
+#endif
+}
+
+void Kleo::DNAttributeOrderConfigWidget::defaults()
+{
+ qDebug() << "Sorry, not implemented: Kleo::DNAttributeOrderConfigWidget::defaults()";
+}
+
+void Kleo::DNAttributeOrderConfigWidget::slotAvailableSelectionChanged(QTreeWidgetItem *item)
+{
+ d->navTB[Private::Right]->setEnabled(item);
+}
+
+void Kleo::DNAttributeOrderConfigWidget::slotCurrentOrderSelectionChanged(QTreeWidgetItem *item)
+{
+ enableDisableButtons(item);
+}
+
+void Kleo::DNAttributeOrderConfigWidget::enableDisableButtons(QTreeWidgetItem *item)
+{
+#ifndef QT_NO_TREEWIDGET
+ d->navTB[Private::UUp ]->setEnabled(item && d->currentLV->itemAbove(item));
+ d->navTB[Private::Up ]->setEnabled(item && d->currentLV->itemAbove(item));
+ d->navTB[Private::Left ]->setEnabled(item);
+ d->navTB[Private::Down ]->setEnabled(item && d->currentLV->itemBelow(item));
+ d->navTB[Private::DDown]->setEnabled(item && d->currentLV->itemBelow(item));
+#endif
+}
+
+void Kleo::DNAttributeOrderConfigWidget::slotUpButtonClicked()
+{
+#ifndef QT_NO_TREEWIDGET
+ if (d->currentLV->selectedItems().isEmpty()) {
+ return;
+ }
+ QTreeWidgetItem *item = d->currentLV->selectedItems().first();
+ int itemIndex = d->currentLV->indexOfTopLevelItem(item);
+ if (itemIndex <= 0) {
+ return;
+ }
+ d->currentLV->takeTopLevelItem(itemIndex);
+ d->currentLV->insertTopLevelItem(itemIndex - 1, item);
+ d->currentLV->clearSelection();
+ item->setSelected(true);
+ enableDisableButtons(item);
+ Q_EMIT changed();
+#endif
+}
+
+void Kleo::DNAttributeOrderConfigWidget::slotDoubleUpButtonClicked()
+{
+#ifndef QT_NO_TREEWIDGET
+ if (d->currentLV->selectedItems().isEmpty()) {
+ return;
+ }
+ QTreeWidgetItem *item = d->currentLV->selectedItems().first();
+ int itemIndex = d->currentLV->indexOfTopLevelItem(item);
+ if (itemIndex == 0) {
+ return;
+ }
+ d->currentLV->takeTopLevelItem(itemIndex);
+ d->currentLV->insertTopLevelItem(0, item);
+ d->currentLV->clearSelection();
+ item->setSelected(true);
+ enableDisableButtons(item);
+ Q_EMIT changed();
+#endif
+}
+
+void Kleo::DNAttributeOrderConfigWidget::slotDownButtonClicked()
+{
+#ifndef QT_NO_TREEWIDGET
+ if (d->currentLV->selectedItems().isEmpty()) {
+ return;
+ }
+ QTreeWidgetItem *item = d->currentLV->selectedItems().first();
+ int itemIndex = d->currentLV->indexOfTopLevelItem(item);
+ if (itemIndex + 1 >= d->currentLV->topLevelItemCount()) {
+ return;
+ }
+ d->currentLV->takeTopLevelItem(itemIndex);
+ d->currentLV->insertTopLevelItem(itemIndex + 1, item);
+ d->currentLV->clearSelection();
+ item->setSelected(true);
+ enableDisableButtons(item);
+ Q_EMIT changed();
+#endif
+}
+
+void Kleo::DNAttributeOrderConfigWidget::slotDoubleDownButtonClicked()
+{
+#ifndef QT_NO_TREEWIDGET
+ if (d->currentLV->selectedItems().isEmpty()) {
+ return;
+ }
+ QTreeWidgetItem *item = d->currentLV->selectedItems().first();
+ const int itemIndex = d->currentLV->indexOfTopLevelItem(item);
+ if (itemIndex + 1 >= d->currentLV->topLevelItemCount()) {
+ return;
+ }
+ d->currentLV->takeTopLevelItem(itemIndex);
+ d->currentLV->addTopLevelItem(item);
+ d->currentLV->clearSelection();
+ item->setSelected(true);
+ enableDisableButtons(item);
+ Q_EMIT changed();
+#endif
+}
+
+void Kleo::DNAttributeOrderConfigWidget::slotLeftButtonClicked()
+{
+#ifndef QT_NO_TREEWIDGET
+ if (d->currentLV->selectedItems().isEmpty()) {
+ return;
+ }
+ QTreeWidgetItem *right = d->currentLV->selectedItems().first();
+ QTreeWidgetItem *next = d->currentLV->itemBelow(right);
+ if (!next) {
+ next = d->currentLV->itemAbove(right);
+ }
+ d->currentLV->takeTopLevelItem(d->currentLV->indexOfTopLevelItem(right));
+ d->availableLV->addTopLevelItem(right);
+ d->availableLV->sortItems(0, Qt::AscendingOrder);
+ if (next) {
+ next->setSelected(true);
+ }
+ enableDisableButtons(next);
+ Q_EMIT changed();
+#endif
+}
+
+void Kleo::DNAttributeOrderConfigWidget::slotRightButtonClicked()
+{
+#ifndef QT_NO_TREEWIDGET
+ if (d->availableLV->selectedItems().isEmpty()) {
+ return;
+ }
+ QTreeWidgetItem *left = d->availableLV->selectedItems().first();
+ QTreeWidgetItem *next = d->availableLV->itemBelow(left);
+ if (!next) {
+ next = d->availableLV->itemAbove(left);
+ }
+ d->availableLV->takeTopLevelItem(d->availableLV->indexOfTopLevelItem(left));
+ int newRightIndex = d->currentLV->topLevelItemCount();
+ if (!d->currentLV->selectedItems().isEmpty()) {
+ QTreeWidgetItem *right = d->currentLV->selectedItems().first();
+ newRightIndex = d->currentLV->indexOfTopLevelItem(right);
+ right->setSelected(false);
+ }
+ d->currentLV->insertTopLevelItem(newRightIndex, left);
+ left->setSelected(true);
+ enableDisableButtons(left);
+ d->navTB[Private::Right]->setEnabled(next);
+ if (next) {
+ next->setSelected(true);
+ }
+ Q_EMIT changed();
+#endif
+}
+
+void Kleo::DNAttributeOrderConfigWidget::virtual_hook(int, void *) {}
+
--- /dev/null
+/* -*- c++ -*-
+ dnattributeorderconfigwidget.h
+
+ This file is part of libkleopatra, the KDE keymanagement library
+ Copyright (c) 2004 Klarälvdalens Datakonsult AB
+
+ Libkleopatra is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ Libkleopatra 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+ */
+
+#ifndef __KLEO_UI_DNATTRIBUTEORDERCONFIGWIDGET_H__
+#define __KLEO_UI_DNATTRIBUTEORDERCONFIGWIDGET_H__
+
+#include "kleo_export.h"
+
+#include <QWidget>
+
+namespace Kleo
+{
+class DNAttributeMapper;
+}
+
+class QTreeWidgetItem;
+
+namespace Kleo
+{
+
+class KLEO_EXPORT DNAttributeOrderConfigWidget : public QWidget
+{
+ Q_OBJECT
+public:
+ /*! Use Kleo::DNAttributeMapper::instance()->configWidget( parent, name ) instead. */
+ explicit DNAttributeOrderConfigWidget(DNAttributeMapper *mapper, QWidget *parent = nullptr, Qt::WindowFlags f = 0);
+ ~DNAttributeOrderConfigWidget();
+
+ void load();
+ void save() const;
+ void defaults();
+
+Q_SIGNALS:
+ void changed();
+
+ //
+ // only boring stuff below...
+ //
+
+private Q_SLOTS:
+ void slotAvailableSelectionChanged(QTreeWidgetItem *);
+ void slotCurrentOrderSelectionChanged(QTreeWidgetItem *);
+ void slotDoubleUpButtonClicked();
+ void slotUpButtonClicked();
+ void slotDownButtonClicked();
+ void slotDoubleDownButtonClicked();
+ void slotLeftButtonClicked();
+ void slotRightButtonClicked();
+
+private:
+ void takePlaceHolderItem();
+ void enableDisableButtons(QTreeWidgetItem *);
+
+private:
+ class Private;
+ Private *const d;
+protected:
+ virtual void virtual_hook(int, void *);
+};
+
+}
+
+#endif // __KLEO_UI_DNATTRIBUTEORDERCONFIGWIDGET_H__
--- /dev/null
+/* -*- mode: c++; c-basic-offset:4 -*-
+ ui/filenamerequester.cpp
+
+ This file is part of Kleopatra, the KDE keymanager
+ Copyright (c) 2007 Klarälvdalens Datakonsult AB
+
+ Kleopatra is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Kleopatra 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#include "filenamerequester.h"
+
+#include <KLineEdit>
+
+#include <QHBoxLayout>
+#include <QToolButton>
+#include <QCompleter>
+#include <QDirModel>
+#include <QString>
+#include <QFileDialog>
+
+using namespace Kleo;
+
+class Q_DECL_HIDDEN FileNameRequester::Private
+{
+ friend class ::Kleo::FileNameRequester;
+ FileNameRequester *const q;
+public:
+ explicit Private(FileNameRequester *qq);
+ ~Private();
+
+private:
+ void slotButtonClicked();
+
+private:
+#ifndef QT_NO_DIRMODEL
+ QDirModel dirmodel;
+ QCompleter completer;
+#else
+ QDir::Filters filter;
+#endif
+
+ KLineEdit lineedit;
+ QToolButton button;
+ QHBoxLayout hlay;
+
+ QString nameFilter;
+ bool existingOnly;
+};
+
+FileNameRequester::Private::Private(FileNameRequester *qq)
+ : q(qq),
+#ifndef QT_NO_DIRMODEL
+ dirmodel(),
+ completer(&dirmodel),
+#else
+ filter(),
+#endif
+ lineedit(q),
+ button(q),
+ hlay(q),
+ nameFilter(),
+ existingOnly(true)
+{
+#ifndef QT_NO_DIRMODEL
+ dirmodel.setObjectName(QStringLiteral("dirmodel"));
+ completer.setObjectName(QStringLiteral("completer"));
+#endif
+ lineedit.setObjectName(QStringLiteral("lineedit"));
+ button.setObjectName(QStringLiteral("button"));
+ hlay.setObjectName(QStringLiteral("hlay"));
+
+ button.setIcon(QIcon::fromTheme(QStringLiteral("document-open")));
+#ifndef QT_NO_DIRMODEL
+ lineedit.setCompleter(&completer);
+#endif
+ lineedit.setClearButtonShown(true);
+ hlay.setMargin(0);
+ hlay.addWidget(&lineedit);
+ hlay.addWidget(&button);
+
+ connect(&button, SIGNAL(clicked()), q, SLOT(slotButtonClicked()));
+ connect(&lineedit, &KLineEdit::textChanged, q, &FileNameRequester::fileNameChanged);
+}
+
+FileNameRequester::Private::~Private() {}
+
+FileNameRequester::FileNameRequester(QWidget *p)
+ : QWidget(p), d(new Private(this))
+{
+
+}
+
+FileNameRequester::FileNameRequester(QDir::Filters f, QWidget *p)
+ : QWidget(p), d(new Private(this))
+{
+#ifndef QT_NO_DIRMODEL
+ d->dirmodel.setFilter(f);
+#else
+ d->filter = f;
+#endif
+}
+
+FileNameRequester::~FileNameRequester()
+{
+ delete d;
+}
+
+void FileNameRequester::setFileName(const QString &file)
+{
+ d->lineedit.setText(file);
+}
+
+QString FileNameRequester::fileName() const
+{
+ return d->lineedit.text();
+}
+
+void FileNameRequester::setExistingOnly(bool on)
+{
+ d->existingOnly = on;
+}
+
+bool FileNameRequester::existingOnly() const
+{
+ return d->existingOnly;
+}
+
+void FileNameRequester::setFilter(QDir::Filters f)
+{
+#ifndef QT_NO_DIRMODEL
+ d->dirmodel.setFilter(f);
+#else
+ d->filter = f;
+#endif
+}
+
+QDir::Filters FileNameRequester::filter() const
+{
+#ifndef QT_NO_DIRMODEL
+ return d->dirmodel.filter();
+#else
+ return d->filter;
+#endif
+}
+
+void FileNameRequester::setNameFilter(const QString &nameFilter)
+{
+ d->nameFilter = nameFilter;
+}
+
+QString FileNameRequester::nameFilter() const
+{
+ return d->nameFilter;
+}
+
+void FileNameRequester::Private::slotButtonClicked()
+{
+ const QString fileName = q->requestFileName();
+ if (!fileName.isEmpty()) {
+ q->setFileName(fileName);
+ }
+}
+
+QString FileNameRequester::requestFileName()
+{
+#ifndef QT_NO_FILEDIALOG
+ const QDir::Filters filters = filter();
+ if ((filters & QDir::Dirs) && !(filters & QDir::Files)) {
+ return QFileDialog::getExistingDirectory(this);
+ } else if (d->existingOnly) {
+ return QFileDialog::getOpenFileName(this, QString(), QString(), d->nameFilter);
+ } else {
+ return QFileDialog::getSaveFileName(this, QString(), QString(), d->nameFilter);
+ }
+#else
+ return QString();
+#endif
+}
+
+#include "moc_filenamerequester.cpp"
--- /dev/null
+/* -*- mode: c++; c-basic-offset:4 -*-
+ ui/filenamerequester.h
+
+ This file is part of Kleopatra, the KDE keymanager
+ Copyright (c) 2007 Klarälvdalens Datakonsult AB
+
+ Kleopatra is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Kleopatra 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#ifndef __KLEOPATRA_UI_FILENAMEREQUESTER_H__
+#define __KLEOPATRA_UI_FILENAMEREQUESTER_H__
+
+#include "kleo_export.h"
+
+#include <QWidget>
+
+#include <QDir>
+
+namespace Kleo
+{
+
+class KLEO_EXPORT FileNameRequester : public QWidget
+{
+ Q_OBJECT
+ Q_PROPERTY(QString fileName READ fileName WRITE setFileName)
+ Q_PROPERTY(bool existingOnly READ existingOnly WRITE setExistingOnly)
+public:
+ explicit FileNameRequester(QWidget *parent = nullptr);
+ explicit FileNameRequester(QDir::Filters filter, QWidget *parent = nullptr);
+ ~FileNameRequester();
+
+ void setFileName(const QString &name);
+ QString fileName() const;
+
+ void setExistingOnly(bool on);
+ bool existingOnly() const;
+
+ void setFilter(QDir::Filters f);
+ QDir::Filters filter() const;
+
+ void setNameFilter(const QString &nameFilter);
+ QString nameFilter() const;
+
+Q_SIGNALS:
+ void fileNameChanged(const QString &filename);
+
+private:
+ virtual QString requestFileName();
+
+private:
+ class Private;
+ Private *d;
+ Q_PRIVATE_SLOT(d, void slotButtonClicked())
+};
+
+}
+
+#endif /* __KLEOPATRA_UI_FILENAMEREQUESTER_H__ */
--- /dev/null
+/* -*- Mode: C++ -*-
+ KD Tools - a set of useful widgets for Qt
+*/
+
+/****************************************************************************
+** Copyright (C) 2005 Klar�vdalens Datakonsult AB. All rights reserved.
+**
+** This file is part of the KD Tools library.
+**
+** This file may be distributed and/or modified under the terms of the
+** GNU General Public License version 2 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file.
+**
+** Licensees holding valid commercial KD Tools licenses may use this file in
+** accordance with the KD Tools Commercial License Agreement provided with
+** the Software.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+** See http://www.klaralvdalens-datakonsult.se/?page=products for
+** information about KD Tools Commercial License Agreements.
+**
+** Contact info@klaralvdalens-datakonsult.se if any conditions of this
+** licensing are not clear to you.
+**
+** In addition, as a special exception, the copyright holders give
+** permission to link the code of this program with any edition of the
+** Qt library by Trolltech AS, Norway (or with modified versions of Qt
+** that use the same license as Qt), and distribute linked
+** combinations including the two. You must obey the GNU General
+** Public License in all respects for all of the code used other than
+** Qt. If you modify this file, you may extend this exception to your
+** version of the file, but you are not obligated to do so. If you do
+** not wish to do so, delete this exception statement from your
+** version.
+**
+**********************************************************************/
+
+#include "kdhorizontalline.h"
+
+#include <QStyle>
+#include <QPainter>
+#ifdef QT_ACCESSIBILITY_SUPPORT
+#include <QAccessible>
+#endif
+#include <QFontMetrics>
+#include <QApplication>
+#include <QPaintEvent>
+
+KDHorizontalLine::KDHorizontalLine(QWidget *parent, const char *name, Qt::WindowFlags f)
+ : QFrame(parent, f),
+ mAlign(Qt::AlignLeft),
+ mLenVisible(0)
+{
+ setObjectName(QLatin1String(name));
+ QFrame::setFrameStyle(HLine | Sunken);
+}
+
+KDHorizontalLine::KDHorizontalLine(const QString &title, QWidget *parent, const char *name, Qt::WindowFlags f)
+ : QFrame(parent, f),
+ mAlign(Qt::AlignLeft),
+ mLenVisible(0)
+{
+ setObjectName(QLatin1String(name));
+ QFrame::setFrameStyle(HLine | Sunken);
+ setTitle(title);
+}
+
+KDHorizontalLine::~KDHorizontalLine() {}
+
+void KDHorizontalLine::setFrameStyle(int style)
+{
+ QFrame::setFrameStyle((style & ~Shape_Mask) | HLine); // force HLine
+}
+
+void KDHorizontalLine::setTitle(const QString &title)
+{
+ if (mTitle == title) {
+ return;
+ }
+ mTitle = title;
+ calculateFrame();
+ update();
+ updateGeometry();
+#ifdef QT_ACCESSIBILITY_SUPPORT
+ QAccessible::updateAccessibility(this, 0, QAccessible::NameChanged);
+#endif
+}
+
+void KDHorizontalLine::calculateFrame()
+{
+ mLenVisible = mTitle.length();
+#if 0
+ if (mLenVisible) {
+ const QFontMetrics fm = fontMetrics();
+ while (mLenVisible) {
+ const int tw = fm.width(mTitle, mLenVisible) + 4 * fm.width(QChar(' '));
+ if (tw < width()) {
+ break;
+ }
+ mLenVisible--;
+ }
+ qDebug("mLenVisible = %d (of %d)", mLenVisible, mTitle.length());
+ if (mLenVisible) { // but do we also have a visible label?
+ QRect r = rect();
+ const int va = style().styleHint(QStyle::SH_GroupBox_TextLabelVerticalAlignment, this);
+ if (va & Qt::AlignVCenter) {
+ r.setTop(fm.height() / 2); // frame rect should be
+ } else if (va & Qt::AlignTop) {
+ r.setTop(fm.ascent());
+ }
+ setFrameRect(r); // smaller than client rect
+ return;
+ }
+ }
+ // no visible label
+ setFrameRect(QRect(0, 0, 0, 0)); // then use client rect
+#endif
+}
+
+QSizePolicy KDHorizontalLine::sizePolicy() const
+{
+ return QSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed);
+}
+
+QSize KDHorizontalLine::sizeHint() const
+{
+ return minimumSizeHint();
+}
+
+QSize KDHorizontalLine::minimumSizeHint() const
+{
+ const int w = fontMetrics().width(mTitle, mLenVisible) +
+ fontMetrics().width(QLatin1Char(' '));
+ const int h = fontMetrics().height();
+ return QSize(qMax(w, indentHint()), h).expandedTo(qApp->globalStrut());
+}
+
+void KDHorizontalLine::paintEvent(QPaintEvent *e)
+{
+ QPainter paint(this);
+
+ if (mLenVisible) { // draw title
+ const QFontMetrics &fm = paint.fontMetrics();
+ const int h = fm.height();
+ const int tw = fm.width(mTitle, mLenVisible) + fm.width(QLatin1Char(' '));
+ int x;
+ if (mAlign & Qt::AlignHCenter) { // center alignment
+ x = frameRect().width() / 2 - tw / 2;
+ } else if (mAlign & Qt::AlignRight) { // right alignment
+ x = frameRect().width() - tw;
+ } else if (mAlign & Qt::AlignLeft) { // left alignment
+ x = 0;
+ } else { // auto align
+ if (QApplication::isRightToLeft()) {
+ x = frameRect().width() - tw;
+ } else {
+ x = 0;
+ }
+ }
+ QRect r(x, 0, tw, h);
+ int va = style()->styleHint(QStyle::SH_GroupBox_TextLabelVerticalAlignment, nullptr, this);
+ if (va & Qt::AlignTop) {
+ r.translate(0, fm.descent());
+ }
+ const QColor pen((QRgb) style()->styleHint(QStyle::SH_GroupBox_TextLabelColor, nullptr, this));
+ if (!style()->styleHint(QStyle::SH_UnderlineShortcut, nullptr, this)) {
+ va |= Qt::TextHideMnemonic;
+ }
+ style()->drawItemText(&paint, r, Qt::TextShowMnemonic | Qt::AlignHCenter | va, palette(),
+ isEnabled(), mTitle);
+ paint.setClipRegion(e->region().subtracted(r)); // clip everything but title
+ }
+ drawFrame(&paint);
+}
+
+// static
+int KDHorizontalLine::indentHint()
+{
+ return 30;
+}
+
--- /dev/null
+/* -*- Mode: C++ -*-
+ KD Tools - a set of useful widgets for Qt
+*/
+
+/****************************************************************************
+** Copyright (C) 2005 Klarälvdalens Datakonsult AB. All rights reserved.
+**
+** This file is part of the KD Tools library.
+**
+** This file may be distributed and/or modified under the terms of the
+** GNU General Public License version 2 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file.
+**
+** Licensees holding valid commercial KD Tools licenses may use this file in
+** accordance with the KD Tools Commercial License Agreement provided with
+** the Software.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+** See http://www.klaralvdalens-datakonsult.se/?page=products for
+** information about KD Tools Commercial License Agreements.
+**
+** Contact info@klaralvdalens-datakonsult.se if any conditions of this
+** licensing are not clear to you.
+**
+** In addition, as a special exception, the copyright holders give
+** permission to link the code of this program with any edition of the
+** Qt library by Trolltech AS, Norway (or with modified versions of Qt
+** that use the same license as Qt), and distribute linked
+** combinations including the two. You must obey the GNU General
+** Public License in all respects for all of the code used other than
+** Qt. If you modify this file, you may extend this exception to your
+** version of the file, but you are not obligated to do so. If you do
+** not wish to do so, delete this exception statement from your
+** version.
+**
+**********************************************************************/
+
+#ifndef __KDTOOLS__KDHORIZONTALLINE_H__
+#define __KDTOOLS__KDHORIZONTALLINE_H__
+
+#include "kleo_export.h"
+
+#include <QFrame>
+
+class KLEO_EXPORT KDHorizontalLine : public QFrame
+{
+ Q_OBJECT
+ Q_PROPERTY(QString title READ title WRITE setTitle)
+public:
+ explicit KDHorizontalLine(QWidget *parent = nullptr, const char *name = nullptr, Qt::WindowFlags f = 0);
+ explicit KDHorizontalLine(const QString &title, QWidget *parent = nullptr, const char *name = nullptr, Qt::WindowFlags f = 0);
+ ~KDHorizontalLine();
+
+ QString title() const
+ {
+ return mTitle;
+ }
+
+ /*! \reimp to hard-code the frame shape */
+ void setFrameStyle(int style);
+
+ QSize sizeHint() const override;
+ QSize minimumSizeHint() const override;
+ QSizePolicy sizePolicy() const;
+
+ static int indentHint();
+
+public Q_SLOTS:
+ virtual void setTitle(const QString &title);
+
+protected:
+ void paintEvent(QPaintEvent *) override;
+
+private:
+ void calculateFrame();
+
+private:
+ QString mTitle;
+ Qt::Alignment mAlign;
+ int mLenVisible;
+};
+
+#endif /* __KDTOOLS__KDHORIZONTALLINE_H__ */
+
--- /dev/null
+/* -*- c++ -*-
+ keyapprovaldialog.h
+
+ This file is part of libkleopatra, the KDE keymanagement library
+ Copyright (c) 2004 Klarälvdalens Datakonsult AB
+
+ Based on kpgpui.h
+ Copyright (C) 2001,2002 the KPGP authors
+ See file libkdenetwork/AUTHORS.kpgp for details
+
+ Libkleopatra is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ Libkleopatra 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#include "keyapprovaldialog.h"
+
+#include "keyrequester.h"
+
+#include <qpushbutton.h>
+#include <KLocalizedString>
+#include <kseparator.h>
+
+#include <QStringList>
+#include <QLabel>
+#include <QComboBox>
+#include <QScrollArea>
+#include <QPushButton>
+#include <QVBoxLayout>
+#include <QGridLayout>
+
+#include <gpgme++/key.h>
+#include <qgpgme/protocol.h>
+
+#include <QApplication>
+#include <QDesktopWidget>
+#include <QDialogButtonBox>
+
+static Kleo::EncryptionPreference cb2pref(int i)
+{
+ switch (i) {
+ default:
+ case 0: return Kleo::UnknownPreference;
+ case 1: return Kleo::NeverEncrypt;
+ case 2: return Kleo::AlwaysEncrypt;
+ case 3: return Kleo::AlwaysEncryptIfPossible;
+ case 4: return Kleo::AlwaysAskForEncryption;
+ case 5: return Kleo::AskWheneverPossible;
+ }
+}
+
+static int pref2cb(Kleo::EncryptionPreference p)
+{
+ switch (p) {
+ default: return 0;
+ case Kleo::NeverEncrypt: return 1;
+ case Kleo::AlwaysEncrypt: return 2;
+ case Kleo::AlwaysEncryptIfPossible: return 3;
+ case Kleo::AlwaysAskForEncryption: return 4;
+ case Kleo::AskWheneverPossible: return 5;
+ }
+}
+
+static QStringList preferencesStrings()
+{
+ return QStringList() << xi18n("<placeholder>none</placeholder>")
+ << i18n("Never Encrypt with This Key")
+ << i18n("Always Encrypt with This Key")
+ << i18n("Encrypt Whenever Encryption is Possible")
+ << i18n("Always Ask")
+ << i18n("Ask Whenever Encryption is Possible");
+}
+
+class Q_DECL_HIDDEN Kleo::KeyApprovalDialog::Private
+{
+public:
+ Private() : selfRequester(nullptr), prefsChanged(false) {}
+
+ Kleo::KeyRequester *selfRequester;
+ QStringList addresses;
+ std::vector<Kleo::KeyRequester *> requesters;
+ std::vector<QComboBox *> preferences;
+ bool prefsChanged;
+};
+
+Kleo::KeyApprovalDialog::KeyApprovalDialog(const std::vector<Item> &recipients,
+ const std::vector<GpgME::Key> &sender,
+ QWidget *parent)
+ : QDialog(parent),
+ d(new Private())
+{
+ setWindowTitle(i18n("Encryption Key Approval"));
+ QVBoxLayout *mainLayout = new QVBoxLayout(this);
+ QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, this);
+ QPushButton *okButton = buttonBox->button(QDialogButtonBox::Ok);
+ okButton->setShortcut(Qt::CTRL | Qt::Key_Return);
+ connect(buttonBox, &QDialogButtonBox::accepted, this, &KeyApprovalDialog::accept);
+ connect(buttonBox, &QDialogButtonBox::rejected, this, &KeyApprovalDialog::reject);
+ okButton->setDefault(true);
+ Q_ASSERT(!recipients.empty());
+
+ QFrame *page = new QFrame(this);
+ mainLayout->addWidget(page);
+ mainLayout->addWidget(buttonBox);
+ QVBoxLayout *vlay = new QVBoxLayout(page);
+ vlay->setMargin(0);
+
+ vlay->addWidget(new QLabel(i18n("The following keys will be used for encryption:"), page));
+
+ QScrollArea *sv = new QScrollArea(page);
+ sv->setWidgetResizable(true);
+ vlay->addWidget(sv);
+
+ QWidget *view = new QWidget(sv->viewport());
+
+ QGridLayout *glay = new QGridLayout(view);
+ glay->setColumnStretch(1, 1);
+ sv->setWidget(view);
+
+ int row = -1;
+
+ if (!sender.empty()) {
+ ++row;
+ glay->addWidget(new QLabel(i18n("Your keys:"), view), row, 0);
+ d->selfRequester = new EncryptionKeyRequester(true, EncryptionKeyRequester::AllProtocols, view);
+ d->selfRequester->setKeys(sender);
+ glay->addWidget(d->selfRequester, row, 1);
+ ++row;
+ glay->addWidget(new KSeparator(Qt::Horizontal, view), row, 0, 1, 2);
+ }
+
+ const QStringList prefs = preferencesStrings();
+
+ for (std::vector<Item>::const_iterator it = recipients.begin(); it != recipients.end(); ++it) {
+ ++row;
+ glay->addWidget(new QLabel(i18n("Recipient:"), view), row, 0);
+ glay->addWidget(new QLabel(it->address, view), row, 1);
+ d->addresses.push_back(it->address);
+
+ ++row;
+ glay->addWidget(new QLabel(i18n("Encryption keys:"), view), row, 0);
+ KeyRequester *req = new EncryptionKeyRequester(true, EncryptionKeyRequester::AllProtocols, view);
+ req->setKeys(it->keys);
+ glay->addWidget(req, row, 1);
+ d->requesters.push_back(req);
+
+ ++row;
+ glay->addWidget(new QLabel(i18n("Encryption preference:"), view), row, 0);
+ QComboBox *cb = new QComboBox(view);
+ cb->setEditable(false);
+ cb->addItems(prefs);
+ glay->addWidget(cb, row, 1);
+ cb->setCurrentIndex(pref2cb(it->pref));
+ connect(cb, static_cast<void (QComboBox::*)(int)>(&QComboBox::activated), this, &KeyApprovalDialog::slotPrefsChanged);
+ d->preferences.push_back(cb);
+ }
+
+ QSize size = sizeHint();
+
+ // don't make the dialog too large
+ const QRect desk = QApplication::desktop()->screenGeometry(this);
+ resize(QSize(qMin(size.width(), 3 * desk.width() / 4),
+ qMin(size.height(), 7 * desk.height() / 8)));
+}
+
+Kleo::KeyApprovalDialog::~KeyApprovalDialog()
+{
+ delete d;
+}
+
+std::vector<GpgME::Key> Kleo::KeyApprovalDialog::senderKeys() const
+{
+ return d->selfRequester ? d->selfRequester->keys() : std::vector<GpgME::Key>();
+}
+
+std::vector<Kleo::KeyApprovalDialog::Item> Kleo::KeyApprovalDialog::items() const
+{
+ Q_ASSERT(d->requesters.size() == static_cast<unsigned int>(d->addresses.size()));
+ Q_ASSERT(d->requesters.size() == d->preferences.size());
+
+ std::vector<Item> result;
+ result.reserve(d->requesters.size());
+ QStringList::const_iterator ait = d->addresses.constBegin();
+ std::vector<KeyRequester *>::iterator rit = d->requesters.begin();
+ std::vector<QComboBox *>::iterator cit = d->preferences.begin();
+ while (ait != d->addresses.constEnd()) {
+ result.push_back(Item(*ait++, (*rit++)->keys(), cb2pref((*cit++)->currentIndex())));
+ }
+ return result;
+}
+
+bool Kleo::KeyApprovalDialog::preferencesChanged() const
+{
+ return d->prefsChanged;
+}
+
+void Kleo::KeyApprovalDialog::slotPrefsChanged()
+{
+ d->prefsChanged = true;
+}
+
--- /dev/null
+/* -*- c++ -*-
+ keyapprovaldialog.h
+
+ This file is part of libkleopatra, the KDE keymanagement library
+ Copyright (c) 2004 Klarälvdalens Datakonsult AB
+
+ Based on kpgpui.h
+ Copyright (C) 2001,2002 the KPGP authors
+ See file libkdenetwork/AUTHORS.kpgp for details
+
+ Libkleopatra is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ Libkleopatra 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#ifndef __KLEO_KEYAPPROVALDIALOG_H__
+#define __KLEO_KEYAPPROVALDIALOG_H__
+
+#include "kleo_export.h"
+#include "libkleo/enum.h"
+
+#include <QDialog>
+
+#include <gpgme++/key.h>
+
+#include <vector>
+
+namespace GpgME
+{
+class Key;
+}
+
+namespace Kleo
+{
+
+class KLEO_EXPORT KeyApprovalDialog : public QDialog
+{
+ Q_OBJECT
+public:
+ struct Item {
+ Item() : pref(UnknownPreference) {}
+ Item(const QString &a, const std::vector<GpgME::Key> &k,
+ EncryptionPreference p = UnknownPreference)
+ : address(a), keys(k), pref(p) {}
+ QString address;
+ std::vector<GpgME::Key> keys;
+ EncryptionPreference pref;
+ };
+
+ KeyApprovalDialog(const std::vector<Item> &recipients,
+ const std::vector<GpgME::Key> &sender,
+ QWidget *parent = nullptr);
+ ~KeyApprovalDialog();
+
+ std::vector<Item> items() const;
+ std::vector<GpgME::Key> senderKeys() const;
+
+ bool preferencesChanged() const;
+
+private Q_SLOTS:
+ void slotPrefsChanged();
+
+private:
+ class Private;
+ Private *const d;
+};
+
+} // namespace Kleo
+
+#endif // __KLEO_KEYAPPROVALDIALOG_H__
--- /dev/null
+/*
+ keylistview.cpp
+
+ This file is part of libkleopatra, the KDE keymanagement library
+ Copyright (c) 2004 Klarälvdalens Datakonsult AB
+
+ Libkleopatra is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ Libkleopatra 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#include "keylistview.h"
+
+#include "kleo_ui_debug.h"
+
+#include <QFontMetrics>
+#include <QToolTip>
+#include <QPoint>
+#include <QFont>
+#include <QColor>
+#include <QTimer>
+#include <gpgme++/key.h>
+
+#include <vector>
+#include <map>
+
+#include <QKeyEvent>
+
+static const int updateDelayMilliSecs = 500;
+
+class Q_DECL_HIDDEN Kleo::KeyListView::Private
+{
+public:
+ Private() : updateTimer(nullptr) {}
+
+ std::vector<GpgME::Key> keyBuffer;
+ QTimer *updateTimer;
+ std::map<QByteArray, KeyListViewItem *> itemMap;
+};
+
+// a list of signals where we want to replace QListViewItem with
+// Kleo:KeyListViewItem:
+static const struct {
+ const char *source;
+ const char *target;
+} signalReplacements[] = {
+ {
+ SIGNAL(itemDoubleClicked(QTreeWidgetItem*,int)),
+ SLOT(slotEmitDoubleClicked(QTreeWidgetItem*,int))
+ },
+ {
+ SIGNAL(itemSelectionChanged()),
+ SLOT(slotEmitSelectionChanged())
+ },
+ {
+ SIGNAL(customContextMenuRequested(QPoint)),
+ SLOT(slotEmitContextMenu(QPoint))
+ },
+};
+static const int numSignalReplacements = sizeof signalReplacements / sizeof * signalReplacements;
+
+Kleo::KeyListView::KeyListView(const ColumnStrategy *columnStrategy, const DisplayStrategy *displayStrategy, QWidget *parent, Qt::WindowFlags f)
+ : QTreeWidget(parent),
+ mColumnStrategy(columnStrategy),
+ mDisplayStrategy(displayStrategy),
+ mHierarchical(false), d(new Private())
+{
+ setWindowFlags(f);
+ setContextMenuPolicy(Qt::CustomContextMenu);
+
+ d->updateTimer = new QTimer(this);
+ d->updateTimer->setSingleShot(true);
+ connect(d->updateTimer, &QTimer::timeout, this, &KeyListView::slotUpdateTimeout);
+ if (!columnStrategy) {
+ qCWarning(KLEO_UI_LOG) << "Kleo::KeyListView: need a column strategy to work with!";
+ return;
+ }
+
+ const QFontMetrics fm = fontMetrics();
+
+ for (int col = 0; !columnStrategy->title(col).isEmpty(); ++col) {
+ headerItem()->setText(col, columnStrategy->title(col));
+ header()->resizeSection(col, columnStrategy->width(col, fm));
+ header()->setSectionResizeMode(col, columnStrategy->resizeMode(col));
+ }
+
+ setAllColumnsShowFocus(true);
+
+ for (int i = 0; i < numSignalReplacements; ++i) {
+ connect(this, signalReplacements[i].source, signalReplacements[i].target);
+ }
+
+ this->setToolTip(QString());
+ viewport()->setToolTip(QString()); // make double sure :)
+}
+
+Kleo::KeyListView::~KeyListView()
+{
+ d->updateTimer->stop();
+ // need to clear here, since in ~QListView, our children won't have
+ // a valid listView() pointing to us anymore, and their dtors try to
+ // unregister from us.
+ clear();
+ Q_ASSERT(d->itemMap.size() == 0);
+ // need to delete the tooltip ourselves, as ~QToolTip isn't virtual :o
+ delete d;
+ delete mColumnStrategy; mColumnStrategy = nullptr;
+ delete mDisplayStrategy; mDisplayStrategy = nullptr;
+}
+
+void Kleo::KeyListView::takeItem(QTreeWidgetItem *qlvi)
+{
+ //qCDebug(KLEO_UI_LOG) <<"Kleo::KeyListView::takeItem(" << qlvi <<" )";
+ if (KeyListViewItem *item = lvi_cast<KeyListViewItem>(qlvi)) {
+ deregisterItem(item);
+ }
+ takeTopLevelItem(indexOfTopLevelItem(qlvi));
+}
+
+void Kleo::KeyListView::setHierarchical(bool hier)
+{
+ if (hier == mHierarchical) {
+ return;
+ }
+ mHierarchical = hier;
+ if (hier) {
+ gatherScattered();
+ } else {
+ scatterGathered(firstChild());
+ }
+}
+
+void Kleo::KeyListView::slotAddKey(const GpgME::Key &key)
+{
+ if (key.isNull()) {
+ return;
+ }
+
+ d->keyBuffer.push_back(key);
+ if (!d->updateTimer->isActive()) {
+ d->updateTimer->start(updateDelayMilliSecs);
+ }
+}
+
+void Kleo::KeyListView::slotUpdateTimeout()
+{
+ if (d->keyBuffer.empty()) {
+ return;
+ }
+
+ const bool wasUpdatesEnabled = viewport()->updatesEnabled();
+ if (wasUpdatesEnabled) {
+ viewport()->setUpdatesEnabled(false);
+ }
+ qCDebug(KLEO_UI_LOG) << "Kleo::KeyListView::slotUpdateTimeout(): processing"
+ << d->keyBuffer.size() << "items en block";
+ if (hierarchical()) {
+ for (std::vector<GpgME::Key>::const_iterator it = d->keyBuffer.begin(); it != d->keyBuffer.end(); ++it) {
+ doHierarchicalInsert(*it);
+ }
+ gatherScattered();
+ } else {
+ for (std::vector<GpgME::Key>::const_iterator it = d->keyBuffer.begin(); it != d->keyBuffer.end(); ++it) {
+ (void)new KeyListViewItem(this, *it);
+ }
+ }
+ if (wasUpdatesEnabled) {
+ viewport()->setUpdatesEnabled(true);
+ }
+ d->keyBuffer.clear();
+}
+
+void Kleo::KeyListView::clear()
+{
+ d->updateTimer->stop();
+ d->keyBuffer.clear();
+ while (QTreeWidgetItem *item = topLevelItem(0)) {
+ delete item;
+ }
+ QTreeWidget::clear();
+}
+
+void Kleo::KeyListView::registerItem(KeyListViewItem *item)
+{
+ //qCDebug(KLEO_UI_LOG) <<"registerItem(" << item <<" )";
+ if (!item) {
+ return;
+ }
+ const QByteArray fpr = item->key().primaryFingerprint();
+ if (!fpr.isEmpty()) {
+ d->itemMap.insert(std::make_pair(fpr, item));
+ }
+}
+
+void Kleo::KeyListView::deregisterItem(const KeyListViewItem *item)
+{
+ //qCDebug(KLEO_UI_LOG) <<"deregisterItem( KeyLVI:" << item <<" )";
+ if (!item) {
+ return;
+ }
+ std::map<QByteArray, KeyListViewItem *>::iterator it
+ = d->itemMap.find(item->key().primaryFingerprint());
+ if (it == d->itemMap.end()) {
+ return;
+ }
+ // This Q_ASSERT triggers, though it shouldn't. Print some more
+ // information when it happens.
+ //Q_ASSERT( it->second == item );
+ if (it->second != item) {
+ qCWarning(KLEO_UI_LOG) << "deregisterItem:"
+ << "item " << item->key().primaryFingerprint()
+ << "it->second" << (it->second ? it->second->key().primaryFingerprint() : "is null");
+ return;
+ }
+ d->itemMap.erase(it);
+}
+
+void Kleo::KeyListView::doHierarchicalInsert(const GpgME::Key &key)
+{
+ const QByteArray fpr = key.primaryFingerprint();
+ if (fpr.isEmpty()) {
+ return;
+ }
+ KeyListViewItem *item = nullptr;
+ if (!key.isRoot())
+ if (KeyListViewItem *parent = itemByFingerprint(key.chainID())) {
+ item = new KeyListViewItem(parent, key);
+ parent->setExpanded(true);
+ }
+ if (!item) {
+ item = new KeyListViewItem(this, key); // top-level (for now)
+ }
+
+ d->itemMap.insert(std::make_pair(fpr, item));
+}
+
+void Kleo::KeyListView::gatherScattered()
+{
+ KeyListViewItem *item = firstChild();
+ while (item) {
+ KeyListViewItem *cur = item;
+ item = item->nextSibling();
+ if (cur->key().isRoot()) {
+ continue;
+ }
+ if (KeyListViewItem *parent = itemByFingerprint(cur->key().chainID())) {
+ // found a new parent...
+ // ### todo: optimize by suppressing removing/adding the item to the itemMap...
+ takeTopLevelItem(indexOfTopLevelItem(cur));
+ parent->addChild(cur);
+ parent->setExpanded(true);
+ }
+ }
+}
+
+void Kleo::KeyListView::scatterGathered(KeyListViewItem *start)
+{
+ KeyListViewItem *item = start;
+ while (item) {
+ KeyListViewItem *cur = item;
+ item = item->nextSibling();
+
+ scatterGathered(Kleo::lvi_cast<Kleo::KeyListViewItem>(cur->child(0)));
+ Q_ASSERT(cur->childCount() == 0);
+
+ // ### todo: optimize by suppressing removing/adding the item to the itemMap...
+ if (cur->parent()) {
+ static_cast<Kleo::KeyListViewItem *>(cur->parent())->takeItem(cur);
+ } else {
+ takeItem(cur);
+ }
+ addTopLevelItem(cur);
+ }
+}
+
+Kleo::KeyListViewItem *Kleo::KeyListView::itemByFingerprint(const QByteArray &s) const
+{
+ if (s.isEmpty()) {
+ return nullptr;
+ }
+ const std::map<QByteArray, KeyListViewItem *>::const_iterator it = d->itemMap.find(s);
+ if (it == d->itemMap.end()) {
+ return nullptr;
+ }
+ return it->second;
+}
+
+void Kleo::KeyListView::slotRefreshKey(const GpgME::Key &key)
+{
+ const char *fpr = key.primaryFingerprint();
+ if (!fpr) {
+ return;
+ }
+ if (KeyListViewItem *item = itemByFingerprint(fpr)) {
+ item->setKey(key);
+ } else
+ // none found -> add it
+ {
+ slotAddKey(key);
+ }
+}
+
+// slots for the emission of covariant Q_SIGNALS:
+
+void Kleo::KeyListView::slotEmitDoubleClicked(QTreeWidgetItem *item, int col)
+{
+ if (!item || lvi_cast<KeyListViewItem>(item)) {
+ Q_EMIT doubleClicked(static_cast<KeyListViewItem *>(item), col);
+ }
+}
+
+void Kleo::KeyListView::slotEmitReturnPressed(QTreeWidgetItem *item)
+{
+ if (!item || lvi_cast<KeyListViewItem>(item)) {
+ Q_EMIT returnPressed(static_cast<KeyListViewItem *>(item));
+ }
+}
+
+void Kleo::KeyListView::slotEmitSelectionChanged()
+{
+ Q_EMIT selectionChanged(selectedItem());
+}
+
+void Kleo::KeyListView::slotEmitContextMenu(const QPoint &pos)
+{
+ QTreeWidgetItem *item = itemAt(pos);
+ if (!item || lvi_cast<KeyListViewItem>(item)) {
+ Q_EMIT contextMenu(static_cast<KeyListViewItem *>(item), viewport()->mapToGlobal(pos));
+ }
+}
+
+//
+//
+// KeyListViewItem
+//
+//
+
+Kleo::KeyListViewItem::KeyListViewItem(KeyListView *parent, const GpgME::Key &key)
+ : QTreeWidgetItem(parent, RTTI)
+{
+ Q_ASSERT(parent);
+ setKey(key);
+}
+
+Kleo::KeyListViewItem::KeyListViewItem(KeyListView *parent, KeyListViewItem *after, const GpgME::Key &key)
+ : QTreeWidgetItem(parent, after, RTTI)
+{
+ Q_ASSERT(parent);
+ setKey(key);
+}
+
+Kleo::KeyListViewItem::KeyListViewItem(KeyListViewItem *parent, const GpgME::Key &key)
+ : QTreeWidgetItem(parent, RTTI)
+{
+ Q_ASSERT(parent && parent->listView());
+ setKey(key);
+}
+
+Kleo::KeyListViewItem::KeyListViewItem(KeyListViewItem *parent, KeyListViewItem *after, const GpgME::Key &key)
+ : QTreeWidgetItem(parent, after, RTTI)
+{
+ Q_ASSERT(parent && parent->listView());
+ setKey(key);
+}
+
+Kleo::KeyListViewItem::~KeyListViewItem()
+{
+ // delete the children first... When children are deleted in the
+ // QLVI dtor, they don't have listView() anymore, thus they don't
+ // call deregister( this ), leading to stale entries in the
+ // itemMap...
+ while (QTreeWidgetItem *item = child(0)) {
+ delete item;
+ }
+ // better do this here, too, since deletion is top-down and thus
+ // we're deleted when our parent item is no longer a
+ // KeyListViewItem, but a mere QListViewItem, so our takeItem()
+ // overload is gone by that time...
+ if (KeyListView *lv = listView()) {
+ lv->deregisterItem(this);
+ }
+}
+
+void Kleo::KeyListViewItem::setKey(const GpgME::Key &key)
+{
+ KeyListView *lv = listView();
+ if (lv) {
+ lv->deregisterItem(this);
+ }
+ mKey = key;
+ if (lv) {
+ lv->registerItem(this);
+ }
+
+ // the ColumnStrategy operations might be very slow, so cache their
+ // result here, where we're non-const :)
+ const Kleo::KeyListView::ColumnStrategy *cs = lv ? lv->columnStrategy() : nullptr;
+ if (!cs) {
+ return;
+ }
+ const KeyListView::DisplayStrategy *ds = lv ? lv->displayStrategy() : nullptr;
+ const int numCols = lv ? lv->columnCount() : 0;
+ for (int i = 0; i < numCols; ++i) {
+ setText(i, cs->text(key, i));
+ setToolTip(i, cs->toolTip(key, i));
+ const QIcon icon = cs->icon(key, i);
+ if (!icon.isNull()) {
+ setIcon(i, icon);
+ }
+ if (ds) {
+ setForeground(i, QBrush(ds->keyForeground(key, foreground(i).color())));
+ setBackgroundColor(i, ds->keyBackground(key, backgroundColor(i)));
+ setFont(i, ds->keyFont(key, font(i)));
+ }
+ }
+}
+
+QString Kleo::KeyListViewItem::toolTip(int col) const
+{
+ return listView() && listView()->columnStrategy()
+ ? listView()->columnStrategy()->toolTip(key(), col)
+ : QString();
+}
+
+bool Kleo::KeyListViewItem::operator<(const QTreeWidgetItem &other) const
+{
+ if (other.type() != RTTI || !listView() || !listView()->columnStrategy()) {
+ return QTreeWidgetItem::operator<(other);
+ }
+ const KeyListViewItem *that = static_cast<const KeyListViewItem *>(&other);
+ return listView()->columnStrategy()->compare(this->key(), that->key(), treeWidget()->sortColumn()) < 0;
+}
+
+void Kleo::KeyListViewItem::takeItem(QTreeWidgetItem *qlvi)
+{
+ //qCDebug(KLEO_UI_LOG) <<"Kleo::KeyListViewItem::takeItem(" << qlvi <<" )";
+ if (KeyListViewItem *item = lvi_cast<KeyListViewItem>(qlvi)) {
+ listView()->deregisterItem(item);
+ }
+ takeChild(indexOfChild(qlvi));
+}
+
+//
+//
+// ColumnStrategy
+//
+//
+
+Kleo::KeyListView::ColumnStrategy::~ColumnStrategy() {}
+
+int Kleo::KeyListView::ColumnStrategy::compare(const GpgME::Key &key1, const GpgME::Key &key2, const int col) const
+{
+ return QString::localeAwareCompare(text(key1, col), text(key2, col));
+}
+
+int Kleo::KeyListView::ColumnStrategy::width(int col, const QFontMetrics &fm) const
+{
+ return fm.width(title(col)) * 2;
+}
+
+QString Kleo::KeyListView::ColumnStrategy::toolTip(const GpgME::Key &key, int col) const
+{
+ return text(key, col);
+}
+
+//
+//
+// DisplayStrategy
+//
+//
+
+Kleo::KeyListView::DisplayStrategy::~DisplayStrategy() {}
+
+//font
+QFont Kleo::KeyListView::DisplayStrategy::keyFont(const GpgME::Key &, const QFont &font) const
+{
+ return font;
+}
+
+//foreground
+QColor Kleo::KeyListView::DisplayStrategy::keyForeground(const GpgME::Key &, const QColor &fg)const
+{
+ return fg;
+}
+
+//background
+QColor Kleo::KeyListView::DisplayStrategy::keyBackground(const GpgME::Key &, const QColor &bg)const
+{
+ return bg;
+}
+
+//
+//
+// Collection of covariant return reimplementations of QListView(Item)
+// members:
+//
+//
+
+Kleo::KeyListView *Kleo::KeyListViewItem::listView() const
+{
+ return static_cast<Kleo::KeyListView *>(QTreeWidgetItem::treeWidget());
+}
+
+Kleo::KeyListViewItem *Kleo::KeyListViewItem::nextSibling() const
+{
+ if (parent()) {
+ const int myIndex = parent()->indexOfChild(const_cast<KeyListViewItem *>(this));
+ return static_cast<Kleo::KeyListViewItem *>(parent()->child(myIndex + 1));
+ }
+ const int myIndex = treeWidget()->indexOfTopLevelItem(const_cast<KeyListViewItem *>(this));
+ return static_cast<Kleo::KeyListViewItem *>(treeWidget()->topLevelItem(myIndex + 1));
+}
+
+Kleo::KeyListViewItem *Kleo::KeyListView::firstChild() const
+{
+ return static_cast<Kleo::KeyListViewItem *>(topLevelItem(0));
+}
+
+Kleo::KeyListViewItem *Kleo::KeyListView::selectedItem() const
+{
+ QList<KeyListViewItem *> selection = selectedItems();
+ if (selection.isEmpty()) {
+ return nullptr;
+ }
+ return selection.first();
+}
+
+QList<Kleo::KeyListViewItem *> Kleo::KeyListView::selectedItems() const
+{
+ QList<KeyListViewItem *> result;
+ foreach (QTreeWidgetItem *selectedItem, QTreeWidget::selectedItems()) {
+ if (Kleo::KeyListViewItem *i = Kleo::lvi_cast<Kleo::KeyListViewItem>(selectedItem)) {
+ result.append(i);
+ }
+ }
+ return result;
+}
+
+bool Kleo::KeyListView::isMultiSelection() const
+{
+ return selectionMode() == ExtendedSelection || selectionMode() == MultiSelection;
+}
+
+void Kleo::KeyListView::keyPressEvent(QKeyEvent *event)
+{
+ if (event->key() == Qt::Key_Return || event->key() == Qt::Key_Enter) {
+ if (selectedItem()) {
+ slotEmitReturnPressed(selectedItem());
+ }
+ }
+ QTreeView::keyPressEvent(event);
+}
+
--- /dev/null
+/*
+ keylistview.h
+
+ This file is part of libkleopatra, the KDE keymanagement library
+ Copyright (c) 2004 Klarälvdalens Datakonsult AB
+
+ Libkleopatra is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ Libkleopatra 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#ifndef __KLEO_KEYLISTVIEW_H__
+#define __KLEO_KEYLISTVIEW_H__
+
+#include "kleo_export.h"
+
+#include <gpgme++/key.h>
+
+#include <QByteArray>
+#include <QTreeWidget>
+#include <QHeaderView>
+#include <QIcon>
+
+class QFont;
+class QColor;
+
+namespace Kleo
+{
+
+// work around moc parser bug...
+#define TEMPLATE_TYPENAME(T) template <typename T>
+TEMPLATE_TYPENAME(T)
+inline T *lvi_cast(QTreeWidgetItem *item)
+{
+ return item && (item->type() == T::RTTI)
+ ? static_cast<T *>(item) : 0;
+}
+
+TEMPLATE_TYPENAME(T)
+inline const T *lvi_cast(const QTreeWidgetItem *item)
+{
+ return item && (item->type() == T::RTTI)
+ ? static_cast<const T *>(item) : 0;
+}
+#undef TEMPLATE_TYPENAME
+
+class KeyListView;
+
+class KeyListViewItem : public QTreeWidgetItem
+{
+public:
+ KeyListViewItem(KeyListView *parent, const GpgME::Key &key);
+ KeyListViewItem(KeyListView *parent, KeyListViewItem *after, const GpgME::Key &key);
+ KeyListViewItem(KeyListViewItem *parent, const GpgME::Key &key);
+ KeyListViewItem(KeyListViewItem *parent, KeyListViewItem *after, const GpgME::Key &key);
+ ~KeyListViewItem();
+
+ void setKey(const GpgME::Key &key);
+ const GpgME::Key &key() const
+ {
+ return mKey;
+ }
+
+ enum { RTTI = QTreeWidgetItem::UserType + 1 };
+
+ //
+ // only boring stuff below:
+ //
+ virtual QString toolTip(int column) const;
+
+ /*! \reimp for covariant return */
+ KeyListView *listView() const;
+ /*! \reimp for covariant return */
+ KeyListViewItem *nextSibling() const;
+ /*! \reimp */
+ bool operator<(const QTreeWidgetItem &other) const override;
+ /*! \reimp */
+ void takeItem(QTreeWidgetItem *item);
+
+private:
+ GpgME::Key mKey;
+};
+
+class KLEO_EXPORT KeyListView : public QTreeWidget
+{
+ Q_OBJECT
+ friend class KeyListViewItem;
+public:
+
+ class KLEO_EXPORT ColumnStrategy
+ {
+ public:
+ virtual ~ColumnStrategy();
+ virtual QString title(int column) const = 0;
+ virtual int width(int column, const QFontMetrics &fm) const;
+ virtual QHeaderView::ResizeMode resizeMode(int) const
+ {
+ return QHeaderView::Interactive;
+ }
+
+ virtual QString text(const GpgME::Key &key, int column) const = 0;
+ virtual QString toolTip(const GpgME::Key &key, int column) const;
+ virtual QIcon icon(const GpgME::Key &, int) const
+ {
+ return QIcon();
+ }
+ virtual int compare(const GpgME::Key &key1, const GpgME::Key &key2, const int column) const;
+ };
+
+ class KLEO_EXPORT DisplayStrategy
+ {
+ public:
+ virtual ~DisplayStrategy();
+ //font
+ virtual QFont keyFont(const GpgME::Key &, const QFont &) const;
+ //foreground
+ virtual QColor keyForeground(const GpgME::Key &, const QColor &) const;
+ //background
+ virtual QColor keyBackground(const GpgME::Key &, const QColor &) const;
+ };
+
+ explicit KeyListView(const ColumnStrategy *strategy,
+ const DisplayStrategy *display = 0,
+ QWidget *parent = nullptr, Qt::WindowFlags f = 0);
+
+ ~KeyListView();
+
+ const ColumnStrategy *columnStrategy() const
+ {
+ return mColumnStrategy;
+ }
+ const DisplayStrategy *displayStrategy() const
+ {
+ return mDisplayStrategy;
+ }
+
+ bool hierarchical() const
+ {
+ return mHierarchical;
+ }
+ virtual void setHierarchical(bool hier);
+
+ void flushKeys()
+ {
+ slotUpdateTimeout();
+ }
+
+ bool isMultiSelection() const;
+
+ KeyListViewItem *itemByFingerprint(const QByteArray &) const;
+
+public:
+ using QTreeWidget::selectionChanged; // for below, but moc doesn't like it to be in the Q_SIGNALS: section
+Q_SIGNALS:
+ void doubleClicked(Kleo::KeyListViewItem *, int);
+ void returnPressed(Kleo::KeyListViewItem *);
+ void selectionChanged(Kleo::KeyListViewItem *);
+ void contextMenu(Kleo::KeyListViewItem *, const QPoint &);
+
+protected:
+ void keyPressEvent(QKeyEvent *event) override;
+
+public Q_SLOTS:
+ virtual void slotAddKey(const GpgME::Key &key);
+ virtual void slotRefreshKey(const GpgME::Key &key);
+
+ //
+ // Only boring stuff below:
+ //
+private Q_SLOTS:
+ void slotEmitDoubleClicked(QTreeWidgetItem *, int);
+ void slotEmitReturnPressed(QTreeWidgetItem *);
+ void slotEmitSelectionChanged();
+ void slotEmitContextMenu(const QPoint &pos);
+ void slotUpdateTimeout();
+
+public:
+ /*! \reimp for covariant return */
+ KeyListViewItem *selectedItem() const;
+ /*! \reimp */
+ QList<KeyListViewItem *> selectedItems() const;
+ /*! \reimp for covariant return */
+ KeyListViewItem *firstChild() const;
+ /*! \reimp */
+ void clear();
+ /*! \reimp */
+ void takeItem(QTreeWidgetItem *);
+
+private:
+ void doHierarchicalInsert(const GpgME::Key &);
+ void gatherScattered();
+ void scatterGathered(KeyListViewItem *);
+ void registerItem(KeyListViewItem *);
+ void deregisterItem(const KeyListViewItem *);
+
+private:
+ const ColumnStrategy *mColumnStrategy;
+ const DisplayStrategy *mDisplayStrategy;
+ bool mHierarchical;
+
+ class Private;
+ Private *const d;
+};
+}
+
+#endif // __KLEO_KEYLISTVIEW_H__
--- /dev/null
+/* -*- c++ -*-
+ keyrequester.cpp
+
+ This file is part of libkleopatra, the KDE keymanagement library
+ Copyright (c) 2004 Klar�vdalens Datakonsult AB
+
+ Libkleopatra is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ Libkleopatra 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+
+ Based on kpgpui.cpp
+ Copyright (C) 2001,2002 the KPGP authors
+ See file libkdenetwork/AUTHORS.kpgp for details
+
+ This file is part of KPGP, the KDE PGP/GnuPG support library.
+
+ KPGP is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "keyrequester.h"
+
+#include "keyselectiondialog.h"
+
+#include "libkleo/dn.h"
+
+// gpgme++
+#include <gpgme++/key.h>
+#include <gpgme++/keylistresult.h>
+#include <qgpgme/protocol.h>
+#include <qgpgme/keylistjob.h>
+
+// KDE
+#include <KLocalizedString>
+#include <QDialog>
+#include <kmessagebox.h>
+#include <qpushbutton.h>
+
+// Qt
+#include <QApplication>
+
+#include <QString>
+#include <QStringList>
+#include <QLabel>
+
+#include <QHBoxLayout>
+
+
+using namespace QGpgME;
+
+Kleo::KeyRequester::KeyRequester(unsigned int allowedKeys, bool multipleKeys,
+ QWidget *parent)
+ : QWidget(parent),
+ mOpenPGPBackend(nullptr),
+ mSMIMEBackend(nullptr),
+ mMulti(multipleKeys),
+ mKeyUsage(allowedKeys),
+ mJobs(0),
+ d(nullptr)
+{
+ init();
+}
+
+Kleo::KeyRequester::KeyRequester(QWidget *parent)
+ : QWidget(parent),
+ mOpenPGPBackend(nullptr),
+ mSMIMEBackend(nullptr),
+ mMulti(false),
+ mKeyUsage(0),
+ mJobs(0),
+ d(nullptr)
+{
+ init();
+}
+
+void Kleo::KeyRequester::init()
+{
+ QHBoxLayout *hlay = new QHBoxLayout(this);
+ hlay->setMargin(0);
+
+ // the label where the key id is to be displayed:
+ mLabel = new QLabel(this);
+ mLabel->setFrameStyle(QFrame::StyledPanel | QFrame::Sunken);
+
+ // the button to unset any key:
+ mEraseButton = new QPushButton(this);
+ mEraseButton->setAutoDefault(false);
+ mEraseButton->setSizePolicy(QSizePolicy(QSizePolicy::Minimum,
+ QSizePolicy::Minimum));
+ mEraseButton->setIcon(QIcon::fromTheme(QApplication::isRightToLeft() ? QStringLiteral("edit-clear-locationbar-ltr") : QStringLiteral("edit-clear-locationbar-rtl")));
+ mEraseButton->setToolTip(i18n("Clear"));
+
+ // the button to call the KeySelectionDialog:
+ mDialogButton = new QPushButton(i18n("Change..."), this);
+ mDialogButton->setAutoDefault(false);
+
+ hlay->addWidget(mLabel, 1);
+ hlay->addWidget(mEraseButton);
+ hlay->addWidget(mDialogButton);
+
+ connect(mEraseButton, &QPushButton::clicked, this, &SigningKeyRequester::slotEraseButtonClicked);
+ connect(mDialogButton, &QPushButton::clicked, this, &SigningKeyRequester::slotDialogButtonClicked);
+
+ setSizePolicy(QSizePolicy(QSizePolicy::MinimumExpanding,
+ QSizePolicy::Fixed));
+
+ setAllowedKeys(mKeyUsage);
+}
+
+Kleo::KeyRequester::~KeyRequester()
+{
+
+}
+
+const std::vector<GpgME::Key> &Kleo::KeyRequester::keys() const
+{
+ return mKeys;
+}
+
+const GpgME::Key &Kleo::KeyRequester::key() const
+{
+ static const GpgME::Key null = GpgME::Key::null;
+ if (mKeys.empty()) {
+ return null;
+ } else {
+ return mKeys.front();
+ }
+}
+
+void Kleo::KeyRequester::setKeys(const std::vector<GpgME::Key> &keys)
+{
+ mKeys.clear();
+ for (std::vector<GpgME::Key>::const_iterator it = keys.begin(); it != keys.end(); ++it)
+ if (!it->isNull()) {
+ mKeys.push_back(*it);
+ }
+ updateKeys();
+}
+
+void Kleo::KeyRequester::setKey(const GpgME::Key &key)
+{
+ mKeys.clear();
+ if (!key.isNull()) {
+ mKeys.push_back(key);
+ }
+ updateKeys();
+}
+
+QString Kleo::KeyRequester::fingerprint() const
+{
+ if (mKeys.empty()) {
+ return QString();
+ } else {
+ return QLatin1String(mKeys.front().primaryFingerprint());
+ }
+}
+
+QStringList Kleo::KeyRequester::fingerprints() const
+{
+ QStringList result;
+ for (std::vector<GpgME::Key>::const_iterator it = mKeys.begin(); it != mKeys.end(); ++it)
+ if (!it->isNull())
+ if (const char *fpr = it->primaryFingerprint()) {
+ result.push_back(QLatin1String(fpr));
+ }
+ return result;
+}
+
+void Kleo::KeyRequester::setFingerprint(const QString &fingerprint)
+{
+ startKeyListJob(QStringList(fingerprint));
+}
+
+void Kleo::KeyRequester::setFingerprints(const QStringList &fingerprints)
+{
+ startKeyListJob(fingerprints);
+}
+
+void Kleo::KeyRequester::updateKeys()
+{
+ if (mKeys.empty()) {
+ mLabel->clear();
+ return;
+ }
+ if (mKeys.size() > 1) {
+ setMultipleKeysEnabled(true);
+ }
+
+ QStringList labelTexts;
+ QString toolTipText;
+ for (std::vector<GpgME::Key>::const_iterator it = mKeys.begin(); it != mKeys.end(); ++it) {
+ if (it->isNull()) {
+ continue;
+ }
+ const QString fpr = QLatin1String(it->primaryFingerprint());
+ labelTexts.push_back(fpr.right(8));
+ toolTipText += fpr.right(8) + QLatin1String(": ");
+ if (const char *uid = it->userID(0).id())
+ if (it->protocol() == GpgME::OpenPGP) {
+ toolTipText += QString::fromUtf8(uid);
+ } else {
+ toolTipText += Kleo::DN(uid).prettyDN();
+ }
+ else {
+ toolTipText += xi18n("<placeholder>unknown</placeholder>");
+ }
+ toolTipText += QLatin1Char('\n');
+ }
+
+ mLabel->setText(labelTexts.join(QStringLiteral(", ")));
+ mLabel->setToolTip(toolTipText);
+}
+
+#ifndef __KLEO_UI_SHOW_KEY_LIST_ERROR_H__
+#define __KLEO_UI_SHOW_KEY_LIST_ERROR_H__
+static void showKeyListError(QWidget *parent, const GpgME::Error &err)
+{
+ Q_ASSERT(err);
+ const QString msg = i18n("<qt><p>An error occurred while fetching "
+ "the keys from the backend:</p>"
+ "<p><b>%1</b></p></qt>",
+ QString::fromLocal8Bit(err.asString()));
+
+ KMessageBox::error(parent, msg, i18n("Key Listing Failed"));
+}
+#endif // __KLEO_UI_SHOW_KEY_LIST_ERROR_H__
+
+void Kleo::KeyRequester::startKeyListJob(const QStringList &fingerprints)
+{
+ if (!mSMIMEBackend && !mOpenPGPBackend) {
+ return;
+ }
+
+ mTmpKeys.clear();
+ mJobs = 0;
+
+ unsigned int count = 0;
+ for (QStringList::const_iterator it = fingerprints.begin(); it != fingerprints.end(); ++it)
+ if (!(*it).trimmed().isEmpty()) {
+ ++count;
+ }
+
+ if (!count) {
+ // don't fall into the trap that an empty pattern means
+ // "return all keys" :)
+ setKey(GpgME::Key::null);
+ return;
+ }
+
+ if (mOpenPGPBackend) {
+ KeyListJob *job = mOpenPGPBackend->keyListJob(false); // local, no sigs
+ if (!job) {
+ KMessageBox::error(this,
+ i18n("The OpenPGP backend does not support listing keys. "
+ "Check your installation."),
+ i18n("Key Listing Failed"));
+ } else {
+ connect(job, &KeyListJob::result, this, &SigningKeyRequester::slotKeyListResult);
+ connect(job, &KeyListJob::nextKey, this, &SigningKeyRequester::slotNextKey);
+
+ const GpgME::Error err = job->start(fingerprints,
+ mKeyUsage & Kleo::KeySelectionDialog::SecretKeys &&
+ !(mKeyUsage & Kleo::KeySelectionDialog::PublicKeys));
+
+ if (err) {
+ showKeyListError(this, err);
+ } else {
+ ++mJobs;
+ }
+ }
+ }
+
+ if (mSMIMEBackend) {
+ KeyListJob *job = mSMIMEBackend->keyListJob(false); // local, no sigs
+ if (!job) {
+ KMessageBox::error(this,
+ i18n("The S/MIME backend does not support listing keys. "
+ "Check your installation."),
+ i18n("Key Listing Failed"));
+ } else {
+ connect(job, &KeyListJob::result, this, &SigningKeyRequester::slotKeyListResult);
+ connect(job, &KeyListJob::nextKey, this, &SigningKeyRequester::slotNextKey);
+
+ const GpgME::Error err = job->start(fingerprints,
+ mKeyUsage & Kleo::KeySelectionDialog::SecretKeys &&
+ !(mKeyUsage & Kleo::KeySelectionDialog::PublicKeys));
+
+ if (err) {
+ showKeyListError(this, err);
+ } else {
+ ++mJobs;
+ }
+ }
+ }
+
+ if (mJobs > 0) {
+ mEraseButton->setEnabled(false);
+ mDialogButton->setEnabled(false);
+ }
+}
+
+void Kleo::KeyRequester::slotNextKey(const GpgME::Key &key)
+{
+ if (!key.isNull()) {
+ mTmpKeys.push_back(key);
+ }
+}
+
+void Kleo::KeyRequester::slotKeyListResult(const GpgME::KeyListResult &res)
+{
+ if (res.error()) {
+ showKeyListError(this, res.error());
+ }
+
+ if (--mJobs <= 0) {
+ mEraseButton->setEnabled(true);
+ mDialogButton->setEnabled(true);
+
+ setKeys(mTmpKeys);
+ mTmpKeys.clear();
+ }
+}
+
+void Kleo::KeyRequester::slotDialogButtonClicked()
+{
+ KeySelectionDialog *dlg = mKeys.empty()
+ ? new KeySelectionDialog(mDialogCaption, mDialogMessage, mInitialQuery, mKeyUsage, mMulti, false, this)
+ : new KeySelectionDialog(mDialogCaption, mDialogCaption, mKeys, mKeyUsage, mMulti, false, this);
+
+ if (dlg->exec() == QDialog::Accepted) {
+ if (mMulti) {
+ setKeys(dlg->selectedKeys());
+ } else {
+ setKey(dlg->selectedKey());
+ }
+ Q_EMIT changed();
+ }
+
+ delete dlg;
+}
+
+void Kleo::KeyRequester::slotEraseButtonClicked()
+{
+ if (!mKeys.empty()) {
+ Q_EMIT changed();
+ }
+ mKeys.clear();
+ updateKeys();
+}
+
+void Kleo::KeyRequester::setDialogCaption(const QString &caption)
+{
+ mDialogCaption = caption;
+}
+
+void Kleo::KeyRequester::setDialogMessage(const QString &msg)
+{
+ mDialogMessage = msg;
+}
+
+bool Kleo::KeyRequester::isMultipleKeysEnabled() const
+{
+ return mMulti;
+}
+
+void Kleo::KeyRequester::setMultipleKeysEnabled(bool multi)
+{
+ if (multi == mMulti) {
+ return;
+ }
+
+ if (!multi && !mKeys.empty()) {
+ mKeys.erase(mKeys.begin() + 1, mKeys.end());
+ }
+
+ mMulti = multi;
+ updateKeys();
+}
+
+unsigned int Kleo::KeyRequester::allowedKeys() const
+{
+ return mKeyUsage;
+}
+
+void Kleo::KeyRequester::setAllowedKeys(unsigned int keyUsage)
+{
+ mKeyUsage = keyUsage;
+ mOpenPGPBackend = nullptr;
+ mSMIMEBackend = nullptr;
+
+ if (mKeyUsage & KeySelectionDialog::OpenPGPKeys) {
+ mOpenPGPBackend = openpgp();
+ }
+ if (mKeyUsage & KeySelectionDialog::SMIMEKeys) {
+ mSMIMEBackend = smime();
+ }
+
+ if (mOpenPGPBackend && !mSMIMEBackend) {
+ mDialogCaption = i18n("OpenPGP Key Selection");
+ mDialogMessage = i18n("Please select an OpenPGP key to use.");
+ } else if (!mOpenPGPBackend && mSMIMEBackend) {
+ mDialogCaption = i18n("S/MIME Key Selection");
+ mDialogMessage = i18n("Please select an S/MIME key to use.");
+ } else {
+ mDialogCaption = i18n("Key Selection");
+ mDialogMessage = i18n("Please select an (OpenPGP or S/MIME) key to use.");
+ }
+}
+
+QPushButton *Kleo::KeyRequester::dialogButton()
+{
+ return mDialogButton;
+}
+
+QPushButton *Kleo::KeyRequester::eraseButton()
+{
+ return mEraseButton;
+}
+
+static inline unsigned int foo(bool openpgp, bool smime, bool trusted, bool valid)
+{
+ unsigned int result = 0;
+ if (openpgp) {
+ result |= Kleo::KeySelectionDialog::OpenPGPKeys;
+ }
+ if (smime) {
+ result |= Kleo::KeySelectionDialog::SMIMEKeys;
+ }
+ if (trusted) {
+ result |= Kleo::KeySelectionDialog::TrustedKeys;
+ }
+ if (valid) {
+ result |= Kleo::KeySelectionDialog::ValidKeys;
+ }
+ return result;
+}
+
+static inline unsigned int encryptionKeyUsage(bool openpgp, bool smime, bool trusted, bool valid)
+{
+ return foo(openpgp, smime, trusted, valid) | Kleo::KeySelectionDialog::EncryptionKeys | Kleo::KeySelectionDialog::PublicKeys;
+}
+
+static inline unsigned int signingKeyUsage(bool openpgp, bool smime, bool trusted, bool valid)
+{
+ return foo(openpgp, smime, trusted, valid) | Kleo::KeySelectionDialog::SigningKeys | Kleo::KeySelectionDialog::SecretKeys;
+}
+
+Kleo::EncryptionKeyRequester::EncryptionKeyRequester(bool multi, unsigned int proto,
+ QWidget *parent,
+ bool onlyTrusted, bool onlyValid)
+ : KeyRequester(encryptionKeyUsage(proto & OpenPGP, proto & SMIME, onlyTrusted, onlyValid), multi,
+ parent), d(nullptr)
+{
+}
+
+Kleo::EncryptionKeyRequester::EncryptionKeyRequester(QWidget *parent)
+ : KeyRequester(0, false, parent), d(nullptr)
+{
+}
+
+Kleo::EncryptionKeyRequester::~EncryptionKeyRequester() {}
+
+void Kleo::EncryptionKeyRequester::setAllowedKeys(unsigned int proto, bool onlyTrusted, bool onlyValid)
+{
+ KeyRequester::setAllowedKeys(encryptionKeyUsage(proto & OpenPGP, proto & SMIME, onlyTrusted, onlyValid));
+}
+
+Kleo::SigningKeyRequester::SigningKeyRequester(bool multi, unsigned int proto,
+ QWidget *parent,
+ bool onlyTrusted, bool onlyValid)
+ : KeyRequester(signingKeyUsage(proto & OpenPGP, proto & SMIME, onlyTrusted, onlyValid), multi,
+ parent), d(nullptr)
+{
+}
+
+Kleo::SigningKeyRequester::SigningKeyRequester(QWidget *parent)
+ : KeyRequester(0, false, parent), d(nullptr)
+{
+}
+
+Kleo::SigningKeyRequester::~SigningKeyRequester() {}
+
+void Kleo::SigningKeyRequester::setAllowedKeys(unsigned int proto, bool onlyTrusted, bool onlyValid)
+{
+ KeyRequester::setAllowedKeys(signingKeyUsage(proto & OpenPGP, proto & SMIME, onlyTrusted, onlyValid));
+}
+
+void Kleo::KeyRequester::virtual_hook(int, void *) {}
+void Kleo::EncryptionKeyRequester::virtual_hook(int id, void *data)
+{
+ KeyRequester::virtual_hook(id, data);
+}
+void Kleo::SigningKeyRequester::virtual_hook(int id, void *data)
+{
+ KeyRequester::virtual_hook(id, data);
+}
+
--- /dev/null
+/* -*- c++ -*-
+ keyrequester.h
+
+ This file is part of libkleopatra, the KDE keymanagement library
+ Copyright (c) 2004 Klarälvdalens Datakonsult AB
+
+ Libkleopatra is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ Libkleopatra 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+
+ Based on kpgpui.h
+ Copyright (C) 2001,2002 the KPGP authors
+ See file libkdenetwork/AUTHORS.kpgp for details
+
+ This file is part of KPGP, the KDE PGP/GnuPG support library.
+
+ KPGP is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __KLEO_UI_KEYREQUESTER_H__
+#define __KLEO_UI_KEYREQUESTER_H__
+
+#include "kleo_export.h"
+
+#include <qgpgme/protocol.h>
+
+#include <QWidget>
+#include <QLabel>
+
+#include <vector>
+
+namespace GpgME
+{
+class Key;
+class KeyListResult;
+}
+
+class QStringList;
+class QString;
+class QPushButton;
+class QLabel;
+
+namespace Kleo
+{
+
+/// Base class for SigningKeyRequester and EncryptionKeyRequester
+class KLEO_EXPORT KeyRequester : public QWidget
+{
+ Q_OBJECT
+public:
+ explicit KeyRequester(unsigned int allowedKeys, bool multipleKeys = false,
+ QWidget *parent = nullptr);
+ // Constructor for Qt Designer
+ explicit KeyRequester(QWidget *parent = nullptr);
+ ~KeyRequester();
+
+ const GpgME::Key &key() const;
+ /** Preferred method to set a key for
+ non-multi-KeyRequesters. Doesn't start a backend
+ KeyListJob.
+ */
+ void setKey(const GpgME::Key &key);
+
+ const std::vector<GpgME::Key> &keys() const;
+ /** Preferred method to set a key for multi-KeyRequesters. Doesn't
+ start a backend KeyListJob.
+ */
+ void setKeys(const std::vector<GpgME::Key> &keys);
+
+ QString fingerprint() const;
+ /** Set the key by fingerprint. Starts a background KeyListJob to
+ retrive the complete GpgME::Key object
+ */
+ void setFingerprint(const QString &fingerprint);
+
+ QStringList fingerprints() const;
+ /** Set the keys by fingerprint. Starts a background KeyListJob to
+ retrive the complete GpgME::Key objects
+ */
+ void setFingerprints(const QStringList &fingerprints);
+
+ QPushButton *eraseButton();
+ QPushButton *dialogButton();
+
+ void setDialogCaption(const QString &caption);
+ void setDialogMessage(const QString &message);
+
+ bool isMultipleKeysEnabled() const;
+ void setMultipleKeysEnabled(bool enable);
+
+ unsigned int allowedKeys() const;
+ void setAllowedKeys(unsigned int allowed);
+
+ void setInitialQuery(const QString &s)
+ {
+ mInitialQuery = s;
+ }
+ const QString &initialQuery() const
+ {
+ return mInitialQuery;
+ }
+
+Q_SIGNALS:
+ void changed();
+
+private:
+ void init();
+ void startKeyListJob(const QStringList &fingerprints);
+ void updateKeys();
+
+private Q_SLOTS:
+ void slotNextKey(const GpgME::Key &key);
+ void slotKeyListResult(const GpgME::KeyListResult &result);
+ void slotDialogButtonClicked();
+ void slotEraseButtonClicked();
+
+private:
+ const QGpgME::Protocol *mOpenPGPBackend;
+ const QGpgME::Protocol *mSMIMEBackend;
+ QLabel *mLabel;
+ QPushButton *mEraseButton;
+ QPushButton *mDialogButton;
+ QString mDialogCaption, mDialogMessage, mInitialQuery;
+ bool mMulti;
+ unsigned int mKeyUsage;
+ int mJobs;
+ std::vector<GpgME::Key> mKeys;
+ std::vector<GpgME::Key> mTmpKeys;
+
+private:
+ class Private;
+ Private *const d;
+protected:
+ virtual void virtual_hook(int, void *);
+};
+
+class KLEO_EXPORT EncryptionKeyRequester : public KeyRequester
+{
+ Q_OBJECT
+public:
+ enum { OpenPGP = 1, SMIME = 2, AllProtocols = OpenPGP | SMIME };
+
+ /**
+ * Preferred constructor
+ */
+ explicit EncryptionKeyRequester(bool multipleKeys = false,
+ unsigned int proto = AllProtocols,
+ QWidget *parent = nullptr,
+ bool onlyTrusted = true,
+ bool onlyValid = true);
+ /**
+ * Constructor for Qt designer
+ */
+ explicit EncryptionKeyRequester(QWidget *parent);
+ ~EncryptionKeyRequester();
+
+ void setAllowedKeys(unsigned int proto, bool onlyTrusted = true, bool onlyValid = true);
+
+private:
+ class Private;
+ Private *const d;
+protected:
+ void virtual_hook(int, void *) override;
+};
+
+class KLEO_EXPORT SigningKeyRequester : public KeyRequester
+{
+ Q_OBJECT
+public:
+ enum { OpenPGP = 1, SMIME = 2, AllProtocols = OpenPGP | SMIME };
+
+ /**
+ * Preferred constructor
+ * @param multipleKeys whether multiple keys can be selected
+ *
+ * @param proto the allowed protocols, OpenPGP and/or SMIME
+ * @param onlyTrusted only show trusted keys
+ * @param onlyValid only show valid keys
+ */
+ explicit SigningKeyRequester(bool multipleKeys = false,
+ unsigned int proto = AllProtocols,
+ QWidget *parent = nullptr,
+ bool onlyTrusted = true, bool onlyValid = true);
+ /**
+ * Constructor for Qt designer
+ */
+ explicit SigningKeyRequester(QWidget *parent);
+ ~SigningKeyRequester();
+
+ /*
+ * Those parameters affect the parameters given to the key selection dialog.
+ * @param proto the allowed protocols, OpenPGP and/or SMIME
+ * @param onlyTrusted only show trusted keys
+ * @param onlyValid only show valid keys
+ */
+ void setAllowedKeys(unsigned int proto, bool onlyTrusted = true, bool onlyValid = true);
+
+private:
+ class Private;
+ Private *const d;
+protected:
+ void virtual_hook(int, void *) override;
+};
+
+}
+
+#endif // __KLEO_UI_KEYREQUESTER_H__
--- /dev/null
+/* This file is part of Kleopatra, the KDE keymanager
+ Copyright (c) 2016 Klarälvdalens Datakonsult AB
+
+ Kleopatra is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Kleopatra 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+*/
+
+#include "keyselectioncombo.h"
+#include <kleo_ui_debug.h>
+
+#include "kleo/dn.h"
+#include "models/keylistmodel.h"
+#include "models/keylistsortfilterproxymodel.h"
+#include "models/keycache.h"
+#include "utils/formatting.h"
+#include "progressbar.h"
+
+#include <gpgme++/key.h>
+
+#include <QSortFilterProxyModel>
+#include <QVector>
+#include <QTimer>
+#include <QLineEdit>
+
+#include <KLocalizedString>
+#include <KMessageBox>
+
+Q_DECLARE_METATYPE(GpgME::Key)
+
+namespace
+{
+
+class ProxyModel : public QSortFilterProxyModel
+{
+ Q_OBJECT
+
+private:
+ struct CustomItem {
+ QIcon icon;
+ QString text;
+ QVariant data;
+ };
+public:
+ ProxyModel(QObject *parent = nullptr)
+ : QSortFilterProxyModel(parent)
+ {
+ }
+
+ ~ProxyModel()
+ {
+ qDeleteAll(mFrontItems);
+ qDeleteAll(mBackItems);
+ }
+
+ bool isCustomItem(const int row) const
+ {
+ return row < mFrontItems.count() || row >= mFrontItems.count() + QSortFilterProxyModel::rowCount();
+ }
+
+ void prependItem(const QIcon &icon, const QString &text, const QVariant &data)
+ {
+ beginInsertRows(QModelIndex(), 0, 0);
+ mFrontItems.push_front(new CustomItem{ icon, text, data });
+ endInsertRows();
+ }
+
+ void appendItem(const QIcon &icon, const QString &text, const QVariant &data)
+ {
+ beginInsertRows(QModelIndex(), rowCount(), rowCount());
+ mBackItems.push_back(new CustomItem{ icon, text, data });
+ endInsertRows();
+ }
+
+ void removeCustomItem(const QVariant &data)
+ {
+ for (int i = 0; i < mFrontItems.count(); ++i) {
+ if (mFrontItems[i]->data == data) {
+ beginRemoveRows(QModelIndex(), i, i);
+ delete mFrontItems.takeAt(i);
+ endRemoveRows();
+ return;
+ }
+ }
+ for (int i = 0; i < mBackItems.count(); ++i) {
+ if (mBackItems[i]->data == data) {
+ const int index = mFrontItems.count() + QSortFilterProxyModel::rowCount() + i;
+ beginRemoveRows(QModelIndex(), index, index);
+ delete mBackItems.takeAt(i);
+ endRemoveRows();
+ return;
+ }
+ }
+ }
+
+ int rowCount(const QModelIndex &parent = QModelIndex()) const override
+ {
+ return mFrontItems.count() + QSortFilterProxyModel::rowCount(parent) + mBackItems.count();
+ }
+
+ QModelIndex mapToSource(const QModelIndex &index) const override
+ {
+ if (!isCustomItem(index.row())) {
+ const int row = index.row() - mFrontItems.count();
+ const QModelIndex idx = createIndex(row, index.column(), index.internalPointer());
+ return QSortFilterProxyModel::mapToSource(idx);
+ } else {
+ return QModelIndex();
+ }
+ }
+
+ QModelIndex mapFromSource(const QModelIndex &source_index) const override
+ {
+ const QModelIndex idx = QSortFilterProxyModel::mapFromSource(source_index);
+ return createIndex(mFrontItems.count() + idx.row(), idx.column(), idx.internalPointer());
+ }
+
+ QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const override
+ {
+ if (row < 0 || row >= rowCount()) {
+ return QModelIndex();
+ }
+ if (row < mFrontItems.count()) {
+ return createIndex(row, column, mFrontItems[row]);
+ } else if (row >= mFrontItems.count() + QSortFilterProxyModel::rowCount()) {
+ return createIndex(row, column, mBackItems[row - mFrontItems.count() - QSortFilterProxyModel::rowCount()]);
+ } else {
+ const QModelIndex mi = QSortFilterProxyModel::index(row - mFrontItems.count(), column, parent);
+ return createIndex(row, column, mi.internalPointer());
+ }
+ }
+
+ Qt::ItemFlags flags(const QModelIndex &index) const override
+ {
+ Q_UNUSED(index);
+ return Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemNeverHasChildren;
+ }
+
+ QModelIndex parent(const QModelIndex &) const override
+ {
+ // Flat list
+ return QModelIndex();
+ }
+
+ QVariant data(const QModelIndex &index, int role) const override
+ {
+ if (!index.isValid()) {
+ return QVariant();
+ }
+
+ if (isCustomItem(index.row())) {
+ Q_ASSERT(!mFrontItems.isEmpty() || !mBackItems.isEmpty());
+ CustomItem *ci = static_cast<CustomItem*>(index.internalPointer());
+ switch (role) {
+ case Qt::DisplayRole:
+ return ci->text;
+ case Qt::DecorationRole:
+ return ci->icon;
+ case Qt::UserRole:
+ return ci->data;
+ default:
+ return QVariant();
+ }
+ }
+
+ const auto key = QSortFilterProxyModel::data(index, Kleo::KeyListModelInterface::KeyRole).value<GpgME::Key>();
+ Q_ASSERT(!key.isNull());
+ if (key.isNull()) {
+ return QVariant();
+ }
+
+ switch (role) {
+ case Qt::DisplayRole: {
+ const auto userID = key.userID(0);
+ QString name, email;
+
+ if (key.protocol() == GpgME::OpenPGP) {
+ name = QString::fromUtf8(userID.name());
+ email = QString::fromUtf8(userID.email());
+ } else {
+ const Kleo::DN dn(userID.id());
+ name = dn[QStringLiteral("CN")];
+ email = dn[QStringLiteral("EMAIL")];
+ }
+ return i18nc("Name <email> (validity, type, created: date)", "%1 (%2, %3, created: %4)",
+ email.isEmpty() ? name : name.isEmpty() ? email : i18nc("Name <email>", "%1 <%2>", name, email),
+ Kleo::Formatting::complianceStringShort(key),
+ key.protocol() == GpgME::OpenPGP ? i18n("OpenPGP") : i18n("S/MIME"),
+ Kleo::Formatting::creationDateString(key));
+ }
+ case Qt::DecorationRole:
+ return Kleo::Formatting::iconForUid(key.userID(0));
+ default:
+ return QSortFilterProxyModel::data(index, role);
+ }
+
+ return QVariant();
+ }
+
+private:
+ QVector<CustomItem*> mFrontItems;
+ QVector<CustomItem*> mBackItems;
+};
+
+
+} // anonymous namespace
+
+namespace Kleo
+{
+class KeySelectionComboPrivate
+{
+public:
+ KeySelectionComboPrivate(KeySelectionCombo *parent)
+ : wasEnabled(true)
+ , q(parent)
+ {
+ }
+
+ Kleo::AbstractKeyListModel *model;
+ Kleo::KeyListSortFilterProxyModel *sortFilterProxy;
+ ProxyModel *proxyModel;
+ std::shared_ptr<Kleo::KeyCache> cache;
+ QString defaultKey;
+ bool wasEnabled;
+
+private:
+ KeySelectionCombo * const q;
+};
+
+}
+
+using namespace Kleo;
+
+
+KeySelectionCombo::KeySelectionCombo(QWidget* parent)
+ : QComboBox(parent)
+ , d(new KeySelectionComboPrivate(this))
+{
+ d->model = Kleo::AbstractKeyListModel::createFlatKeyListModel(this);
+
+ d->sortFilterProxy = new Kleo::KeyListSortFilterProxyModel(this);
+ d->sortFilterProxy->setSourceModel(d->model);
+
+ d->proxyModel = new ProxyModel(this);
+ d->proxyModel->setSourceModel(d->sortFilterProxy);
+
+ setModel(d->proxyModel);
+ connect(this, static_cast<void(KeySelectionCombo::*)(int)>(&KeySelectionCombo::currentIndexChanged), this, [this](int row) { if (row >= 0 && row < d->proxyModel->rowCount()) { if (d->proxyModel->isCustomItem(row)) { Q_EMIT customItemSelected(d->proxyModel->index(row, 0).data(Qt::UserRole)); } else { Q_EMIT currentKeyChanged(currentKey()); } } });
+
+ d->cache = Kleo::KeyCache::mutableInstance();
+
+ QTimer::singleShot(0, this, &KeySelectionCombo::init);
+}
+
+KeySelectionCombo::~KeySelectionCombo()
+{
+ delete d;
+}
+
+void KeySelectionCombo::init()
+{
+ connect(d->cache.get(), &Kleo::KeyCache::keyListingDone,
+ this, [this]() {
+ // Set useKeyCache ensures that the cache is populated
+ // so this can be a blocking call if the cache is not initalized
+ qDebug() << "Key listing done";
+ d->model->useKeyCache(true, true);
+ d->proxyModel->removeCustomItem(QStringLiteral("-libkleo-loading-keys"));
+ setEnabled(d->wasEnabled);
+ Q_EMIT keyListingFinished();
+ });
+
+ connect(this, &KeySelectionCombo::keyListingFinished, this, [this]() { setCurrentKey(d->defaultKey); });
+
+ if (!d->cache->initialized()) {
+ refreshKeys();
+ } else {
+ d->model->useKeyCache(true, true);
+ Q_EMIT keyListingFinished();
+ }
+}
+
+
+void KeySelectionCombo::setKeyFilter(const std::shared_ptr<const KeyFilter> &kf)
+{
+ d->sortFilterProxy->setKeyFilter(kf);
+ setCurrentKey(d->defaultKey);
+}
+
+std::shared_ptr<const KeyFilter> KeySelectionCombo::keyFilter() const
+{
+ return d->sortFilterProxy->keyFilter();
+}
+
+void KeySelectionCombo::setIdFilter(const QString &id)
+{
+ d->sortFilterProxy->setFilterRegExp(id);
+ setCurrentKey(d->defaultKey);
+}
+
+QString KeySelectionCombo::idFilter() const
+{
+ return d->sortFilterProxy->filterRegExp().pattern();
+}
+
+GpgME::Key Kleo::KeySelectionCombo::currentKey() const
+{
+ return currentData(Kleo::KeyListModelInterface::KeyRole).value<GpgME::Key>();
+}
+
+void Kleo::KeySelectionCombo::setCurrentKey(const GpgME::Key &key)
+{
+ const int idx = findData(QVariant::fromValue(key), Kleo::KeyListModelInterface::KeyRole, Qt::MatchExactly);
+ if (idx > -1) {
+ setCurrentIndex(idx);
+ }
+}
+
+void Kleo::KeySelectionCombo::setCurrentKey(const QString &fingerprint)
+{
+ for (int i = 0; i < d->proxyModel->rowCount(); ++i) {
+ const auto idx = d->proxyModel->index(i, 0, QModelIndex());
+ const auto key = d->proxyModel->data(idx, Kleo::KeyListModelInterface::KeyRole).value<GpgME::Key>();
+ if (!key.isNull() && fingerprint == QString::fromLatin1(key.primaryFingerprint())) {
+ setCurrentIndex(i);
+ return;
+ }
+ }
+ setCurrentIndex(0);
+}
+
+void KeySelectionCombo::refreshKeys()
+{
+ d->wasEnabled = isEnabled();
+ setEnabled(false);
+ const bool wasBlocked = blockSignals(true);
+ prependCustomItem(QIcon(), i18n("Loading keys ..."), QStringLiteral("-libkleo-loading-keys"));
+ setCurrentIndex(0);
+ blockSignals(wasBlocked);
+ d->cache->startKeyListing();
+}
+
+void KeySelectionCombo::appendCustomItem(const QIcon &icon, const QString &text, const QVariant &data)
+{
+ d->proxyModel->appendItem(icon, text, data);
+}
+
+void KeySelectionCombo::prependCustomItem(const QIcon &icon, const QString &text, const QVariant &data)
+{
+ d->proxyModel->prependItem(icon, text, data);
+}
+
+void Kleo::KeySelectionCombo::setDefaultKey(const QString &fingerprint)
+{
+ d->defaultKey = fingerprint;
+}
+
+QString Kleo::KeySelectionCombo::defaultKey() const
+{
+ return d->defaultKey;
+}
+
+#include "keyselectioncombo.moc"
--- /dev/null
+/* This file is part of Kleopatra, the KDE keymanager
+ Copyright (c) 2016 Klarälvdalens Datakonsult AB
+
+ Kleopatra is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Kleopatra 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+*/
+
+#ifndef KLEO_KEYSELECTIONCOMBO_H
+#define KLEO_KEYSELECTIONCOMBO_H
+
+#include <QComboBox>
+
+#include <gpgme++/global.h>
+
+#include <kleo_export.h>
+#include <libkleo/enum.h>
+
+#include <memory>
+
+namespace GpgME
+{
+class Key;
+}
+
+namespace Kleo
+{
+class KeyFilter;
+class KeySelectionComboPrivate;
+
+class KLEO_EXPORT KeySelectionCombo : public QComboBox
+{
+ Q_OBJECT
+
+public:
+ explicit KeySelectionCombo(QWidget *parent = nullptr);
+ virtual ~KeySelectionCombo();
+
+ void setKeyFilter(const std::shared_ptr<const KeyFilter> &kf);
+ std::shared_ptr<const KeyFilter> keyFilter() const;
+
+ void setIdFilter(const QString &id);
+ QString idFilter() const;
+
+ void refreshKeys();
+
+ GpgME::Key currentKey() const;
+ void setCurrentKey(const GpgME::Key &key);
+ void setCurrentKey(const QString &fingerprint);
+
+ void setDefaultKey(const QString &fingerprint);
+ QString defaultKey() const;
+
+ void prependCustomItem(const QIcon &icon, const QString &text, const QVariant &data);
+ void appendCustomItem(const QIcon &icon, const QString &text, const QVariant &data);
+
+Q_SIGNALS:
+ void customItemSelected(const QVariant &data);
+ void currentKeyChanged(const GpgME::Key &key);
+ void keyListingFinished();
+
+protected:
+ virtual void init();
+
+private:
+ KeySelectionComboPrivate * const d;
+};
+
+}
+#endif
--- /dev/null
+/* -*- c++ -*-
+ keyselectiondialog.cpp
+
+ This file is part of libkleopatra, the KDE keymanagement library
+ Copyright (c) 2004 Klar�vdalens Datakonsult AB
+
+ Based on kpgpui.cpp
+ Copyright (C) 2001,2002 the KPGP authors
+ See file libkdenetwork/AUTHORS.kpgp for details
+
+ Libkleopatra is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ Libkleopatra 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#include "keyselectiondialog.h"
+
+#include "keylistview.h"
+#include "progressdialog.h"
+
+#include "libkleo/dn.h"
+#include <QDebug>
+#include "kleo_ui_debug.h"
+
+// gpgme++
+#include <gpgme++/key.h>
+#include <gpgme++/keylistresult.h>
+
+#include <qgpgme/keylistjob.h>
+#include <qgpgme/protocol.h>
+
+// KDE
+#include <KLocalizedString>
+#include <kwindowsystem.h>
+#include <kconfig.h>
+#include <kmessagebox.h>
+#include <qpushbutton.h>
+#include <kconfiggroup.h>
+#include <qmenu.h>
+#include <QLineEdit>
+
+// Qt
+#include <QCheckBox>
+#include <QLabel>
+#include <QTimer>
+#include <QDateTime>
+#include <QProcess>
+
+#include <QRegExp>
+#include <QPushButton>
+#include <QFrame>
+#include <QApplication>
+#include <QHBoxLayout>
+#include <QVBoxLayout>
+
+#include <algorithm>
+#include <iterator>
+
+#include <string.h>
+#include <qscrollbar.h>
+#include <KSharedConfig>
+#include <KConfigGroup>
+#include <QDialogButtonBox>
+
+static bool checkKeyUsage(const GpgME::Key &key, unsigned int keyUsage, QString *statusString = nullptr)
+{
+ auto setStatusString = [statusString](const QString &status) {
+ if (statusString) {
+ *statusString = status;
+ }
+ };
+
+ if (keyUsage & Kleo::KeySelectionDialog::ValidKeys) {
+ if (key.isInvalid()) {
+ if (key.keyListMode() & GpgME::Validate) {
+ qCDebug(KLEO_UI_LOG) << "key is invalid";
+ setStatusString(i18n("The key is not valid."));
+ return false;
+ } else {
+ qCDebug(KLEO_UI_LOG) << "key is invalid - ignoring";
+ }
+ }
+ if (key.isExpired()) {
+ qCDebug(KLEO_UI_LOG) << "key is expired";
+ setStatusString(i18n("The key is expired."));
+ return false;
+ } else if (key.isRevoked()) {
+ qCDebug(KLEO_UI_LOG) << "key is revoked";
+ setStatusString(i18n("The key is revoked."));
+ return false;
+ } else if (key.isDisabled()) {
+ qCDebug(KLEO_UI_LOG) << "key is disabled";
+ setStatusString(i18n("The key is disabled."));
+ return false;
+ }
+ }
+
+ if (keyUsage & Kleo::KeySelectionDialog::EncryptionKeys &&
+ !key.canEncrypt()) {
+ qCDebug(KLEO_UI_LOG) << "key can't encrypt";
+ setStatusString(i18n("The key is not designated for encryption."));
+ return false;
+ }
+ if (keyUsage & Kleo::KeySelectionDialog::SigningKeys &&
+ !key.canSign()) {
+ qCDebug(KLEO_UI_LOG) << "key can't sign";
+ setStatusString(i18n("The key is not designated for signing."));
+ return false;
+ }
+ if (keyUsage & Kleo::KeySelectionDialog::CertificationKeys &&
+ !key.canCertify()) {
+ qCDebug(KLEO_UI_LOG) << "key can't certify";
+ setStatusString(i18n("The key is not designated for certifying."));
+ return false;
+ }
+ if (keyUsage & Kleo::KeySelectionDialog::AuthenticationKeys &&
+ !key.canAuthenticate()) {
+ qCDebug(KLEO_UI_LOG) << "key can't authenticate";
+ setStatusString(i18n("The key is not designated for authentication."));
+ return false;
+ }
+
+ if (keyUsage & Kleo::KeySelectionDialog::SecretKeys &&
+ !(keyUsage & Kleo::KeySelectionDialog::PublicKeys) &&
+ !key.hasSecret()) {
+ qCDebug(KLEO_UI_LOG) << "key isn't secret";
+ setStatusString(i18n("The key is not secret."));
+ return false;
+ }
+
+ if (keyUsage & Kleo::KeySelectionDialog::TrustedKeys &&
+ key.protocol() == GpgME::OpenPGP &&
+ // only check this for secret keys for now.
+ // Seems validity isn't checked for secret keylistings...
+ !key.hasSecret()) {
+ std::vector<GpgME::UserID> uids = key.userIDs();
+ for (std::vector<GpgME::UserID>::const_iterator it = uids.begin(); it != uids.end(); ++it)
+ if (!it->isRevoked() && it->validity() >= GpgME::UserID::Marginal) {
+ return true;
+ }
+ qCDebug(KLEO_UI_LOG) << "key has no UIDs with validity >= Marginal";
+ setStatusString(i18n("The key is not trusted enough."));
+ return false;
+ }
+ // X.509 keys are always trusted, else they won't be the keybox.
+ // PENDING(marc) check that this ^ is correct
+
+ setStatusString(i18n("The key can be used."));
+ return true;
+}
+
+static bool checkKeyUsage(const std::vector<GpgME::Key> &keys, unsigned int keyUsage)
+{
+ for (std::vector<GpgME::Key>::const_iterator it = keys.begin(); it != keys.end(); ++it)
+ if (!checkKeyUsage(*it, keyUsage)) {
+ return false;
+ }
+ return true;
+}
+
+static inline QString time_t2string(time_t t)
+{
+ QDateTime dt;
+ dt.setTime_t(t);
+ return dt.toString();
+}
+
+namespace
+{
+
+class ColumnStrategy : public Kleo::KeyListView::ColumnStrategy
+{
+public:
+ ColumnStrategy(unsigned int keyUsage);
+
+ QString title(int col) const override;
+ int width(int col, const QFontMetrics &fm) const override;
+
+ QString text(const GpgME::Key &key, int col) const override;
+ QString toolTip(const GpgME::Key &key, int col) const override;
+ QIcon icon(const GpgME::Key &key, int col) const override;
+
+private:
+ const QIcon mKeyGoodPix, mKeyBadPix, mKeyUnknownPix, mKeyValidPix;
+ const unsigned int mKeyUsage;
+};
+
+static QString iconPath(const QString &name)
+{
+ return QStandardPaths::locate(QStandardPaths::GenericDataLocation, QStringLiteral("libkleopatra/pics/") + name + QStringLiteral(".png"));
+}
+
+ColumnStrategy::ColumnStrategy(unsigned int keyUsage)
+ : Kleo::KeyListView::ColumnStrategy(),
+ mKeyGoodPix(iconPath(QStringLiteral("key_ok"))),
+ mKeyBadPix(iconPath(QStringLiteral("key_bad"))),
+ mKeyUnknownPix(iconPath(QStringLiteral("key_unknown"))),
+ mKeyValidPix(iconPath(QStringLiteral("key"))),
+ mKeyUsage(keyUsage)
+{
+ if (keyUsage == 0)
+ qCWarning(KLEO_UI_LOG)
+ << "KeySelectionDialog: keyUsage == 0. You want to use AllKeys instead.";
+}
+
+QString ColumnStrategy::title(int col) const
+{
+ switch (col) {
+ case 0: return i18n("Key ID");
+ case 1: return i18n("User ID");
+ default: return QString();
+ }
+}
+
+int ColumnStrategy::width(int col, const QFontMetrics &fm) const
+{
+ if (col == 0) {
+ static const char hexchars[] = "0123456789ABCDEF";
+ int maxWidth = 0;
+ for (unsigned int i = 0; i < 16; ++i) {
+ maxWidth = qMax(fm.width(QLatin1Char(hexchars[i])), maxWidth);
+ }
+ return 8 * maxWidth + 2 * 16 /* KIconLoader::SizeSmall */;
+ }
+ return Kleo::KeyListView::ColumnStrategy::width(col, fm);
+}
+
+QString ColumnStrategy::text(const GpgME::Key &key, int col) const
+{
+ switch (col) {
+ case 0: {
+ if (key.shortKeyID()) {
+ return QString::fromUtf8(key.shortKeyID());
+ } else {
+ return xi18n("<placeholder>unknown</placeholder>");
+ }
+ }
+ break;
+ case 1: {
+ const char *uid = key.userID(0).id();
+ if (key.protocol() == GpgME::OpenPGP) {
+ return uid && *uid ? QString::fromUtf8(uid) : QString();
+ } else { // CMS
+ return Kleo::DN(uid).prettyDN();
+ }
+ }
+ break;
+ default: return QString();
+ }
+}
+
+QString ColumnStrategy::toolTip(const GpgME::Key &key, int) const
+{
+ const char *uid = key.userID(0).id();
+ const char *fpr = key.primaryFingerprint();
+ const char *issuer = key.issuerName();
+ const GpgME::Subkey subkey = key.subkey(0);
+ const QString expiry = subkey.neverExpires() ? i18n("never") : time_t2string(subkey.expirationTime());
+ const QString creation = time_t2string(subkey.creationTime());
+ QString keyStatusString;
+ if (!checkKeyUsage(key, mKeyUsage, &keyStatusString)) {
+ // Show the status in bold if there is a problem
+ keyStatusString = QLatin1String("<b>") % keyStatusString % QLatin1String("</b>");
+ }
+
+ QString html = QStringLiteral("<qt><p style=\"style='white-space:pre'\">");
+ if (key.protocol() == GpgME::OpenPGP) {
+ html += i18n("OpenPGP key for <b>%1</b>", uid ? QString::fromUtf8(uid) : i18n("unknown"));
+ } else {
+ html += i18n("S/MIME key for <b>%1</b>", uid ? Kleo::DN(uid).prettyDN() : i18n("unknown"));
+ }
+ html += QStringLiteral("</p><table>");
+
+ const auto addRow = [&html](const QString &name, const QString &value) {
+ html += QStringLiteral("<tr><td align=\"right\"><b>%1: </b></td><td>%2</td></tr>").arg(name, value);
+ };
+ addRow(i18nc("Key creation date", "Created"), creation);
+ addRow(i18nc("Key Expiration date", "Expiry"), expiry);
+ addRow(i18nc("Key fingerprint", "Fingerprint"), fpr ? QString::fromLatin1(fpr) : i18n("unknown"));
+ if (key.protocol() != GpgME::OpenPGP) {
+ addRow(i18nc("Key issuer", "Issuer"), issuer ? Kleo::DN(issuer).prettyDN() : i18n("unknown"));
+ }
+ addRow(i18nc("Key status", "Status"), keyStatusString);
+ html += QStringLiteral("</table></qt>");
+
+ return html;
+}
+
+QIcon ColumnStrategy::icon(const GpgME::Key &key, int col) const
+{
+ if (col != 0) {
+ return QIcon();
+ }
+ // this key did not undergo a validating keylisting yet:
+ if (!(key.keyListMode() & GpgME::Validate)) {
+ return mKeyUnknownPix;
+ }
+
+ if (!checkKeyUsage(key, mKeyUsage)) {
+ return mKeyBadPix;
+ }
+
+ if (key.protocol() == GpgME::CMS) {
+ return mKeyGoodPix;
+ }
+
+ switch (key.userID(0).validity()) {
+ default:
+ case GpgME::UserID::Unknown:
+ case GpgME::UserID::Undefined:
+ return mKeyUnknownPix;
+ case GpgME::UserID::Never:
+ return mKeyValidPix;
+ case GpgME::UserID::Marginal:
+ case GpgME::UserID::Full:
+ case GpgME::UserID::Ultimate:
+ return mKeyGoodPix;
+ }
+}
+
+}
+
+static const int sCheckSelectionDelay = 250;
+
+Kleo::KeySelectionDialog::KeySelectionDialog(const QString &title,
+ const QString &text,
+ const std::vector<GpgME::Key> &selectedKeys,
+ unsigned int keyUsage,
+ bool extendedSelection,
+ bool rememberChoice,
+ QWidget *parent,
+ bool modal)
+ : QDialog(parent),
+ mOpenPGPBackend(nullptr),
+ mSMIMEBackend(nullptr),
+ mRememberCB(nullptr),
+ mSelectedKeys(selectedKeys),
+ mKeyUsage(keyUsage),
+ mCurrentContextMenuItem(nullptr)
+{
+ setWindowTitle(title);
+ setModal(modal);
+ init(rememberChoice, extendedSelection, text, QString());
+}
+
+Kleo::KeySelectionDialog::KeySelectionDialog(const QString &title,
+ const QString &text,
+ const QString &initialQuery,
+ const std::vector<GpgME::Key> &selectedKeys,
+ unsigned int keyUsage,
+ bool extendedSelection,
+ bool rememberChoice,
+ QWidget *parent,
+ bool modal)
+ : QDialog(parent),
+ mOpenPGPBackend(nullptr),
+ mSMIMEBackend(nullptr),
+ mRememberCB(nullptr),
+ mSelectedKeys(selectedKeys),
+ mKeyUsage(keyUsage),
+ mSearchText(initialQuery),
+ mInitialQuery(initialQuery),
+ mCurrentContextMenuItem(nullptr)
+{
+ setWindowTitle(title);
+ setModal(modal);
+ init(rememberChoice, extendedSelection, text, initialQuery);
+}
+
+Kleo::KeySelectionDialog::KeySelectionDialog(const QString &title,
+ const QString &text,
+ const QString &initialQuery,
+ unsigned int keyUsage,
+ bool extendedSelection,
+ bool rememberChoice,
+ QWidget *parent,
+ bool modal)
+ : QDialog(parent),
+ mOpenPGPBackend(nullptr),
+ mSMIMEBackend(nullptr),
+ mRememberCB(nullptr),
+ mKeyUsage(keyUsage),
+ mSearchText(initialQuery),
+ mInitialQuery(initialQuery),
+ mCurrentContextMenuItem(nullptr)
+{
+ setWindowTitle(title);
+ setModal(modal);
+ init(rememberChoice, extendedSelection, text, initialQuery);
+}
+
+void Kleo::KeySelectionDialog::init(bool rememberChoice, bool extendedSelection,
+ const QString &text, const QString &initialQuery)
+{
+ QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
+ QVBoxLayout *mainLayout = new QVBoxLayout;
+ setLayout(mainLayout);
+ mOkButton = buttonBox->button(QDialogButtonBox::Ok);
+ mOkButton->setDefault(true);
+ mOkButton->setShortcut(Qt::CTRL | Qt::Key_Return);
+ QPushButton *user1Button = new QPushButton;
+ buttonBox->addButton(user1Button, QDialogButtonBox::ActionRole);
+ QPushButton *user2Button = new QPushButton;
+ buttonBox->addButton(user2Button, QDialogButtonBox::ActionRole);
+
+ if (mKeyUsage & OpenPGPKeys) {
+ mOpenPGPBackend = QGpgME::openpgp();
+ }
+ if (mKeyUsage & SMIMEKeys) {
+ mSMIMEBackend = QGpgME::smime();
+ }
+
+ mCheckSelectionTimer = new QTimer(this);
+ mStartSearchTimer = new QTimer(this);
+
+ QFrame *page = new QFrame(this);
+ mainLayout->addWidget(page);
+ mainLayout->addWidget(buttonBox);
+
+ mTopLayout = new QVBoxLayout(page);
+ mTopLayout->setMargin(0);
+
+ if (!text.isEmpty()) {
+ QLabel *textLabel = new QLabel(text, page);
+ textLabel->setWordWrap(true);
+
+ // Setting the size policy is necessary as a workaround for https://issues.kolab.org/issue4429
+ // and http://bugreports.qt.nokia.com/browse/QTBUG-8740
+ textLabel->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding);
+ connect(textLabel, &QLabel::linkActivated, this, &KeySelectionDialog::slotStartCertificateManager);
+ mTopLayout->addWidget(textLabel);
+ }
+
+ QPushButton *const searchExternalPB =
+ new QPushButton(i18n("Search for &External Certificates"), page);
+ mTopLayout->addWidget(searchExternalPB, 0, Qt::AlignLeft);
+ connect(searchExternalPB, &QAbstractButton::clicked, this, &KeySelectionDialog::slotStartSearchForExternalCertificates);
+ if (initialQuery.isEmpty()) {
+ searchExternalPB->hide();
+ }
+
+ QHBoxLayout *hlay = new QHBoxLayout();
+ mTopLayout->addLayout(hlay);
+
+ QLineEdit *le = new QLineEdit(page);
+ le->setClearButtonEnabled(true);
+ le->setText(initialQuery);
+
+ QLabel *lbSearchFor = new QLabel(i18n("&Search for:"), page);
+ lbSearchFor->setBuddy(le);
+
+ hlay->addWidget(lbSearchFor);
+ hlay->addWidget(le, 1);
+ le->setFocus();
+
+ connect(le, &QLineEdit::textChanged,
+ this, static_cast<void(KeySelectionDialog::*)(const QString &)>(&KeySelectionDialog::slotSearch));
+ connect(mStartSearchTimer, &QTimer::timeout, this, &KeySelectionDialog::slotFilter);
+
+ mKeyListView = new KeyListView(new ColumnStrategy(mKeyUsage), nullptr, page);
+ mKeyListView->setObjectName(QStringLiteral("mKeyListView"));
+ mKeyListView->header()->stretchLastSection();
+ mKeyListView->setRootIsDecorated(true);
+ mKeyListView->setSortingEnabled(true);
+ mKeyListView->header()->setSortIndicatorShown(true);
+ mKeyListView->header()->setSortIndicator(1, Qt::AscendingOrder); // sort by User ID
+ if (extendedSelection) {
+ mKeyListView->setSelectionMode(QAbstractItemView::ExtendedSelection);
+ }
+ mTopLayout->addWidget(mKeyListView, 10);
+
+ if (rememberChoice) {
+ mRememberCB = new QCheckBox(i18n("&Remember choice"), page);
+ mTopLayout->addWidget(mRememberCB);
+ mRememberCB->setWhatsThis(
+ i18n("<qt><p>If you check this box your choice will "
+ "be stored and you will not be asked again."
+ "</p></qt>"));
+ }
+
+ connect(mCheckSelectionTimer, &QTimer::timeout,
+ this, static_cast<void(KeySelectionDialog::*)()>(&KeySelectionDialog::slotCheckSelection));
+ connectSignals();
+
+ connect(mKeyListView, &Kleo::KeyListView::doubleClicked, this, &KeySelectionDialog::slotTryOk);
+ connect(mKeyListView, &KeyListView::contextMenu, this, &KeySelectionDialog::slotRMB);
+
+ user1Button->setText(i18n("&Reread Keys"));
+ user2Button->setText(i18n("&Start Certificate Manager"));
+ connect(user1Button, &QPushButton::clicked, this, &KeySelectionDialog::slotRereadKeys);
+ connect(user2Button, &QPushButton::clicked, this, [this]() { slotStartCertificateManager(); });
+ connect(mOkButton, &QPushButton::clicked, this, &KeySelectionDialog::slotOk);
+ connect(buttonBox->button(QDialogButtonBox::Cancel), &QPushButton::clicked, this, &KeySelectionDialog::slotCancel);
+ slotRereadKeys();
+ mTopLayout->activate();
+
+ if (qApp) {
+ QSize dialogSize(sizeHint());
+ KWindowSystem::setIcons(winId(), qApp->windowIcon().pixmap(32, 32),
+ qApp->windowIcon().pixmap(16, 16));
+
+ KConfigGroup dialogConfig(KSharedConfig::openConfig(), "Key Selection Dialog");
+ dialogSize = dialogConfig.readEntry("Dialog size", dialogSize);
+ const QByteArray headerState = dialogConfig.readEntry("header", QByteArray());
+ if (!headerState.isEmpty()) {
+ mKeyListView->header()->restoreState(headerState);
+ }
+ resize(dialogSize);
+ }
+}
+
+Kleo::KeySelectionDialog::~KeySelectionDialog()
+{
+ disconnectSignals();
+ KConfigGroup dialogConfig(KSharedConfig::openConfig(), "Key Selection Dialog");
+ dialogConfig.writeEntry("Dialog size", size());
+ dialogConfig.writeEntry("header", mKeyListView->header()->saveState());
+ dialogConfig.sync();
+}
+
+void Kleo::KeySelectionDialog::connectSignals()
+{
+ if (mKeyListView->isMultiSelection())
+ connect(mKeyListView, &QTreeWidget::itemSelectionChanged, this, &KeySelectionDialog::slotSelectionChanged);
+ else
+ connect(mKeyListView, static_cast<void(KeyListView::*)(KeyListViewItem*)>(&KeyListView::selectionChanged),
+ this, static_cast<void(KeySelectionDialog::*)(KeyListViewItem*)>(&KeySelectionDialog::slotCheckSelection));
+}
+
+void Kleo::KeySelectionDialog::disconnectSignals()
+{
+ if (mKeyListView->isMultiSelection())
+ disconnect(mKeyListView, &QTreeWidget::itemSelectionChanged,
+ this, &KeySelectionDialog::slotSelectionChanged);
+ else
+ disconnect(mKeyListView, static_cast<void(KeyListView::*)(KeyListViewItem*)>(&KeyListView::selectionChanged),
+ this, static_cast<void(KeySelectionDialog::*)(KeyListViewItem*)>(&KeySelectionDialog::slotCheckSelection));
+}
+
+const GpgME::Key &Kleo::KeySelectionDialog::selectedKey() const
+{
+ static const GpgME::Key null = GpgME::Key::null;
+ if (mKeyListView->isMultiSelection() || !mKeyListView->selectedItem()) {
+ return null;
+ }
+ return mKeyListView->selectedItem()->key();
+}
+
+QString Kleo::KeySelectionDialog::fingerprint() const
+{
+ return QLatin1String(selectedKey().primaryFingerprint());
+}
+
+QStringList Kleo::KeySelectionDialog::fingerprints() const
+{
+ QStringList result;
+ for (std::vector<GpgME::Key>::const_iterator it = mSelectedKeys.begin(); it != mSelectedKeys.end(); ++it)
+ if (const char *fpr = it->primaryFingerprint()) {
+ result.push_back(QLatin1String(fpr));
+ }
+ return result;
+}
+
+QStringList Kleo::KeySelectionDialog::pgpKeyFingerprints() const
+{
+ QStringList result;
+ for (std::vector<GpgME::Key>::const_iterator it = mSelectedKeys.begin(); it != mSelectedKeys.end(); ++it)
+ if (it->protocol() == GpgME::OpenPGP)
+ if (const char *fpr = it->primaryFingerprint()) {
+ result.push_back(QLatin1String(fpr));
+ }
+ return result;
+}
+
+QStringList Kleo::KeySelectionDialog::smimeFingerprints() const
+{
+ QStringList result;
+ for (std::vector<GpgME::Key>::const_iterator it = mSelectedKeys.begin(); it != mSelectedKeys.end(); ++it)
+ if (it->protocol() == GpgME::CMS)
+ if (const char *fpr = it->primaryFingerprint()) {
+ result.push_back(QLatin1String(fpr));
+ }
+ return result;
+}
+
+void Kleo::KeySelectionDialog::slotRereadKeys()
+{
+ mKeyListView->clear();
+ mListJobCount = 0;
+ mTruncated = 0;
+ mSavedOffsetY = mKeyListView->verticalScrollBar()->value();
+
+ disconnectSignals();
+ mKeyListView->setEnabled(false);
+
+ // FIXME: save current selection
+ if (mOpenPGPBackend) {
+ startKeyListJobForBackend(mOpenPGPBackend, std::vector<GpgME::Key>(), false /*non-validating*/);
+ }
+ if (mSMIMEBackend) {
+ startKeyListJobForBackend(mSMIMEBackend, std::vector<GpgME::Key>(), false /*non-validating*/);
+ }
+
+ if (mListJobCount == 0) {
+ mKeyListView->setEnabled(true);
+ KMessageBox::information(this,
+ i18n("No backends found for listing keys. "
+ "Check your installation."),
+ i18n("Key Listing Failed"));
+ connectSignals();
+ }
+}
+
+void Kleo::KeySelectionDialog::slotStartCertificateManager(const QString &query)
+{
+ QStringList args;
+
+ if (!query.isEmpty()) {
+ args << QStringLiteral("--search") << query;
+ }
+ if (!QProcess::startDetached(QStringLiteral("kleopatra"), args))
+ KMessageBox::error(this,
+ i18n("Could not start certificate manager; "
+ "please check your installation."),
+ i18n("Certificate Manager Error"));
+ else {
+ qCDebug(KLEO_UI_LOG) << "\nslotStartCertManager(): certificate manager started.";
+ }
+}
+
+#ifndef __KLEO_UI_SHOW_KEY_LIST_ERROR_H__
+#define __KLEO_UI_SHOW_KEY_LIST_ERROR_H__
+static void showKeyListError(QWidget *parent, const GpgME::Error &err)
+{
+ Q_ASSERT(err);
+ const QString msg = i18n("<qt><p>An error occurred while fetching "
+ "the keys from the backend:</p>"
+ "<p><b>%1</b></p></qt>",
+ QString::fromLocal8Bit(err.asString()));
+
+ KMessageBox::error(parent, msg, i18n("Key Listing Failed"));
+}
+#endif // __KLEO_UI_SHOW_KEY_LIST_ERROR_H__
+
+namespace
+{
+struct ExtractFingerprint {
+ QString operator()(const GpgME::Key &key)
+ {
+ return QLatin1String(key.primaryFingerprint());
+ }
+};
+}
+
+void Kleo::KeySelectionDialog::startKeyListJobForBackend(const QGpgME::Protocol *backend, const std::vector<GpgME::Key> &keys, bool validate)
+{
+ Q_ASSERT(backend);
+ QGpgME::KeyListJob *job = backend->keyListJob(false, false, validate); // local, w/o sigs, validation as givem
+ if (!job) {
+ return;
+ }
+
+ connect(job, &QGpgME::KeyListJob::result, this, &KeySelectionDialog::slotKeyListResult);
+ if (validate)
+ connect(job, &QGpgME::KeyListJob::nextKey, mKeyListView, &KeyListView::slotRefreshKey);
+ else
+ connect(job, &QGpgME::KeyListJob::nextKey, mKeyListView, &KeyListView::slotAddKey);
+
+ QStringList fprs;
+ std::transform(keys.begin(), keys.end(), std::back_inserter(fprs), ExtractFingerprint());
+ const GpgME::Error err = job->start(fprs, mKeyUsage & SecretKeys && !(mKeyUsage & PublicKeys));
+
+ if (err) {
+ return showKeyListError(this, err);
+ }
+
+#ifndef LIBKLEO_NO_PROGRESSDIALOG
+ // FIXME: create a MultiProgressDialog:
+ (void)new ProgressDialog(job, validate ? i18n("Checking selected keys...") : i18n("Fetching keys..."), this);
+#endif
+ ++mListJobCount;
+}
+
+static void selectKeys(Kleo::KeyListView *klv, const std::vector<GpgME::Key> &selectedKeys)
+{
+ klv->clearSelection();
+ if (selectedKeys.empty()) {
+ return;
+ }
+ for (std::vector<GpgME::Key>::const_iterator it = selectedKeys.begin(); it != selectedKeys.end(); ++it)
+ if (Kleo::KeyListViewItem *item = klv->itemByFingerprint(it->primaryFingerprint())) {
+ item->setSelected(true);
+ }
+}
+
+void Kleo::KeySelectionDialog::slotKeyListResult(const GpgME::KeyListResult &res)
+{
+ if (res.error()) {
+ showKeyListError(this, res.error());
+ } else if (res.isTruncated()) {
+ ++mTruncated;
+ }
+
+ if (--mListJobCount > 0) {
+ return; // not yet finished...
+ }
+
+ if (mTruncated > 0)
+ KMessageBox::information(this,
+ i18np("<qt>One backend returned truncated output.<p>"
+ "Not all available keys are shown</p></qt>",
+ "<qt>%1 backends returned truncated output.<p>"
+ "Not all available keys are shown</p></qt>",
+ mTruncated),
+ i18n("Key List Result"));
+
+ mKeyListView->flushKeys();
+
+ mKeyListView->setEnabled(true);
+ mListJobCount = mTruncated = 0;
+ mKeysToCheck.clear();
+
+ selectKeys(mKeyListView, mSelectedKeys);
+
+ slotFilter();
+
+ connectSignals();
+
+ slotSelectionChanged();
+
+ // restore the saved position of the contents
+ mKeyListView->verticalScrollBar()->setValue(mSavedOffsetY); mSavedOffsetY = 0;
+}
+
+void Kleo::KeySelectionDialog::slotSelectionChanged()
+{
+ qCDebug(KLEO_UI_LOG) << "KeySelectionDialog::slotSelectionChanged()";
+
+ // (re)start the check selection timer. Checking the selection is delayed
+ // because else drag-selection doesn't work very good (checking key trust
+ // is slow).
+ mCheckSelectionTimer->start(sCheckSelectionDelay);
+}
+
+namespace
+{
+struct AlreadyChecked {
+ bool operator()(const GpgME::Key &key) const
+ {
+ return key.keyListMode() & GpgME::Validate;
+ }
+};
+}
+
+void Kleo::KeySelectionDialog::slotCheckSelection(KeyListViewItem *item)
+{
+ qCDebug(KLEO_UI_LOG) << "KeySelectionDialog::slotCheckSelection()";
+
+ mCheckSelectionTimer->stop();
+
+ mSelectedKeys.clear();
+
+ if (!mKeyListView->isMultiSelection()) {
+ if (item) {
+ mSelectedKeys.push_back(item->key());
+ }
+ }
+
+ for (KeyListViewItem *it = mKeyListView->firstChild(); it; it = it->nextSibling())
+ if (it->isSelected()) {
+ mSelectedKeys.push_back(it->key());
+ }
+
+ mKeysToCheck.clear();
+ std::remove_copy_if(mSelectedKeys.begin(), mSelectedKeys.end(),
+ std::back_inserter(mKeysToCheck),
+ AlreadyChecked());
+ if (mKeysToCheck.empty()) {
+ mOkButton->setEnabled(!mSelectedKeys.empty() &&
+ checkKeyUsage(mSelectedKeys, mKeyUsage));
+ return;
+ }
+
+ // performed all fast checks - now for validating key listing:
+ startValidatingKeyListing();
+}
+
+void Kleo::KeySelectionDialog::startValidatingKeyListing()
+{
+ if (mKeysToCheck.empty()) {
+ return;
+ }
+
+ mListJobCount = 0;
+ mTruncated = 0;
+ mSavedOffsetY = mKeyListView->verticalScrollBar()->value();
+
+ disconnectSignals();
+ mKeyListView->setEnabled(false);
+
+ std::vector<GpgME::Key> smime, openpgp;
+ for (std::vector<GpgME::Key>::const_iterator it = mKeysToCheck.begin(); it != mKeysToCheck.end(); ++it)
+ if (it->protocol() == GpgME::OpenPGP) {
+ openpgp.push_back(*it);
+ } else {
+ smime.push_back(*it);
+ }
+
+ if (!openpgp.empty()) {
+ Q_ASSERT(mOpenPGPBackend);
+ startKeyListJobForBackend(mOpenPGPBackend, openpgp, true /*validate*/);
+ }
+ if (!smime.empty()) {
+ Q_ASSERT(mSMIMEBackend);
+ startKeyListJobForBackend(mSMIMEBackend, smime, true /*validate*/);
+ }
+
+ Q_ASSERT(mListJobCount > 0);
+}
+
+bool Kleo::KeySelectionDialog::rememberSelection() const
+{
+ return mRememberCB && mRememberCB->isChecked();
+}
+
+void Kleo::KeySelectionDialog::slotRMB(Kleo::KeyListViewItem *item, const QPoint &p)
+{
+ if (!item) {
+ return;
+ }
+
+ mCurrentContextMenuItem = item;
+
+ QMenu menu;
+ menu.addAction(i18n("Recheck Key"), this, &KeySelectionDialog::slotRecheckKey);
+ menu.exec(p);
+}
+
+void Kleo::KeySelectionDialog::slotRecheckKey()
+{
+ if (!mCurrentContextMenuItem || mCurrentContextMenuItem->key().isNull()) {
+ return;
+ }
+
+ mKeysToCheck.clear();
+ mKeysToCheck.push_back(mCurrentContextMenuItem->key());
+}
+
+void Kleo::KeySelectionDialog::slotTryOk()
+{
+ if (!mSelectedKeys.empty() && checkKeyUsage(mSelectedKeys, mKeyUsage)) {
+ slotOk();
+ }
+}
+
+void Kleo::KeySelectionDialog::slotOk()
+{
+ if (mCheckSelectionTimer->isActive()) {
+ slotCheckSelection();
+ }
+#if 0 //LAurent I don't understand why we returns here.
+ // button could be disabled again after checking the selected key1
+ if (!mSelectedKeys.empty() && checkKeyUsage(mSelectedKeys, mKeyUsage)) {
+ return;
+ }
+#endif
+ mStartSearchTimer->stop();
+ accept();
+}
+
+void Kleo::KeySelectionDialog::slotCancel()
+{
+ mCheckSelectionTimer->stop();
+ mStartSearchTimer->stop();
+ reject();
+}
+
+void Kleo::KeySelectionDialog::slotSearch(const QString &text)
+{
+ mSearchText = text.trimmed().toUpper();
+ slotSearch();
+}
+
+void Kleo::KeySelectionDialog::slotSearch()
+{
+ mStartSearchTimer->setSingleShot(true);
+ mStartSearchTimer->start(sCheckSelectionDelay);
+}
+
+void Kleo::KeySelectionDialog::slotFilter()
+{
+ if (mSearchText.isEmpty()) {
+ showAllItems();
+ return;
+ }
+
+ // OK, so we need to filter:
+ QRegExp keyIdRegExp(QLatin1String("(?:0x)?[A-F0-9]{1,8}"), Qt::CaseInsensitive);
+ if (keyIdRegExp.exactMatch(mSearchText)) {
+ if (mSearchText.startsWith(QStringLiteral("0X")))
+ // search for keyID only:
+ {
+ filterByKeyID(mSearchText.mid(2));
+ } else
+ // search for UID and keyID:
+ {
+ filterByKeyIDOrUID(mSearchText);
+ }
+ } else {
+ // search in UID:
+ filterByUID(mSearchText);
+ }
+}
+
+void Kleo::KeySelectionDialog::filterByKeyID(const QString &keyID)
+{
+ Q_ASSERT(keyID.length() <= 8);
+ Q_ASSERT(!keyID.isEmpty()); // regexp in slotFilter should prevent these
+ if (keyID.isEmpty()) {
+ showAllItems();
+ } else
+ for (KeyListViewItem *item = mKeyListView->firstChild(); item; item = item->nextSibling()) {
+ item->setHidden(!item->text(0).toUpper().startsWith(keyID));
+ }
+}
+
+static bool anyUIDMatches(const Kleo::KeyListViewItem *item, QRegExp &rx)
+{
+ if (!item) {
+ return false;
+ }
+
+ const std::vector<GpgME::UserID> uids = item->key().userIDs();
+ for (std::vector<GpgME::UserID>::const_iterator it = uids.begin(); it != uids.end(); ++it)
+ if (it->id() && rx.indexIn(QString::fromUtf8(it->id())) >= 0) {
+ return true;
+ }
+ return false;
+}
+
+void Kleo::KeySelectionDialog::filterByKeyIDOrUID(const QString &str)
+{
+ Q_ASSERT(!str.isEmpty());
+
+ // match beginnings of words:
+ QRegExp rx(QLatin1String("\\b") + QRegExp::escape(str), Qt::CaseInsensitive);
+
+ for (KeyListViewItem *item = mKeyListView->firstChild(); item; item = item->nextSibling()) {
+ item->setHidden(!item->text(0).toUpper().startsWith(str) && !anyUIDMatches(item, rx));
+ }
+
+}
+
+void Kleo::KeySelectionDialog::filterByUID(const QString &str)
+{
+ Q_ASSERT(!str.isEmpty());
+
+ // match beginnings of words:
+ QRegExp rx(QLatin1String("\\b") + QRegExp::escape(str), Qt::CaseInsensitive);
+
+ for (KeyListViewItem *item = mKeyListView->firstChild(); item; item = item->nextSibling()) {
+ item->setHidden(!anyUIDMatches(item, rx));
+ }
+}
+
+void Kleo::KeySelectionDialog::showAllItems()
+{
+ for (KeyListViewItem *item = mKeyListView->firstChild(); item; item = item->nextSibling()) {
+ item->setHidden(false);
+ }
+}
+
--- /dev/null
+/* -*- c++ -*-
+ keyselectiondialog.h
+
+ This file is part of libkleopatra, the KDE keymanagement library
+ Copyright (c) 2004 Klarälvdalens Datakonsult AB
+
+ Based on kpgpui.h
+ Copyright (C) 2001,2002 the KPGP authors
+ See file libkdenetwork/AUTHORS.kpgp for details
+
+ Libkleopatra is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ Libkleopatra 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#ifndef __KLEO_UI_KEYSELECTIONDIALOG_H__
+#define __KLEO_UI_KEYSELECTIONDIALOG_H__
+
+#include "kleo_export.h"
+
+#include <gpgme++/key.h>
+#include <qgpgme/protocol.h>
+
+#include <QDialog>
+
+#include <QPixmap>
+
+#include <vector>
+
+class QVBoxLayout;
+class QCheckBox;
+class QPixmap;
+class QTimer;
+class QRegExp;
+class QPoint;
+
+namespace Kleo
+{
+class KeyListView;
+class KeyListViewItem;
+}
+
+namespace GpgME
+{
+class KeyListResult;
+}
+
+namespace Kleo
+{
+
+class KLEO_EXPORT KeySelectionDialog : public QDialog
+{
+ Q_OBJECT
+public:
+
+ enum KeyUsage {
+ PublicKeys = 1,
+ SecretKeys = 2,
+ EncryptionKeys = 4,
+ SigningKeys = 8,
+ ValidKeys = 16,
+ TrustedKeys = 32,
+ CertificationKeys = 64,
+ AuthenticationKeys = 128,
+ OpenPGPKeys = 256,
+ SMIMEKeys = 512,
+ AllKeys = PublicKeys | SecretKeys | OpenPGPKeys | SMIMEKeys,
+ ValidEncryptionKeys = AllKeys | EncryptionKeys | ValidKeys,
+ ValidTrustedEncryptionKeys = AllKeys | EncryptionKeys | ValidKeys | TrustedKeys
+ };
+
+ KeySelectionDialog(const QString &title,
+ const QString &text,
+ const std::vector<GpgME::Key> &selectedKeys = std::vector<GpgME::Key>(),
+ unsigned int keyUsage = AllKeys,
+ bool extendedSelection = false,
+ bool rememberChoice = false,
+ QWidget *parent = nullptr,
+ bool modal = true);
+ KeySelectionDialog(const QString &title,
+ const QString &text,
+ const QString &initialPattern,
+ const std::vector<GpgME::Key> &selectedKeys,
+ unsigned int keyUsage = AllKeys,
+ bool extendedSelection = false,
+ bool rememberChoice = false,
+ QWidget *parent = nullptr,
+ bool modal = true);
+ KeySelectionDialog(const QString &title,
+ const QString &text,
+ const QString &initialPattern,
+ unsigned int keyUsage = AllKeys,
+ bool extendedSelection = false,
+ bool rememberChoice = false,
+ QWidget *parent = nullptr,
+ bool modal = true);
+ ~KeySelectionDialog();
+
+ /** Returns the key ID of the selected key in single selection mode.
+ Otherwise it returns a null key. */
+ const GpgME::Key &selectedKey() const;
+
+ QString fingerprint() const;
+
+ /** Returns a list of selected key IDs. */
+ const std::vector<GpgME::Key> &selectedKeys() const
+ {
+ return mSelectedKeys;
+ }
+
+ /// Return all the selected fingerprints
+ QStringList fingerprints() const;
+
+ /// Return the selected openpgp fingerprints
+ QStringList pgpKeyFingerprints() const;
+ /// Return the selected smime fingerprints
+ QStringList smimeFingerprints() const;
+
+ bool rememberSelection() const;
+
+ // Could be used by derived classes to insert their own widget
+ QVBoxLayout *topLayout() const
+ {
+ return mTopLayout;
+ }
+
+private Q_SLOTS:
+ void slotRereadKeys();
+ void slotStartCertificateManager(const QString &query = QString());
+ void slotStartSearchForExternalCertificates()
+ {
+ slotStartCertificateManager(mInitialQuery);
+ }
+ void slotKeyListResult(const GpgME::KeyListResult &);
+ void slotSelectionChanged();
+ void slotCheckSelection()
+ {
+ slotCheckSelection(0);
+ }
+ void slotCheckSelection(Kleo::KeyListViewItem *);
+ void slotRMB(Kleo::KeyListViewItem *, const QPoint &);
+ void slotRecheckKey();
+ void slotTryOk();
+ void slotOk();
+ void slotCancel();
+ void slotSearch(const QString &text);
+ void slotSearch();
+ void slotFilter();
+
+private:
+ void filterByKeyID(const QString &keyID);
+ void filterByKeyIDOrUID(const QString &keyID);
+ void filterByUID(const QString &uid);
+ void showAllItems();
+ bool anyChildMatches(const Kleo::KeyListViewItem *item, QRegExp &rx) const;
+
+ void connectSignals();
+ void disconnectSignals();
+
+ void startKeyListJobForBackend(const QGpgME::Protocol *, const std::vector<GpgME::Key> &, bool);
+ void startValidatingKeyListing();
+
+ void init(bool, bool, const QString &, const QString &);
+
+private:
+ QVBoxLayout *mTopLayout;
+ Kleo::KeyListView *mKeyListView;
+ const QGpgME::Protocol *mOpenPGPBackend;
+ const QGpgME::Protocol *mSMIMEBackend;
+ QCheckBox *mRememberCB;
+ std::vector<GpgME::Key> mSelectedKeys, mKeysToCheck;
+ unsigned int mKeyUsage;
+ QTimer *mCheckSelectionTimer;
+ QTimer *mStartSearchTimer;
+ // cross-eventloop temporaries:
+ QString mSearchText;
+ const QString mInitialQuery;
+ Kleo::KeyListViewItem *mCurrentContextMenuItem;
+ int mTruncated, mListJobCount, mSavedOffsetY;
+ QPushButton *mOkButton;
+};
+
+}
+
+#endif // __KLEO_UI_KEYSELECTIONDIALOG_H__
--- /dev/null
+/*
+ messagebox.cpp
+
+ This file is part of libkleopatra, the KDE keymanagement library
+ Copyright (c) 2004 Klarälvdalens Datakonsult AB
+
+ Libkleopatra is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ Libkleopatra 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#include "messagebox.h"
+#include "auditlogviewer.h"
+
+#include <QDebug>
+#include "kleo_ui_debug.h"
+
+#include <gpgme++/signingresult.h>
+#include <gpgme++/encryptionresult.h>
+#include <qgpgme/job.h>
+
+#include <QFileDialog>
+
+#include <QPushButton>
+#include <qdialog.h>
+#include <qdialogbuttonbox.h>
+#include <KLocalizedString>
+#include <QSaveFile>
+#include <kguiitem.h>
+
+#include <qtextstream.h>
+
+#include <gpg-error.h>
+#include <KSharedConfig>
+
+using namespace Kleo;
+using namespace Kleo::Private;
+using namespace GpgME;
+using namespace QGpgME;
+
+// static
+void MessageBox::auditLog(QWidget *parent, const Job *job, const QString &caption)
+{
+
+ if (!job) {
+ return;
+ }
+
+ if (!GpgME::hasFeature(AuditLogFeature, 0) || !job->isAuditLogSupported()) {
+ KMessageBox::information(parent, i18n("Your system does not have support for GnuPG Audit Logs"),
+ i18n("System Error"));
+ return;
+ }
+
+ const GpgME::Error err = job->auditLogError();
+
+ if (err && err.code() != GPG_ERR_NO_DATA) {
+ KMessageBox::information(parent, i18n("An error occurred while trying to retrieve the GnuPG Audit Log:\n%1",
+ QString::fromLocal8Bit(err.asString())),
+ i18n("GnuPG Audit Log Error"));
+ return;
+ }
+
+ const QString log = job->auditLogAsHtml();
+
+ if (log.isEmpty()) {
+ KMessageBox::information(parent, i18n("No GnuPG Audit Log available for this operation."),
+ i18n("No GnuPG Audit Log"));
+ return;
+ }
+
+ auditLog(parent, log, caption);
+}
+
+// static
+void MessageBox::auditLog(QWidget *parent, const QString &log, const QString &caption)
+{
+ AuditLogViewer *const alv = new AuditLogViewer(log, parent);
+ alv->setAttribute(Qt::WA_DeleteOnClose);
+ alv->setObjectName(QStringLiteral("alv"));
+ alv->setWindowTitle(caption);
+ alv->show();
+}
+
+// static
+void MessageBox::auditLog(QWidget *parent, const Job *job)
+{
+ auditLog(parent, job, i18n("GnuPG Audit Log Viewer"));
+}
+
+// static
+void MessageBox::auditLog(QWidget *parent, const QString &log)
+{
+ auditLog(parent, log, i18n("GnuPG Audit Log Viewer"));
+}
+
+static QString to_information_string(const SigningResult &result)
+{
+ return result.error()
+ ? i18n("Signing failed: %1", QString::fromLocal8Bit(result.error().asString()))
+ : i18n("Signing successful");
+}
+
+static QString to_error_string(const SigningResult &result)
+{
+ return to_information_string(result);
+}
+
+static QString to_information_string(const EncryptionResult &result)
+{
+ return result.error()
+ ? i18n("Encryption failed: %1", QString::fromLocal8Bit(result.error().asString()))
+ : i18n("Encryption successful");
+}
+
+static QString to_error_string(const EncryptionResult &result)
+{
+ return to_information_string(result);
+}
+
+static QString to_information_string(const SigningResult &sresult, const EncryptionResult &eresult)
+{
+ return to_information_string(sresult) + QLatin1Char('\n') + to_information_string(eresult);
+}
+
+static QString to_error_string(const SigningResult &sresult, const EncryptionResult &eresult)
+{
+ return to_information_string(sresult, eresult);
+}
+
+// static
+void MessageBox::information(QWidget *parent, const SigningResult &result, const Job *job, KMessageBox::Options options)
+{
+ information(parent, result, job, i18n("Signing Result"), options);
+}
+
+// static
+void MessageBox::information(QWidget *parent, const SigningResult &result, const Job *job, const QString &caption, KMessageBox::Options options)
+{
+ make(parent, QMessageBox::Information, to_information_string(result), job, caption, options);
+}
+
+// static
+void MessageBox::error(QWidget *parent, const SigningResult &result, const Job *job, KMessageBox::Options options)
+{
+ error(parent, result, job, i18n("Signing Error"), options);
+}
+
+// static
+void MessageBox::error(QWidget *parent, const SigningResult &result, const Job *job, const QString &caption, KMessageBox::Options options)
+{
+ make(parent, QMessageBox::Critical, to_error_string(result), job, caption, options);
+}
+
+// static
+void MessageBox::information(QWidget *parent, const EncryptionResult &result, const Job *job, KMessageBox::Options options)
+{
+ information(parent, result, job, i18n("Encryption Result"), options);
+}
+
+// static
+void MessageBox::information(QWidget *parent, const EncryptionResult &result, const Job *job, const QString &caption, KMessageBox::Options options)
+{
+ make(parent, QMessageBox::Information, to_information_string(result), job, caption, options);
+}
+
+// static
+void MessageBox::error(QWidget *parent, const EncryptionResult &result, const Job *job, KMessageBox::Options options)
+{
+ error(parent, result, job, i18n("Encryption Error"), options);
+}
+
+// static
+void MessageBox::error(QWidget *parent, const EncryptionResult &result, const Job *job, const QString &caption, KMessageBox::Options options)
+{
+ make(parent, QMessageBox::Critical, to_error_string(result), job, caption, options);
+}
+
+// static
+void MessageBox::information(QWidget *parent, const SigningResult &sresult, const EncryptionResult &eresult, const Job *job, KMessageBox::Options options)
+{
+ information(parent, sresult, eresult, job, i18n("Encryption Result"), options);
+}
+
+// static
+void MessageBox::information(QWidget *parent, const SigningResult &sresult, const EncryptionResult &eresult, const Job *job, const QString &caption, KMessageBox::Options options)
+{
+ make(parent, QMessageBox::Information, to_information_string(sresult, eresult), job, caption, options);
+}
+
+// static
+void MessageBox::error(QWidget *parent, const SigningResult &sresult, const EncryptionResult &eresult, const Job *job, KMessageBox::Options options)
+{
+ error(parent, sresult, eresult, job, i18n("Encryption Error"), options);
+}
+
+// static
+void MessageBox::error(QWidget *parent, const SigningResult &sresult, const EncryptionResult &eresult, const Job *job, const QString &caption, KMessageBox::Options options)
+{
+ make(parent, QMessageBox::Critical, to_error_string(sresult, eresult), job, caption, options);
+}
+
+// static
+bool MessageBox::showAuditLogButton(const QGpgME::Job *job)
+{
+ if (!job) {
+ qCDebug(KLEO_UI_LOG) << "not showing audit log button (no job instance)";
+ return false;
+ }
+ if (!GpgME::hasFeature(GpgME::AuditLogFeature, 0)) {
+ qCDebug(KLEO_UI_LOG) << "not showing audit log button (gpgme too old)";
+ return false;
+ }
+ if (!job->isAuditLogSupported()) {
+ qCDebug(KLEO_UI_LOG) << "not showing audit log button (not supported)";
+ return false;
+ }
+ if (job->auditLogError().code() == GPG_ERR_NO_DATA) {
+ qCDebug(KLEO_UI_LOG) << "not showing audit log button (GPG_ERR_NO_DATA)";
+ return false;
+ }
+ if (!job->auditLogError() && job->auditLogAsHtml().isEmpty()) {
+ qCDebug(KLEO_UI_LOG) << "not showing audit log button (success, but result empty)";
+ return false;
+ }
+ return true;
+}
+
+// static
+void MessageBox::make(QWidget *parent, QMessageBox::Icon icon, const QString &text, const Job *job, const QString &caption, KMessageBox::Options options)
+{
+ QDialog *dialog = new QDialog(parent);
+ dialog->setWindowTitle(caption);
+ QDialogButtonBox *box = new QDialogButtonBox(showAuditLogButton(job) ? (QDialogButtonBox::Yes | QDialogButtonBox::No) : QDialogButtonBox::Yes, parent);
+ QPushButton *yesButton = box->button(QDialogButtonBox::Yes);
+ yesButton->setDefault(true);
+ //dialog->setEscapeButton(KDialog::Yes);
+ dialog->setObjectName(QStringLiteral("error"));
+ dialog->setModal(true);
+ KGuiItem::assign(yesButton, KStandardGuiItem::ok());
+ if (GpgME::hasFeature(GpgME::AuditLogFeature, 0)) {
+ KGuiItem::assign(box->button(QDialogButtonBox::No), KGuiItem(i18n("&Show Audit Log")));
+ }
+
+ if (QDialogButtonBox::No == KMessageBox::createKMessageBox(dialog, box, icon, text, QStringList(), QString(), nullptr, options)) {
+ auditLog(nullptr, job);
+ }
+}
--- /dev/null
+/*
+ messagebox.h
+
+ This file is part of libkleopatra, the KDE keymanagement library
+ Copyright (c) 2007 Klarälvdalens Datakonsult AB
+
+ Libkleopatra is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ Libkleopatra 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#ifndef __KLEO_UI_MESSAGEBOX_H__
+#define __KLEO_UI_MESSAGEBOX_H__
+
+#include "kleo_export.h"
+
+#include <kmessagebox.h>
+
+#undef MessageBox // Windows
+
+namespace GpgME
+{
+class SigningResult;
+class EncryptionResult;
+}
+
+namespace QGpgME
+{
+class Job;
+}
+
+class QWidget;
+class QString;
+
+namespace Kleo
+{
+
+class KLEO_EXPORT MessageBox
+{
+public:
+ static void information(QWidget *parent, const GpgME::SigningResult &result, const QGpgME::Job *job, const QString &caption, KMessageBox::Options options = KMessageBox::Notify);
+ static void information(QWidget *parent, const GpgME::SigningResult &result, const QGpgME::Job *job, KMessageBox::Options options = KMessageBox::Notify);
+ static void error(QWidget *parent, const GpgME::SigningResult &result, const QGpgME::Job *job, const QString &caption, KMessageBox::Options options = KMessageBox::Notify);
+ static void error(QWidget *parent, const GpgME::SigningResult &result, const QGpgME::Job *job, KMessageBox::Options options = KMessageBox::Notify);
+
+ static void information(QWidget *parent, const GpgME::EncryptionResult &result, const QGpgME::Job *job, const QString &caption, KMessageBox::Options options = KMessageBox::Notify);
+ static void information(QWidget *parent, const GpgME::EncryptionResult &result, const QGpgME::Job *job, KMessageBox::Options options = KMessageBox::Notify);
+ static void error(QWidget *parent, const GpgME::EncryptionResult &result, const QGpgME::Job *job, const QString &caption, KMessageBox::Options options = KMessageBox::Notify);
+ static void error(QWidget *parent, const GpgME::EncryptionResult &result, const QGpgME::Job *job, KMessageBox::Options options = KMessageBox::Notify);
+
+ static void information(QWidget *parent, const GpgME::SigningResult &sresult, const GpgME::EncryptionResult &eresult, const QGpgME::Job *job, const QString &caption, KMessageBox::Options options = KMessageBox::Notify);
+ static void information(QWidget *parent, const GpgME::SigningResult &sresult, const GpgME::EncryptionResult &eresult, const QGpgME::Job *job, KMessageBox::Options options = KMessageBox::Notify);
+ static void error(QWidget *parent, const GpgME::SigningResult &sresult, const GpgME::EncryptionResult &eresult, const QGpgME::Job *job, const QString &caption, KMessageBox::Options options = KMessageBox::Notify);
+ static void error(QWidget *parent, const GpgME::SigningResult &sresult, const GpgME::EncryptionResult &eresult, const QGpgME::Job *job, KMessageBox::Options options = KMessageBox::Notify);
+
+ static void auditLog(QWidget *parent, const QGpgME::Job *job, const QString &caption);
+ static void auditLog(QWidget *parent, const QGpgME::Job *job);
+ static void auditLog(QWidget *parent, const QString &log, const QString &caption);
+ static void auditLog(QWidget *parent, const QString &log);
+
+ static bool showAuditLogButton(const QGpgME::Job *job);
+
+private:
+ static void make(QWidget *parent, QMessageBox::Icon icon, const QString &text, const QGpgME::Job *job, const QString &caption, KMessageBox::Options options);
+};
+
+}
+
+#endif /* __KLEO_UI_MESSAGEBOX_H__ */
--- /dev/null
+/*
+ progressbar.cpp
+
+ This file is part of libkleopatra, the KDE keymanagement library
+ Copyright (c) 2004 Klarälvdalens Datakonsult AB
+
+ Libkleopatra is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ Libkleopatra 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#include "progressbar.h"
+
+#include <QTimer>
+#include "kleo_ui_debug.h"
+
+static const int busyTimerTickInterval = 100;
+static const int busyTimerTickIncrement = 5;
+
+Kleo::ProgressBar::ProgressBar(QWidget *parent)
+ : QProgressBar(parent),
+ mRealProgress(-1)
+{
+ mBusyTimer = new QTimer(this);
+ connect(mBusyTimer, &QTimer::timeout, this, &ProgressBar::slotBusyTimerTick);
+ fixup(true);
+}
+
+void Kleo::ProgressBar::slotProgress(const QString &, int cur, int tot)
+{
+ setRange(cur, tot);
+}
+
+void Kleo::ProgressBar::slotProgress(const QString &, int, int cur, int tot)
+{
+ setRange(cur, tot);
+}
+
+void Kleo::ProgressBar::setMaximum(int total)
+{
+ qCDebug(KLEO_UI_LOG) << "Kleo::ProgressBar::setMaximum(" << total << " )";
+ if (total == maximum()) {
+ return;
+ }
+ QProgressBar::setMaximum(0);
+ fixup(false);
+}
+
+void Kleo::ProgressBar::setValue(int p)
+{
+ qCDebug(KLEO_UI_LOG) << "Kleo::ProgressBar::setValue(" << p << " )";
+ mRealProgress = p;
+ fixup(true);
+}
+
+void Kleo::ProgressBar::reset()
+{
+ mRealProgress = -1;
+ fixup(true);
+}
+
+void Kleo::ProgressBar::slotBusyTimerTick()
+{
+ fixup(false);
+ if (mBusyTimer->isActive()) {
+ QProgressBar::setValue(QProgressBar::value() + busyTimerTickIncrement);
+ }
+}
+
+void Kleo::ProgressBar::fixup(bool newValue)
+{
+ const int cur = QProgressBar::value();
+ const int tot = QProgressBar::maximum();
+
+ qCDebug(KLEO_UI_LOG) << "Kleo::ProgressBar::startStopBusyTimer() cur =" << cur << "; tot =" << tot << "; real =" << mRealProgress;
+
+ if ((newValue && mRealProgress < 0) || (!newValue && cur < 0)) {
+ qCDebug(KLEO_UI_LOG) << "(new value) switch to reset";
+ mBusyTimer->stop();
+ if (newValue) {
+ QProgressBar::reset();
+ }
+ mRealProgress = -1;
+ } else if (tot == 0) {
+ qCDebug(KLEO_UI_LOG) << "(new value) switch or stay in busy";
+ if (!mBusyTimer->isActive()) {
+ mBusyTimer->start(busyTimerTickInterval);
+ if (newValue) {
+ QProgressBar::setValue(mRealProgress);
+ }
+ }
+ } else {
+ qCDebug(KLEO_UI_LOG) << "(new value) normal progress";
+ mBusyTimer->stop();
+ if (QProgressBar::value() != mRealProgress) {
+ QProgressBar::setValue(mRealProgress);
+ }
+ }
+}
+
--- /dev/null
+/*
+ progressbar.h
+
+ This file is part of libkleopatra, the KDE keymanagement library
+ Copyright (c) 2004 Klarälvdalens Datakonsult AB
+
+ Libkleopatra is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ Libkleopatra 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#ifndef __KLEO_PROGRESSBAR_H__
+#define __KLEO_PROGRESSBAR_H__
+
+#include "kleo_export.h"
+#include <QProgressBar>
+class QTimer;
+
+namespace Kleo
+{
+
+/**
+ @short A QProgressBar with self-powered busy indicator
+*/
+class KLEO_EXPORT ProgressBar : public QProgressBar
+{
+ Q_OBJECT
+public:
+ explicit ProgressBar(QWidget *parent = nullptr);
+
+public Q_SLOTS:
+ void slotProgress(const QString &message, int type, int current, int total);
+ void slotProgress(const QString &message, int current, int total);
+ /*! reimplementation to support self-powered busy indicator */
+ void setValue(int progress);
+ /*! reimplementation to support self-powered busy indicator */
+ void setMaximum(int total);
+ /*! reimplementation to support self-powered busy indicator */
+ void reset();
+ /*! reimplementation to preserve visibility */
+ void setRange(int cur, int tot)
+ {
+ QProgressBar::setRange(cur, tot);
+ }
+
+private Q_SLOTS:
+ void slotBusyTimerTick();
+
+private:
+ void fixup(bool);
+
+private:
+ QTimer *mBusyTimer;
+ int mRealProgress;
+};
+}
+
+#endif // __KLEO_PROGRESSBAR_H__
--- /dev/null
+/*
+ progressdialog.cpp
+
+ This file is part of libkleopatra, the KDE keymanagement library
+ Copyright (c) 2004 Klarälvdalens Datakonsult AB
+
+ Libkleopatra is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ Libkleopatra 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#include "progressdialog.h"
+#include <QDebug>
+#include "kleo_ui_debug.h"
+
+#ifndef QT_NO_PROGRESSDIALOG
+
+#include "progressbar.h"
+
+#include <qgpgme/job.h>
+
+#include <KLocalizedString>
+
+#include <QTimer>
+
+
+Kleo::ProgressDialog::ProgressDialog(QGpgME::Job *job, const QString &baseText,
+ QWidget *creator, Qt::WindowFlags f)
+ : QProgressDialog(creator, f), mBaseText(baseText)
+{
+ Q_ASSERT(job);
+ setBar(new ProgressBar(this/*, "replacement progressbar in Kleo::ProgressDialog"*/));
+
+ setMinimumDuration(2000 /*ms*/);
+ setAutoReset(false);
+ setAutoClose(false);
+ setLabelText(baseText);
+ setModal(false);
+ setRange(0, 0); // activate busy indicator
+
+ connect(job, &QGpgME::Job::progress, this, &ProgressDialog::slotProgress);
+ connect(job, &QGpgME::Job::done, this, &ProgressDialog::slotDone);
+ connect(this, &QProgressDialog::canceled, job, &QGpgME::Job::slotCancel);
+
+ QTimer::singleShot(minimumDuration(), this, &ProgressDialog::forceShow);
+}
+
+Kleo::ProgressDialog::~ProgressDialog()
+{
+
+}
+
+void Kleo::ProgressDialog::setMinimumDuration(int ms)
+{
+ if (0 < ms && ms < minimumDuration()) {
+ QTimer::singleShot(ms, this, &ProgressDialog::forceShow);
+ }
+ QProgressDialog::setMinimumDuration(ms);
+}
+
+void Kleo::ProgressDialog::slotProgress(const QString &what, int current, int total)
+{
+ qCDebug(KLEO_UI_LOG) << "Kleo::ProgressDialog::slotProgress( \"" << what << "\","
+ << current << "," << total << ")";
+ if (mBaseText.isEmpty()) {
+ setLabelText(what);
+ } else if (what.isEmpty()) {
+ setLabelText(mBaseText);
+ } else {
+ setLabelText(i18n("%1: %2", mBaseText, what));
+ }
+ setRange(current, total);
+}
+
+void Kleo::ProgressDialog::slotDone()
+{
+ qCDebug(KLEO_UI_LOG) << "Kleo::ProgressDialog::slotDone()";
+ hide();
+ deleteLater();
+}
+
+#endif // QT_NO_PROGRESSDIALOG
--- /dev/null
+/*
+ progressdialog.h
+
+ This file is part of libkleopatra, the KDE keymanagement library
+ Copyright (c) 2004 Klarälvdalens Datakonsult AB
+
+ Libkleopatra is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ Libkleopatra 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#ifndef __KLEO_PROGRESSDIALOG_H__
+#define __KLEO_PROGRESSDIALOG_H__
+
+#include "kleo_export.h"
+#include <QProgressDialog>
+
+#ifndef QT_NO_PROGRESSDIALOG
+
+#include <QString>
+
+#include <qgpgme/job.h>
+namespace Kleo
+{
+
+/**
+ @short A progress dialog for Kleo::Jobs
+*/
+class KLEO_EXPORT ProgressDialog : public QProgressDialog
+{
+ Q_OBJECT
+public:
+ ProgressDialog(QGpgME::Job *job, const QString &baseText,
+ QWidget *widget = nullptr, Qt::WindowFlags f = 0);
+ ~ProgressDialog();
+
+public Q_SLOTS:
+ /*! reimplementation */
+ void setMinimumDuration(int ms);
+
+private Q_SLOTS:
+ void slotProgress(const QString &what, int current, int total);
+ void slotDone();
+private:
+ QString mBaseText;
+};
+
+}
+
+#else
+# ifndef LIBKLEO_NO_PROGRESSDIALOG
+# define LIBKLEO_NO_PROGRESSDIALOG
+# endif
+#endif // QT_NO_PROGRESSDIALOG
+
+#endif // __KLEO_PROGRESSDIALOG_H__
--- /dev/null
+/* -*- mode: c++; c-basic-offset:4 -*-
+ utils/classify.cpp
+
+ This file is part of Kleopatra, the KDE keymanager
+ Copyright (c) 2007 Klarälvdalens Datakonsult AB
+
+ Kleopatra is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Kleopatra 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#include "classify.h"
+
+#include "libkleo_debug.h"
+#include "kleo/checksumdefinition.h"
+
+#include <QString>
+#include <QStringList>
+#include <QFile>
+#include <QFileInfo>
+#include <QtAlgorithms>
+#include <QByteArrayMatcher>
+#include <QMap>
+#include <QRegularExpression>
+
+#include <gpgme++/data.h>
+#include <qgpgme/dataprovider.h>
+
+#include <iterator>
+#include <functional>
+
+using namespace Kleo::Class;
+
+namespace
+{
+
+const unsigned int ExamineContentHint = 0x8000;
+
+static const struct _classification {
+ char extension[4];
+ unsigned int classification;
+} classifications[] = {
+ // ordered by extension
+ { "arl", CMS | Binary | CertificateRevocationList },
+ { "asc", OpenPGP | Ascii | OpaqueSignature | DetachedSignature | CipherText | AnyCertStoreType | ExamineContentHint },
+ { "cer", CMS | Binary | Certificate },
+ { "crl", CMS | Binary | CertificateRevocationList },
+ { "crt", CMS | Binary | Certificate },
+ { "der", CMS | Binary | Certificate | CertificateRevocationList },
+ { "gpg", OpenPGP | Binary | OpaqueSignature | CipherText | AnyCertStoreType | ExamineContentHint},
+ { "p10", CMS | Ascii | CertificateRequest },
+ { "p12", CMS | Binary | ExportedPSM },
+ { "p7c", CMS | Binary | Certificate },
+ { "p7m", CMS | Binary | CipherText },
+ { "p7s", CMS | Binary | AnySignature },
+ { "pem", CMS | Ascii | AnyType | ExamineContentHint },
+ { "pfx", CMS | Binary | Certificate },
+ { "pgp", OpenPGP | Binary | OpaqueSignature | CipherText | AnyCertStoreType | ExamineContentHint},
+ { "sig", OpenPGP | AnyFormat | DetachedSignature },
+};
+
+static const QMap<GpgME::Data::Type, unsigned int> gpgmeTypeMap {
+ { GpgME::Data::PGPSigned, OpenPGP | OpaqueSignature },
+ /* PGPOther might be just an unencrypted unsigned pgp message. Decrypt
+ * would yield the plaintext anyway so for us this is CipherText. */
+ { GpgME::Data::PGPOther, OpenPGP | CipherText },
+ { GpgME::Data::PGPKey, OpenPGP | Certificate },
+ { GpgME::Data::CMSSigned, CMS | AnySignature },
+ { GpgME::Data::CMSEncrypted, CMS | CipherText },
+ /* See PGPOther */
+ { GpgME::Data::CMSOther, CMS | CipherText },
+ { GpgME::Data::X509Cert, CMS | Certificate},
+ { GpgME::Data::PKCS12, CMS | Binary | ExportedPSM },
+ { GpgME::Data::PGPEncrypted, OpenPGP | CipherText },
+ { GpgME::Data::PGPSignature, OpenPGP | DetachedSignature },
+};
+
+static const unsigned int defaultClassification = NoClass;
+
+template <template <typename U> class Op>
+struct ByExtension {
+ typedef bool result_type;
+
+ template <typename T>
+ bool operator()(const T &lhs, const T &rhs) const
+ {
+ return Op<int>()(qstricmp(lhs.extension, rhs.extension), 0);
+ }
+ template <typename T>
+ bool operator()(const T &lhs, const char *rhs) const
+ {
+ return Op<int>()(qstricmp(lhs.extension, rhs), 0);
+ }
+ template <typename T>
+ bool operator()(const char *lhs, const T &rhs) const
+ {
+ return Op<int>()(qstricmp(lhs, rhs.extension), 0);
+ }
+ bool operator()(const char *lhs, const char *rhs) const
+ {
+ return Op<int>()(qstricmp(lhs, rhs), 0);
+ }
+};
+
+static const struct _content_classification {
+ char content[28];
+ unsigned int classification;
+} content_classifications[] = {
+ { "CERTIFICATE", Certificate },
+ { "ENCRYPTED MESSAGE", CipherText },
+ { "MESSAGE", OpaqueSignature | CipherText },
+ { "PKCS12", ExportedPSM },
+ { "PRIVATE KEY BLOCK", ExportedPSM },
+ { "PUBLIC KEY BLOCK", Certificate },
+ { "SIGNATURE", DetachedSignature },
+ { "SIGNED MESSAGE", ClearsignedMessage | DetachedSignature },
+};
+
+template <template <typename U> class Op>
+struct ByContent {
+ typedef bool result_type;
+
+ const unsigned int N;
+ explicit ByContent(unsigned int n) : N(n) {}
+
+ template <typename T>
+ bool operator()(const T &lhs, const T &rhs) const
+ {
+ return Op<int>()(qstrncmp(lhs.content, rhs.content, N), 0);
+ }
+ template <typename T>
+ bool operator()(const T &lhs, const char *rhs) const
+ {
+ return Op<int>()(qstrncmp(lhs.content, rhs, N), 0);
+ }
+ template <typename T>
+ bool operator()(const char *lhs, const T &rhs) const
+ {
+ return Op<int>()(qstrncmp(lhs, rhs.content, N), 0);
+ }
+ bool operator()(const char *lhs, const char *rhs) const
+ {
+ return Op<int>()(qstrncmp(lhs, rhs, N), 0);
+ }
+};
+
+}
+
+unsigned int Kleo::classify(const QStringList &fileNames)
+{
+ if (fileNames.empty()) {
+ return 0;
+ }
+ unsigned int result = classify(fileNames.front());
+ for (const QString &fileName : fileNames) {
+ result &= classify(fileName);
+ }
+ return result;
+}
+
+static unsigned int classifyExtension(const QFileInfo fi)
+{
+ const _classification *const it = qBinaryFind(std::begin(classifications), std::end(classifications),
+ fi.suffix().toLatin1().constData(),
+ ByExtension<std::less>());
+ if (it != std::end(classifications))
+ if (!(it->classification & ExamineContentHint)) {
+ return it->classification;
+ }
+
+ return it == std::end(classifications) ? defaultClassification
+ : it->classification;
+}
+
+unsigned int Kleo::classify(const QString &filename)
+{
+ Q_ASSERT(std::is_sorted(std::begin(classifications), std::end(classifications), ByExtension<std::less>()));
+
+ const QFileInfo fi(filename);
+
+ if (!fi.exists()) {
+ return 0;
+ }
+
+ QFile file(filename);
+ /* The least reliable but always availabe classification */
+ const unsigned int extClass = classifyExtension(fi);
+ if (!GpgME::hasFeature(0, GpgME::BinaryAndFineGrainedIdentify) &&
+ !(extClass & ExamineContentHint)) {
+ /* GpgME's identfiy and our internal Classify were so incomplete
+ * before BinaryAndFineGrainedIdentify that we are better of
+ * to just use the file extension if ExamineContentHint is not set. */
+ qCDebug(LIBKLEO_LOG) << "Classified based only on extension.";
+ return extClass;
+ }
+
+ if (!file.open(QIODevice::ReadOnly)) {
+ qCDebug(LIBKLEO_LOG) << "Failed to open file: " << filename << " for classification.";
+ return extClass;
+ }
+
+ /* More reliable */
+ const unsigned int contentClass = classifyContent(file.read(4096));
+ if (contentClass != defaultClassification) {
+ qCDebug(LIBKLEO_LOG) << "Classified based on content.";
+ return contentClass;
+ }
+
+ /* Probably some X509 Stuff that GpgME in it's wisdom does not handle. Again
+ * file extension is probably more reliable as the last resort. */
+ qCDebug(LIBKLEO_LOG) << "No classification based on content.";
+ return extClass;
+}
+
+static unsigned int classifyContentInteral(const QByteArray &data)
+{
+ Q_ASSERT(std::is_sorted(std::begin(content_classifications), std::end(content_classifications), ByContent<std::less>(100)));
+
+ static const char beginString[] = "-----BEGIN ";
+ static const QByteArrayMatcher beginMatcher(beginString);
+ int pos = beginMatcher.indexIn(data);
+ if (pos < 0) {
+ return defaultClassification;
+ }
+ pos += sizeof beginString - 1;
+
+ const bool pgp = qstrncmp(data.data() + pos, "PGP ", 4) == 0;
+ if (pgp) {
+ pos += 4;
+ }
+
+ const int epos = data.indexOf("-----\n", pos);
+ if (epos < 0) {
+ return defaultClassification;
+ }
+
+ const _content_classification *const cit
+ = qBinaryFind(std::begin(content_classifications), std::end(content_classifications),
+ data.data() + pos, ByContent<std::less>(epos - pos));
+
+ if (cit != std::end(content_classifications)) {
+ return cit->classification | (pgp ? OpenPGP : CMS);
+ }
+ return defaultClassification;
+}
+
+unsigned int Kleo::classifyContent(const QByteArray &data)
+{
+ /* As of Version 1.6.0 GpgME does not distinguish between detached
+ * signatures and signatures. So we prefer kleo's classification and
+ * only use gpgme as fallback.
+ * With newer versions we have a better identify that really inspects
+ * the PGP Packages. Which is by far the most reliable classification.
+ * So this is already used for the default classification. File extensions
+ * and our classifyinternal is only used as a fallback.
+ */
+ if (!GpgME::hasFeature(0, GpgME::BinaryAndFineGrainedIdentify)) {
+ unsigned int ourClassification = classifyContentInteral(data);
+ if (ourClassification != defaultClassification) {
+ return ourClassification;
+ }
+ }
+ QGpgME::QByteArrayDataProvider dp(data);
+ GpgME::Data gpgmeData(&dp);
+ GpgME::Data::Type type = gpgmeData.type();
+
+ return gpgmeTypeMap.value(type, defaultClassification);
+}
+
+QString Kleo::printableClassification(unsigned int classification)
+{
+ QStringList parts;
+ if (classification & CMS) {
+ parts.push_back(QStringLiteral("CMS"));
+ }
+ if (classification & OpenPGP) {
+ parts.push_back(QStringLiteral("OpenPGP"));
+ }
+ if (classification & Binary) {
+ parts.push_back(QStringLiteral("Binary"));
+ }
+ if (classification & Ascii) {
+ parts.push_back(QStringLiteral("Ascii"));
+ }
+ if (classification & DetachedSignature) {
+ parts.push_back(QStringLiteral("DetachedSignature"));
+ }
+ if (classification & OpaqueSignature) {
+ parts.push_back(QStringLiteral("OpaqueSignature"));
+ }
+ if (classification & ClearsignedMessage) {
+ parts.push_back(QStringLiteral("ClearsignedMessage"));
+ }
+ if (classification & CipherText) {
+ parts.push_back(QStringLiteral("CipherText"));
+ }
+ if (classification & Certificate) {
+ parts.push_back(QStringLiteral("Certificate"));
+ }
+ if (classification & ExportedPSM) {
+ parts.push_back(QStringLiteral("ExportedPSM"));
+ }
+ if (classification & CertificateRequest) {
+ parts.push_back(QStringLiteral("CertificateRequest"));
+ }
+ return parts.join(QStringLiteral(", "));
+}
+
+static QString chopped(QString s, unsigned int n)
+{
+ s.chop(n);
+ return s;
+}
+
+/*!
+ \return the data file that corresponds to the signature file \a
+ signatureFileName, or QString(), if no such file can be found.
+*/
+QString Kleo::findSignedData(const QString &signatureFileName)
+{
+ if (!mayBeDetachedSignature(signatureFileName)) {
+ return QString();
+ }
+ const QString baseName = chopped(signatureFileName, 4);
+ return QFile::exists(baseName) ? baseName : QString();
+}
+
+/*!
+ \return all (existing) candiate signature files for \a signedDataFileName
+
+ Note that there can very well be more than one such file, e.g. if
+ the same data file was signed by both CMS and OpenPGP certificates.
+*/
+QStringList Kleo::findSignatures(const QString &signedDataFileName)
+{
+ QStringList result;
+ for (unsigned int i = 0, end = sizeof(classifications) / sizeof(_classification); i < end; ++i)
+ if (classifications[i].classification & DetachedSignature) {
+ const QString candiate = signedDataFileName + QLatin1Char('.') + QLatin1String(classifications[i].extension);
+ if (QFile::exists(candiate)) {
+ result.push_back(candiate);
+ }
+ }
+ return result;
+}
+
+/*!
+ \return the (likely) output filename for \a inputFileName, or
+ "inputFileName.out" if none can be determined.
+*/
+QString Kleo::outputFileName(const QString &inputFileName)
+{
+ const QFileInfo fi(inputFileName);
+
+ if (qBinaryFind(std::begin(classifications), std::end(classifications),
+ fi.suffix().toLatin1().constData(),
+ ByExtension<std::less>()) == std::end(classifications)) {
+ return inputFileName + QLatin1String(".out");
+ } else {
+ return chopped(inputFileName, 4);
+ }
+}
+
+/*!
+ \return the commonly used extension for files of type
+ \a classification, or NULL if none such exists.
+*/
+const char *Kleo::outputFileExtension(unsigned int classification, bool usePGPFileExt)
+{
+
+ if (classification & OpenPGP && usePGPFileExt) {
+ return "pgp";
+ }
+
+ for (unsigned int i = 0; i < sizeof classifications / sizeof * classifications; ++i)
+ if ((classifications[i].classification & classification) == classification) {
+ return classifications[i].extension;
+ }
+ return nullptr;
+}
+
+bool Kleo::isFingerprint(const QString &fpr)
+{
+ static QRegularExpression fprRegex(QStringLiteral("[0-9a-fA-F]{40}"));
+ return fprRegex.match(fpr).hasMatch();
+}
+
+bool Kleo::isChecksumFile(const QString &file)
+{
+ static bool initialized;
+ static QList<QRegExp> patterns;
+ const QFileInfo fi(file);
+ if (!fi.exists()) {
+ return false;
+ }
+ if (!initialized) {
+ Q_FOREACH (const std::shared_ptr<ChecksumDefinition> &cd, ChecksumDefinition::getChecksumDefinitions()) {
+ if (cd) {
+ Q_FOREACH (const QString &pattern, cd->patterns()) {
+#ifdef Q_OS_WIN
+ patterns << QRegExp(pattern, Qt::CaseInsensitive);
+#else
+ patterns << QRegExp(pattern, Qt::CaseSensitive);
+#endif
+ }
+ }
+ }
+ initialized = true;
+ }
+
+ const QString fileName = fi.fileName();
+ Q_FOREACH (const QRegExp &pattern, patterns) {
+ if (pattern.exactMatch(fileName)) {
+ return true;
+ }
+ }
+ return false;
+}
--- /dev/null
+/* -*- mode: c++; c-basic-offset:4 -*-
+ utils/classify.h
+
+ This file is part of Kleopatra, the KDE keymanager
+ Copyright (c) 2007 Klarälvdalens Datakonsult AB
+
+ Kleopatra is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Kleopatra 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#include <gpgme++/global.h>
+
+#ifndef LIBKLEO_CLASSIFY_H
+#define LIBKLEO_CLASSIFY_H
+
+#include <QByteArray>
+
+#include <kleo_export.h>
+
+class QString;
+class QStringList;
+
+namespace Kleo
+{
+
+namespace Class
+{
+enum {
+ NoClass = 0,
+
+ // protocol:
+ CMS = 0x01,
+ OpenPGP = 0x02,
+
+ AnyProtocol = OpenPGP | CMS,
+ ProtocolMask = AnyProtocol,
+
+ // format:
+ Binary = 0x04,
+ Ascii = 0x08,
+
+ AnyFormat = Binary | Ascii,
+ FormatMask = AnyFormat,
+
+ // type:
+ DetachedSignature = 0x010,
+ OpaqueSignature = 0x020,
+ ClearsignedMessage = 0x040,
+
+ AnySignature = DetachedSignature | OpaqueSignature | ClearsignedMessage,
+
+ CipherText = 0x080,
+
+ AnyMessageType = AnySignature | CipherText,
+
+ Importable = 0x100,
+ Certificate = 0x200 | Importable,
+ ExportedPSM = 0x400 | Importable,
+
+ AnyCertStoreType = Certificate | ExportedPSM,
+
+ CertificateRequest = 0x800,
+
+ CertificateRevocationList = 0x1000,
+
+ AnyType = AnyMessageType | AnyCertStoreType | CertificateRequest | CertificateRevocationList,
+ TypeMask = AnyType
+};
+}
+
+KLEO_EXPORT unsigned int classify(const QString &filename);
+KLEO_EXPORT unsigned int classify(const QStringList &fileNames);
+KLEO_EXPORT unsigned int classifyContent(const QByteArray &data);
+
+KLEO_EXPORT QString findSignedData(const QString &signatureFileName);
+KLEO_EXPORT QStringList findSignatures(const QString &signedDataFileName);
+KLEO_EXPORT QString outputFileName(const QString &input);
+
+/** Check if a string looks like a fingerprint (SHA1 sum) */
+KLEO_EXPORT bool isFingerprint(const QString &fpr);
+
+/** Check if a filename matches a ChecksumDefinition pattern */
+KLEO_EXPORT bool isChecksumFile(const QString &file);
+
+KLEO_EXPORT const char *outputFileExtension(unsigned int classification, bool usePGPFileExt);
+
+KLEO_EXPORT QString printableClassification(unsigned int classification);
+
+#define make_convenience( What, Mask ) \
+ inline bool is##What( const QString & filename ) { \
+ return ( classify( filename ) & Class::Mask ) == Class::What ; \
+ } \
+ inline bool is##What( const unsigned int classifcation ) { \
+ return ( classifcation & Class::Mask ) == Class::What ; \
+ } \
+ inline bool mayBe##What( const QString & filename ) { \
+ return classify( filename ) & Class::What ; \
+ } \
+ inline bool mayBe##What( const unsigned int classifcation ) { \
+ return classifcation & Class::What ; \
+ }
+
+make_convenience(CMS, ProtocolMask)
+make_convenience(OpenPGP, ProtocolMask)
+
+make_convenience(Binary, FormatMask)
+make_convenience(Ascii, FormatMask)
+
+make_convenience(DetachedSignature, TypeMask)
+make_convenience(OpaqueSignature, TypeMask)
+make_convenience(CipherText, TypeMask)
+make_convenience(AnyMessageType, TypeMask)
+make_convenience(CertificateRevocationList, TypeMask)
+make_convenience(AnyCertStoreType, TypeMask)
+#undef make_convenience
+
+inline GpgME::Protocol findProtocol(const unsigned int classifcation)
+{
+ if (isOpenPGP(classifcation)) {
+ return GpgME::OpenPGP;
+ } else if (isCMS(classifcation)) {
+ return GpgME::CMS;
+ } else {
+ return GpgME::UnknownProtocol;
+ }
+}
+inline GpgME::Protocol findProtocol(const QString &filename)
+{
+ return findProtocol(classify(filename));
+}
+
+}
+
+#endif /* __KLEOPATRA_UISERVER_CLASSIFY_H__ */
--- /dev/null
+/* -*- mode: c++; c-basic-offset:4 -*-
+ filesystemwatcher.cpp
+
+ This file is part of Kleopatra, the KDE keymanager
+ Copyright (c) 2008 Klarälvdalens Datakonsult AB
+
+ Kleopatra is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Kleopatra 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#include "filesystemwatcher.h"
+#include "kleo/stl_util.h"
+
+#include <libkleo_debug.h>
+
+#include <QFileSystemWatcher>
+#include <QString>
+#include <QStringList>
+#include <QTimer>
+#include <QDir>
+
+#include <set>
+
+using namespace Kleo;
+
+class FileSystemWatcher::Private
+{
+ FileSystemWatcher *const q;
+public:
+ explicit Private(FileSystemWatcher *qq, const QStringList &paths = QStringList());
+ ~Private()
+ {
+ delete m_watcher;
+ }
+
+ void onFileChanged(const QString &path);
+ void onDirectoryChanged(const QString &path);
+ void handleTimer();
+ void onTimeout();
+
+ void connectWatcher();
+
+ QFileSystemWatcher *m_watcher;
+ QTimer m_timer;
+ std::set<QString> m_seenPaths;
+ std::set<QString> m_cachedDirectories;
+ std::set<QString> m_cachedFiles;
+ QStringList m_paths, m_blacklist, m_whitelist;
+};
+
+FileSystemWatcher::Private::Private(FileSystemWatcher *qq, const QStringList &paths)
+ : q(qq),
+ m_watcher(nullptr),
+ m_paths(paths)
+{
+ m_timer.setSingleShot(true);
+ connect(&m_timer, SIGNAL(timeout()), q, SLOT(onTimeout()));
+}
+
+static bool is_matching(const QString &file, const QStringList &list)
+{
+ for (const QString &entry : list)
+ if (QRegExp(entry, Qt::CaseInsensitive, QRegExp::Wildcard).exactMatch(file)) {
+ return true;
+ }
+ return false;
+}
+
+static bool is_blacklisted(const QString &file, const QStringList &blacklist)
+{
+ return is_matching(file, blacklist);
+}
+
+static bool is_whitelisted(const QString &file, const QStringList &whitelist)
+{
+ if (whitelist.empty()) {
+ return true; // special case
+ }
+ return is_matching(file, whitelist);
+}
+
+void FileSystemWatcher::Private::onFileChanged(const QString &path)
+{
+ const QFileInfo fi(path);
+ if (is_blacklisted(fi.fileName(), m_blacklist)) {
+ return;
+ }
+ if (!is_whitelisted(fi.fileName(), m_whitelist)) {
+ return;
+ }
+ qCDebug(LIBKLEO_LOG) << path;
+ m_seenPaths.insert(path);
+ m_cachedFiles.insert(path);
+ handleTimer();
+}
+
+static QStringList list_dir_absolute(const QString &path, const QStringList &blacklist, const QStringList &whitelist)
+{
+ QDir dir(path);
+ QStringList entries = dir.entryList(QDir::AllEntries | QDir::NoDotAndDotDot);
+ QStringList::iterator end =
+ std::remove_if(entries.begin(), entries.end(),
+ [&blacklist](const QString &entry) {
+ return is_blacklisted(entry, blacklist);
+ });
+ if (!whitelist.empty())
+ end = std::remove_if(entries.begin(), end,
+ [&whitelist](const QString &entry) {
+ return !is_whitelisted(entry, whitelist);
+ });
+ entries.erase(end, entries.end());
+ std::sort(entries.begin(), entries.end());
+
+ std::transform(entries.begin(), entries.end(), entries.begin(),
+ [&dir](const QString &entry) {
+ return dir.absoluteFilePath(entry);
+ });
+
+ return entries;
+}
+
+static QStringList find_new_files(const QStringList ¤t, const std::set<QString> &seen)
+{
+ QStringList result;
+ std::set_difference(current.begin(), current.end(),
+ seen.begin(), seen.end(),
+ std::back_inserter(result));
+ return result;
+}
+
+void FileSystemWatcher::Private::onDirectoryChanged(const QString &path)
+{
+ const QStringList newFiles = find_new_files(list_dir_absolute(path, m_blacklist, m_whitelist), m_seenPaths);
+
+ if (newFiles.empty()) {
+ return;
+ }
+
+ qCDebug(LIBKLEO_LOG) << "newFiles" << newFiles;
+
+ m_cachedFiles.insert(newFiles.begin(), newFiles.end());
+ q->addPaths(newFiles);
+
+ m_cachedDirectories.insert(path);
+ handleTimer();
+}
+
+void FileSystemWatcher::Private::onTimeout()
+{
+ std::set<QString> dirs, files;
+
+ dirs.swap(m_cachedDirectories);
+ files.swap(m_cachedFiles);
+
+ if (dirs.empty() && files.empty()) {
+ return;
+ }
+
+ Q_EMIT q->triggered();
+
+ for (const QString &i : qAsConst(dirs)) {
+ Q_EMIT q->directoryChanged(i);
+ }
+ for (const QString &i : qAsConst(files)) {
+ Q_EMIT q->fileChanged(i);
+ }
+}
+
+void FileSystemWatcher::Private::handleTimer()
+{
+ if (m_timer.interval() == 0) {
+ onTimeout();
+ return;
+ }
+ m_timer.start();
+}
+
+void FileSystemWatcher::Private::connectWatcher()
+{
+ if (!m_watcher) {
+ return;
+ }
+ connect(m_watcher, SIGNAL(directoryChanged(QString)), q, SLOT(onDirectoryChanged(QString)));
+ connect(m_watcher, SIGNAL(fileChanged(QString)), q, SLOT(onFileChanged(QString)));
+}
+
+FileSystemWatcher::FileSystemWatcher(QObject *p)
+ : QObject(p), d(new Private(this))
+{
+ setEnabled(true);
+}
+
+FileSystemWatcher::FileSystemWatcher(const QStringList &paths, QObject *p)
+ : QObject(p), d(new Private(this, paths))
+{
+ setEnabled(true);
+}
+
+void FileSystemWatcher::setEnabled(bool enable)
+{
+ if (isEnabled() == enable) {
+ return;
+ }
+ if (enable) {
+ Q_ASSERT(!d->m_watcher);
+ d->m_watcher = new QFileSystemWatcher;
+ if (!d->m_paths.empty()) {
+ d->m_watcher->addPaths(d->m_paths);
+ }
+ d->connectWatcher();
+ } else {
+ Q_ASSERT(d->m_watcher);
+ delete d->m_watcher;
+ d->m_watcher = nullptr;
+ }
+}
+
+bool FileSystemWatcher::isEnabled() const
+{
+ return d->m_watcher != nullptr;
+}
+
+FileSystemWatcher::~FileSystemWatcher()
+{
+}
+
+void FileSystemWatcher::setDelay(int ms)
+{
+ Q_ASSERT(ms >= 0);
+ d->m_timer.setInterval(ms);
+}
+
+int FileSystemWatcher::delay() const
+{
+ return d->m_timer.interval();
+}
+
+void FileSystemWatcher::blacklistFiles(const QStringList &paths)
+{
+ d->m_blacklist += paths;
+ QStringList blacklisted;
+ d->m_paths.erase(kdtools::separate_if(d->m_paths.begin(), d->m_paths.end(),
+ std::back_inserter(blacklisted), d->m_paths.begin(),
+ [this](const QString &path) {
+ return is_blacklisted(path, d->m_blacklist);
+ }).second, d->m_paths.end());
+ if (d->m_watcher && !blacklisted.empty()) {
+ d->m_watcher->removePaths(blacklisted);
+ }
+}
+
+void FileSystemWatcher::whitelistFiles(const QStringList &patterns)
+{
+ d->m_whitelist += patterns;
+ // ### would be nice to add newly-matching paths here right away,
+ // ### but it's not as simple as blacklisting above, esp. since we
+ // ### don't want to subject addPath()'ed paths to whitelisting.
+}
+
+static QStringList resolve(const QStringList &paths, const QStringList &blacklist, const QStringList &whitelist)
+{
+ if (paths.empty()) {
+ return QStringList();
+ }
+ QStringList result;
+ for (const QString &path : paths)
+ if (QDir(path).exists()) {
+ result += list_dir_absolute(path, blacklist, whitelist);
+ }
+ return result + resolve(result, blacklist, whitelist);
+}
+
+void FileSystemWatcher::addPaths(const QStringList &paths)
+{
+ if (paths.empty()) {
+ return;
+ }
+ const QStringList newPaths = paths + resolve(paths, d->m_blacklist, d->m_whitelist);
+ if (!newPaths.empty()) {
+ qCDebug(LIBKLEO_LOG) << "adding\n " << newPaths.join(QStringLiteral("\n ")) << "\n/end";
+ }
+ d->m_paths += newPaths;
+ d->m_seenPaths.insert(newPaths.begin(), newPaths.end());
+ if (d->m_watcher && !newPaths.empty()) {
+ d->m_watcher->addPaths(newPaths);
+ }
+}
+
+void FileSystemWatcher::addPath(const QString &path)
+{
+ addPaths(QStringList(path));
+}
+
+void FileSystemWatcher::removePaths(const QStringList &paths)
+{
+ if (paths.empty()) {
+ return;
+ }
+ for (const QString &i : paths) {
+ d->m_paths.removeAll(i);
+ }
+ if (d->m_watcher) {
+ d->m_watcher->removePaths(paths);
+ }
+}
+
+void FileSystemWatcher::removePath(const QString &path)
+{
+ removePaths(QStringList(path));
+}
+
+#include "moc_filesystemwatcher.cpp"
--- /dev/null
+/* -*- mode: c++; c-basic-offset:4 -*-
+ filesystemwatcher.h
+
+ This file is part of Kleopatra, the KDE keymanager
+ Copyright (c) 2008 Klarälvdalens Datakonsult AB
+
+ Kleopatra is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Kleopatra 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#ifndef __KLEOPATRA_UTILS_FILESYSTEMWATCHER_H__
+#define __KLEOPATRA_UTILS_FILESYSTEMWATCHER_H__
+
+#include <QObject>
+
+#include <kleo_export.h>
+
+class QString;
+class QStringList;
+
+namespace Kleo
+{
+
+class KLEO_EXPORT FileSystemWatcher : public QObject
+{
+ Q_OBJECT
+public:
+ explicit FileSystemWatcher(QObject *parent = nullptr);
+ explicit FileSystemWatcher(const QStringList &paths, QObject *parent = nullptr);
+ ~FileSystemWatcher();
+
+ void setDelay(int ms);
+ int delay() const;
+
+ void setEnabled(bool enable);
+ bool isEnabled() const;
+
+ void addPaths(const QStringList &paths);
+ void addPath(const QString &path);
+
+ void blacklistFiles(const QStringList &patterns);
+ void whitelistFiles(const QStringList &patterns);
+
+ QStringList directories() const;
+ QStringList files() const;
+ void removePaths(const QStringList &path);
+ void removePath(const QString &path);
+
+Q_SIGNALS:
+ void directoryChanged(const QString &path);
+ void fileChanged(const QString &path);
+ void triggered();
+
+private:
+ class Private;
+ QScopedPointer<Private> const d;
+ Q_PRIVATE_SLOT(d, void onFileChanged(QString))
+ Q_PRIVATE_SLOT(d, void onDirectoryChanged(QString))
+ Q_PRIVATE_SLOT(d, void onTimeout())
+};
+}
+
+#endif // __KLEOPATRA_UTILS_FILESYSTEMWATCHER_H__
--- /dev/null
+/* -*- mode: c++; c-basic-offset: 4; indent-tabs-mode: nil; -*-
+
+ utils/formatting.cpp
+
+ This file is part of Kleopatra, the KDE keymanager
+ Copyright (c) 2007 Klarälvdalens Datakonsult AB
+
+ Kleopatra is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Kleopatra 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#include "formatting.h"
+#include "kleo/dn.h"
+
+#include <gpgme++/key.h>
+#include <gpgme++/importresult.h>
+
+#include <QGpgME/CryptoConfig>
+#include <QGpgME/Protocol>
+
+#include <KLocalizedString>
+#include <KEmailAddress>
+
+#include <QString>
+#include <QStringList>
+#include <QDateTime>
+#include <QTextDocument> // for Qt::escape
+#include <QLocale>
+#include <QIcon>
+
+#include <gpgme++/gpgmepp_version.h>
+#if GPGMEPP_VERSION > 0x10900
+# define GPGME_HAS_KEY_IS_DEVS
+#endif
+
+
+using namespace GpgME;
+using namespace Kleo;
+
+//
+// Name
+//
+
+QString Formatting::prettyName(int proto, const char *id, const char *name_, const char *comment_)
+{
+
+ if (proto == OpenPGP) {
+ const QString name = QString::fromUtf8(name_);
+ if (name.isEmpty()) {
+ return QString();
+ }
+ const QString comment = QString::fromUtf8(comment_);
+ if (comment.isEmpty()) {
+ return name;
+ }
+ return QStringLiteral("%1 (%2)").arg(name, comment);
+ }
+
+ if (proto == CMS) {
+ const DN subject(id);
+ const QString cn = subject[QStringLiteral("CN")].trimmed();
+ if (cn.isEmpty()) {
+ return subject.prettyDN();
+ }
+ return cn;
+ }
+
+ return QString();
+}
+
+QString Formatting::prettyNameAndEMail(int proto, const char *id, const char *name_, const char *email_, const char *comment_)
+{
+ return prettyNameAndEMail(proto, QString::fromUtf8(id), QString::fromUtf8(name_), prettyEMail(email_, id), QString::fromUtf8(comment_));
+}
+
+QString Formatting::prettyNameAndEMail(int proto, const QString &id, const QString &name, const QString &email, const QString &comment)
+{
+
+ if (proto == OpenPGP) {
+ if (name.isEmpty()) {
+ if (email.isEmpty()) {
+ return QString();
+ } else if (comment.isEmpty()) {
+ return QStringLiteral("<%1>").arg(email);
+ } else {
+ return QStringLiteral("(%2) <%1>").arg(email, comment);
+ }
+ }
+ if (email.isEmpty()) {
+ if (comment.isEmpty()) {
+ return name;
+ } else {
+ return QStringLiteral("%1 (%2)").arg(name, comment);
+ }
+ }
+ if (comment.isEmpty()) {
+ return QStringLiteral("%1 <%2>").arg(name, email);
+ } else {
+ return QStringLiteral("%1 (%3) <%2>").arg(name, email, comment);
+ }
+ }
+
+ if (proto == CMS) {
+ const DN subject(id);
+ const QString cn = subject[QStringLiteral("CN")].trimmed();
+ if (cn.isEmpty()) {
+ return subject.prettyDN();
+ }
+ return cn;
+ }
+ return QString();
+}
+
+QString Formatting::prettyUserID(const UserID &uid)
+{
+ if (uid.parent().protocol() == OpenPGP) {
+ return prettyNameAndEMail(uid);
+ }
+ const QByteArray id = QByteArray(uid.id()).trimmed();
+ if (id.startsWith('<')) {
+ return prettyEMail(uid.email(), uid.id());
+ }
+ if (id.startsWith('('))
+ // ### parse uri/dns:
+ {
+ return QString::fromUtf8(uid.id());
+ } else {
+ return DN(uid.id()).prettyDN();
+ }
+}
+
+QString Formatting::prettyKeyID(const char *id)
+{
+ if (!id) {
+ return QString();
+ }
+ return QLatin1String("0x") + QString::fromLatin1(id).toUpper();
+}
+
+QString Formatting::prettyNameAndEMail(const UserID &uid)
+{
+ return prettyNameAndEMail(uid.parent().protocol(), uid.id(), uid.name(), uid.email(), uid.comment());
+}
+
+QString Formatting::prettyNameAndEMail(const Key &key)
+{
+ return prettyNameAndEMail(key.userID(0));
+}
+
+QString Formatting::prettyName(const Key &key)
+{
+ return prettyName(key.userID(0));
+}
+
+QString Formatting::prettyName(const UserID &uid)
+{
+ return prettyName(uid.parent().protocol(), uid.id(), uid.name(), uid.comment());
+}
+
+QString Formatting::prettyName(const UserID::Signature &sig)
+{
+ return prettyName(OpenPGP, sig.signerUserID(), sig.signerName(), sig.signerComment());
+}
+
+//
+// EMail
+//
+
+QString Formatting::prettyEMail(const Key &key)
+{
+ for (unsigned int i = 0, end = key.numUserIDs(); i < end; ++i) {
+ const QString email = prettyEMail(key.userID(i));
+ if (!email.isEmpty()) {
+ return email;
+ }
+ }
+ return QString();
+}
+
+QString Formatting::prettyEMail(const UserID &uid)
+{
+ return prettyEMail(uid.email(), uid.id());
+}
+
+QString Formatting::prettyEMail(const UserID::Signature &sig)
+{
+ return prettyEMail(sig.signerEmail(), sig.signerUserID());
+}
+
+QString Formatting::prettyEMail(const char *email_, const char *id)
+{
+ QString email, name, comment;
+ if (email_ && KEmailAddress::splitAddress(QString::fromUtf8(email_),
+ name, email, comment) == KEmailAddress::AddressOk) {
+ return email;
+ } else {
+ return DN(id)[QStringLiteral("EMAIL")].trimmed();
+ }
+}
+
+//
+// Tooltip
+//
+
+namespace
+{
+
+static QString protect_whitespace(QString s)
+{
+ static const QLatin1Char SP(' '), NBSP('\xA0');
+ return s.replace(SP, NBSP);
+}
+
+template <typename T_arg>
+QString format_row(const QString &field, const T_arg &arg)
+{
+ return i18n("<tr><th>%1:</th><td>%2</td></tr>", protect_whitespace(field), arg);
+}
+QString format_row(const QString &field, const QString &arg)
+{
+ return i18n("<tr><th>%1:</th><td>%2</td></tr>", protect_whitespace(field), arg.toHtmlEscaped());
+}
+QString format_row(const QString &field, const char *arg)
+{
+ return format_row(field, QString::fromUtf8(arg));
+}
+
+QString format_keytype(const Key &key)
+{
+ const Subkey subkey = key.subkey(0);
+ if (key.hasSecret()) {
+ return i18n("%1-bit %2 (secret key available)", subkey.length(), QLatin1String(subkey.publicKeyAlgorithmAsString()));
+ } else {
+ return i18n("%1-bit %2", subkey.length(), QLatin1String(subkey.publicKeyAlgorithmAsString()));
+ }
+}
+
+QString format_keyusage(const Key &key)
+{
+ QStringList capabilities;
+ if (key.canReallySign()) {
+ if (key.isQualified()) {
+ capabilities.push_back(i18n("Signing (Qualified)"));
+ } else {
+ capabilities.push_back(i18n("Signing"));
+ }
+ }
+ if (key.canEncrypt()) {
+ capabilities.push_back(i18n("Encryption"));
+ }
+ if (key.canCertify()) {
+ capabilities.push_back(i18n("Certifying Identities"));
+ }
+ if (key.canAuthenticate()) {
+ capabilities.push_back(i18n("SSH Authentication"));
+ }
+ return capabilities.join(QStringLiteral(", "));
+}
+
+static QString time_t2string(time_t t)
+{
+ QDateTime dt;
+ dt.setTime_t(t);
+ return QLocale().toString(dt, QLocale::ShortFormat);
+}
+
+static QString make_red(const QString &txt)
+{
+ return QLatin1String("<font color=\"red\">") + txt.toHtmlEscaped() + QLatin1String("</font>");
+}
+
+}
+
+QString Formatting::toolTip(const Key &key, int flags)
+{
+ if (flags == 0 || (key.protocol() != CMS && key.protocol() != OpenPGP)) {
+ return QString();
+ }
+
+ const Subkey subkey = key.subkey(0);
+
+ QString result;
+ if (flags & Validity) {
+ if (key.protocol() == OpenPGP || (key.keyListMode() & Validate))
+ if (key.isRevoked()) {
+ result = make_red(i18n("Revoked"));
+ } else if (key.isExpired()) {
+ result = make_red(i18n("Expired"));
+ } else if (key.isDisabled()) {
+ result = i18n("Disabled");
+ } else {
+ unsigned int fullyTrusted = 0;
+ for (const auto &uid: key.userIDs()) {
+ if (uid.validity() >= UserID::Validity::Full) {
+ fullyTrusted++;
+ }
+ }
+ if (fullyTrusted == key.numUserIDs()) {
+ result = i18n("All identities are certified.");
+ const auto compliance = complianceStringForKey(key);
+ if (!compliance.isEmpty()) {
+ result += QStringLiteral("<br>") + compliance;
+ }
+ } else {
+ result = i18np("One identity is not certified.", "%1 identities are not certified.", key.numUserIDs() - fullyTrusted);
+ }
+ }
+ else {
+ result = i18n("The validity cannot be checked at the moment.");
+ }
+ }
+ if (flags == Validity) {
+ return result;
+ }
+
+ result += QLatin1String("<table border=\"0\">");
+ if (key.protocol() == CMS) {
+ if (flags & SerialNumber) {
+ result += format_row(i18n("Serial number"), key.issuerSerial());
+ }
+ if (flags & Issuer) {
+ result += format_row(i18n("Issuer"), key.issuerName());
+ }
+ }
+ if (flags & UserIDs) {
+ const std::vector<UserID> uids = key.userIDs();
+ if (!uids.empty())
+ result += format_row(key.protocol() == CMS
+ ? i18n("Subject")
+ : i18n("User-ID"), prettyUserID(uids.front()));
+ if (uids.size() > 1)
+ for (std::vector<UserID>::const_iterator it = uids.begin() + 1, end = uids.end(); it != end; ++it)
+ if (!it->isRevoked() && !it->isInvalid()) {
+ result += format_row(i18n("a.k.a."), prettyUserID(*it));
+ }
+ }
+ if (flags & ExpiryDates) {
+ result += format_row(i18n("Created"), time_t2string(subkey.creationTime()));
+
+ if (key.isExpired()) {
+ result += format_row(i18n("Expired"), time_t2string(subkey.expirationTime()));
+ } else if (!subkey.neverExpires()) {
+ result += format_row(i18n("Expires"), time_t2string(subkey.expirationTime()));
+ }
+ }
+ if (flags & CertificateType) {
+ result += format_row(i18n("Type"), format_keytype(key));
+ }
+ if (flags & CertificateUsage) {
+ result += format_row(i18n("Usage"), format_keyusage(key));
+ }
+ if (flags & KeyID) {
+ result += format_row(i18n("Key-ID"), QString::fromLatin1(key.shortKeyID()));
+ }
+ if (flags & Fingerprint) {
+ result += format_row(i18n("Fingerprint"), key.primaryFingerprint());
+ }
+ if (flags & OwnerTrust) {
+ if (key.protocol() == OpenPGP) {
+ result += format_row(i18n("Ownertrust"), ownerTrustShort(key));
+ } else if (key.isRoot()) {
+ result += format_row(i18n("Trusted issuer?"),
+ key.userID(0).validity() == UserID::Ultimate ? i18n("Yes") :
+ /* else */ i18n("No"));
+ }
+ }
+
+ if (flags & StorageLocation) {
+ if (const char *card = subkey.cardSerialNumber()) {
+ result += format_row(i18n("Stored"), i18nc("stored...", "on SmartCard with serial no. %1", QString::fromUtf8(card)));
+ } else {
+ result += format_row(i18n("Stored"), i18nc("stored...", "on this computer"));
+ }
+ }
+ result += QLatin1String("</table>");
+
+ return result;
+}
+
+//
+// Creation and Expiration
+//
+
+namespace
+{
+static QDate time_t2date(time_t t)
+{
+ if (!t) {
+ return QDate();
+ }
+ QDateTime dt;
+ dt.setTime_t(t);
+ return dt.date();
+}
+static QString date2string(const QDate &date)
+{
+ return QLocale().toString(date, QLocale::ShortFormat);
+}
+
+template <typename T>
+QString expiration_date_string(const T &tee)
+{
+ return tee.neverExpires() ? QString() : date2string(time_t2date(tee.expirationTime()));
+}
+template <typename T>
+QDate creation_date(const T &tee)
+{
+ return time_t2date(tee.creationTime());
+}
+template <typename T>
+QDate expiration_date(const T &tee)
+{
+ return time_t2date(tee.expirationTime());
+}
+}
+
+QString Formatting::expirationDateString(const Key &key)
+{
+ return expiration_date_string(key.subkey(0));
+}
+
+QString Formatting::expirationDateString(const Subkey &subkey)
+{
+ return expiration_date_string(subkey);
+}
+
+QString Formatting::expirationDateString(const UserID::Signature &sig)
+{
+ return expiration_date_string(sig);
+}
+
+QDate Formatting::expirationDate(const Key &key)
+{
+ return expiration_date(key.subkey(0));
+}
+
+QDate Formatting::expirationDate(const Subkey &subkey)
+{
+ return expiration_date(subkey);
+}
+
+QDate Formatting::expirationDate(const UserID::Signature &sig)
+{
+ return expiration_date(sig);
+}
+
+QString Formatting::creationDateString(const Key &key)
+{
+ return date2string(creation_date(key.subkey(0)));
+}
+
+QString Formatting::creationDateString(const Subkey &subkey)
+{
+ return date2string(creation_date(subkey));
+}
+
+QString Formatting::creationDateString(const UserID::Signature &sig)
+{
+ return date2string(creation_date(sig));
+}
+
+QDate Formatting::creationDate(const Key &key)
+{
+ return creation_date(key.subkey(0));
+}
+
+QDate Formatting::creationDate(const Subkey &subkey)
+{
+ return creation_date(subkey);
+}
+
+QDate Formatting::creationDate(const UserID::Signature &sig)
+{
+ return creation_date(sig);
+}
+
+//
+// Types
+//
+
+QString Formatting::displayName(Protocol p)
+{
+ if (p == CMS) {
+ return i18nc("X.509/CMS encryption standard", "X.509");
+ }
+ if (p == OpenPGP) {
+ return i18n("OpenPGP");
+ }
+ return i18nc("Unknown encryption protocol", "Unknown");
+}
+
+QString Formatting::type(const Key &key)
+{
+ return displayName(key.protocol());
+}
+
+QString Formatting::type(const Subkey &subkey)
+{
+ return QString::fromUtf8(subkey.publicKeyAlgorithmAsString());
+}
+
+//
+// Status / Validity
+//
+
+QString Formatting::ownerTrustShort(const Key &key)
+{
+ return ownerTrustShort(key.ownerTrust());
+}
+
+QString Formatting::ownerTrustShort(Key::OwnerTrust trust)
+{
+ switch (trust) {
+ case Key::Unknown: return i18nc("unknown trust level", "unknown");
+ case Key::Never: return i18n("untrusted");
+ case Key::Marginal: return i18nc("marginal trust", "marginal");
+ case Key::Full: return i18nc("full trust", "full");
+ case Key::Ultimate: return i18nc("ultimate trust", "ultimate");
+ case Key::Undefined: return i18nc("undefined trust", "undefined");
+ default:
+ Q_ASSERT(!"unexpected owner trust value");
+ break;
+ }
+ return QString();
+}
+
+QString Formatting::validityShort(const Subkey &subkey)
+{
+ if (subkey.isRevoked()) {
+ return i18n("revoked");
+ }
+ if (subkey.isExpired()) {
+ return i18n("expired");
+ }
+ if (subkey.isDisabled()) {
+ return i18n("disabled");
+ }
+ if (subkey.isInvalid()) {
+ return i18n("invalid");
+ }
+ return i18nc("as in good/valid signature", "good");
+}
+
+QString Formatting::validityShort(const UserID &uid)
+{
+ if (uid.isRevoked()) {
+ return i18n("revoked");
+ }
+ if (uid.isInvalid()) {
+ return i18n("invalid");
+ }
+ switch (uid.validity()) {
+ case UserID::Unknown: return i18nc("unknown trust level", "unknown");
+ case UserID::Undefined: return i18nc("undefined trust", "undefined");
+ case UserID::Never: return i18n("untrusted");
+ case UserID::Marginal: return i18nc("marginal trust", "marginal");
+ case UserID::Full: return i18nc("full trust", "full");
+ case UserID::Ultimate: return i18nc("ultimate trust", "ultimate");
+ }
+ return QString();
+}
+
+QString Formatting::validityShort(const UserID::Signature &sig)
+{
+ switch (sig.status()) {
+ case UserID::Signature::NoError:
+ if (!sig.isInvalid()) {
+ if (sig.certClass() > 0) {
+ return i18n("class %1", sig.certClass());
+ } else {
+ return i18nc("good/valid signature", "good");
+ }
+ }
+#if QT_VERSION >= QT_VERSION_CHECK(5,8,0)
+ Q_FALLTHROUGH();
+#endif
+ // fall through:
+ case UserID::Signature::GeneralError:
+ return i18n("invalid");
+ case UserID::Signature::SigExpired: return i18n("expired");
+ case UserID::Signature::KeyExpired: return i18n("certificate expired");
+ case UserID::Signature::BadSignature: return i18nc("fake/invalid signature", "bad");
+ case UserID::Signature::NoPublicKey: return QString();
+ }
+ return QString();
+}
+
+QString Formatting::formatKeyLink(const Key &key)
+{
+ if (key.isNull()) {
+ return QString();
+ }
+ return QStringLiteral("<a href=\"key:%1\">%2</a>").arg(QLatin1String(key.primaryFingerprint()), Formatting::prettyName(key));
+}
+
+QString Formatting::formatForComboBox(const GpgME::Key &key)
+{
+ const QString name = prettyName(key);
+ QString mail = prettyEMail(key);
+ if (!mail.isEmpty()) {
+ mail = QLatin1Char('<') + mail + QLatin1Char('>');
+ }
+ return i18nc("name, email, key id", "%1 %2 (%3)", name, mail, QLatin1String(key.shortKeyID())).simplified();
+}
+
+namespace
+{
+
+static QString keyToString(const Key &key)
+{
+
+ Q_ASSERT(!key.isNull());
+
+ const QString email = Formatting::prettyEMail(key);
+ const QString name = Formatting::prettyName(key);
+
+ if (name.isEmpty()) {
+ return email;
+ } else if (email.isEmpty()) {
+ return name;
+ } else {
+ return QStringLiteral("%1 <%2>").arg(name, email);
+ }
+}
+
+}
+
+const char *Formatting::summaryToString(const Signature::Summary summary)
+{
+ if (summary & Signature::Red) {
+ return "RED";
+ }
+ if (summary & Signature::Green) {
+ return "GREEN";
+ }
+ return "YELLOW";
+}
+
+QString Formatting::signatureToString(const Signature &sig, const Key &key)
+{
+ if (sig.isNull()) {
+ return QString();
+ }
+
+ const bool red = (sig.summary() & Signature::Red);
+ const bool valid = (sig.summary() & Signature::Valid);
+
+ if (red)
+ if (key.isNull())
+ if (const char *fpr = sig.fingerprint()) {
+ return i18n("Bad signature by unknown certificate %1: %2", QString::fromLatin1(fpr), QString::fromLocal8Bit(sig.status().asString()));
+ } else {
+ return i18n("Bad signature by an unknown certificate: %1", QString::fromLocal8Bit(sig.status().asString()));
+ }
+ else {
+ return i18n("Bad signature by %1: %2", keyToString(key), QString::fromLocal8Bit(sig.status().asString()));
+ }
+
+ else if (valid)
+ if (key.isNull())
+ if (const char *fpr = sig.fingerprint()) {
+ return i18n("Good signature by unknown certificate %1.", QString::fromLatin1(fpr));
+ } else {
+ return i18n("Good signature by an unknown certificate.");
+ }
+ else {
+ return i18n("Good signature by %1.", keyToString(key));
+ }
+
+ else if (key.isNull())
+ if (const char *fpr = sig.fingerprint()) {
+ return i18n("Invalid signature by unknown certificate %1: %2", QString::fromLatin1(fpr), QString::fromLocal8Bit(sig.status().asString()));
+ } else {
+ return i18n("Invalid signature by an unknown certificate: %1", QString::fromLocal8Bit(sig.status().asString()));
+ }
+ else {
+ return i18n("Invalid signature by %1: %2", keyToString(key), QString::fromLocal8Bit(sig.status().asString()));
+ }
+}
+
+//
+// ImportResult
+//
+
+QString Formatting::importMetaData(const Import &import, const QStringList &ids)
+{
+ const QString result = importMetaData(import);
+ if (result.isEmpty()) {
+ return QString();
+ } else
+ return result + QLatin1Char('\n') +
+ i18n("This certificate was imported from the following sources:") + QLatin1Char('\n') +
+ ids.join(QLatin1Char('\n'));
+}
+
+QString Formatting::importMetaData(const Import &import)
+{
+
+ if (import.isNull()) {
+ return QString();
+ }
+
+ if (import.error().isCanceled()) {
+ return i18n("The import of this certificate was canceled.");
+ }
+ if (import.error())
+ return i18n("An error occurred importing this certificate: %1",
+ QString::fromLocal8Bit(import.error().asString()));
+
+ const unsigned int status = import.status();
+ if (status & Import::NewKey)
+ return (status & Import::ContainedSecretKey)
+ ? i18n("This certificate was new to your keystore. The secret key is available.")
+ : i18n("This certificate is new to your keystore.");
+
+ QStringList results;
+ if (status & Import::NewUserIDs) {
+ results.push_back(i18n("New user-ids were added to this certificate by the import."));
+ }
+ if (status & Import::NewSignatures) {
+ results.push_back(i18n("New signatures were added to this certificate by the import."));
+ }
+ if (status & Import::NewSubkeys) {
+ results.push_back(i18n("New subkeys were added to this certificate by the import."));
+ }
+
+ return results.empty()
+ ? i18n("The import contained no new data for this certificate. It is unchanged.")
+ : results.join(QLatin1Char('\n'));
+}
+
+//
+// Overview in CertificateDetailsDialog
+//
+
+QString Formatting::formatOverview(const Key &key)
+{
+ return toolTip(key, AllOptions);
+}
+
+QString Formatting::usageString(const Subkey &sub)
+{
+ QStringList usageStrings;
+ if (sub.canCertify()) {
+ usageStrings << i18n("Certify");
+ }
+ if (sub.canSign()) {
+ usageStrings << i18n("Sign");
+ }
+ if (sub.canEncrypt()) {
+ usageStrings << i18n("Encrypt");
+ }
+ if (sub.canAuthenticate()) {
+ usageStrings << i18n("Authenticate");
+ }
+ return usageStrings.join(QStringLiteral(", "));
+}
+
+QString Formatting::summaryLine(const Key &key)
+{
+ return keyToString(key) + QLatin1Char(' ') +
+ i18nc("(validity, protocol, creation date)",
+ "(%1, %2, created: %3)",
+ Formatting::complianceStringShort(key),
+ displayName(key.protocol()),
+ Formatting::creationDateString(key));
+}
+
+// Icon for certificate selection indication
+QIcon Formatting::iconForUid(const UserID &uid)
+{
+ switch (uid.validity()) {
+ case UserID::Ultimate:
+ case UserID::Full:
+ case UserID::Marginal:
+ return QIcon::fromTheme(QStringLiteral("emblem-success"));
+ case UserID::Never:
+ return QIcon::fromTheme(QStringLiteral("emblem-error"));
+ case UserID::Undefined:
+ case UserID::Unknown:
+ default:
+ return QIcon::fromTheme(QStringLiteral("emblem-information"));
+ }
+}
+
+QString Formatting::validity(const UserID &uid)
+{
+ switch (uid.validity()) {
+ case UserID::Ultimate:
+ return i18n("The certificate is marked as your own.");
+ case UserID::Full:
+ return i18n("The certificate belongs to this recipient.");
+ case UserID::Marginal:
+ return i18n("The trust model indicates marginally that the certificate belongs to this recipient.");
+ case UserID::Never:
+ return i18n("This certificate should not be used.");
+ case UserID::Undefined:
+ case UserID::Unknown:
+ default:
+ return i18n("There is no indication that this certificate belongs to this recipient.");
+ }
+}
+
+bool Formatting::uidsHaveFullValidity(const GpgME::Key &key)
+{
+ for (const auto &uid: key.userIDs()) {
+ if (uid.validity() < UserID::Validity::Full) {
+ return false;
+ }
+ }
+ return true;
+}
+
+QString Formatting::complianceMode()
+{
+ const QGpgME::CryptoConfig *const config = QGpgME::cryptoConfig();
+ if (!config) {
+ return QString();
+ }
+ const QGpgME::CryptoConfigEntry *const entry = config->entry(QStringLiteral("gpg"), QStringLiteral("Configuration"), QStringLiteral("compliance"));
+
+ if (!entry || entry->stringValue() == QStringLiteral("gnupg")) {
+ return QString();
+ }
+ return entry->stringValue();
+}
+
+bool Formatting::isKeyDeVs(const GpgME::Key &key)
+{
+#ifdef GPGME_HAS_KEY_IS_DEVS
+ for (const auto &sub: key.subkeys()) {
+ if (sub.isExpired() || sub.isRevoked()) {
+ // Ignore old subkeys
+ continue;
+ }
+ if (!sub.isDeVs()) {
+ return false;
+ }
+ }
+ return true;
+#else
+ return false;
+#endif
+}
+
+QString Formatting::complianceStringForKey(const GpgME::Key &key)
+{
+ // There will likely be more in the future for other institutions
+ // for now we only have DE-VS
+ if (complianceMode() == QStringLiteral("de-vs")) {
+ if (uidsHaveFullValidity(key) && isKeyDeVs(key)) {
+ return i18nc("VS-conforming is a German standard for restricted documents. For which special restrictions about algorithms apply. The string describes if a key is compliant with that..",
+ "May be used for VS-compliant communication.");
+ } else {
+ return i18nc("VS-conforming is a German standard for restricted documents. For which special restrictions about algorithms apply. The string describes if a key is compliant to that..",
+ "May <b>not</b> be used for VS-compliant communication.");
+ }
+ }
+ return QString();
+}
+
+QString Formatting::complianceStringShort(const GpgME::Key &key)
+{
+ if (Formatting::uidsHaveFullValidity(key)) {
+ if (complianceMode() == QStringLiteral("de-vs")
+ && Formatting::isKeyDeVs(key)) {
+ return QStringLiteral("★ ") +
+ i18nc("VS-conforming is a German standard for restricted documents for which special restrictions about algorithms apply. The string states that a key is compliant with that.",
+ "VS-compliant");
+ }
+ return i18nc("As in all user IDs are valid.", "certified");
+ }
+
+ return i18nc("As in not all user IDs are valid.", "not certified");
+}
--- /dev/null
+/* -*- mode: c++; c-basic-offset:4 -*-
+ utils/formatting.h
+
+ This file is part of Kleopatra, the KDE keymanager
+ Copyright (c) 2007 Klarälvdalens Datakonsult AB
+
+ Kleopatra is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Kleopatra 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#ifndef __KLEOPATRA_UTILS_FORMATTING_H__
+#define __KLEOPATRA_UTILS_FORMATTING_H__
+
+#include <gpgme++/key.h>
+
+#include <kleo_export.h>
+
+class QString;
+class QStringList;
+class QDate;
+class QIcon;
+
+namespace GpgME
+{
+class Import;
+}
+
+namespace Kleo
+{
+namespace Formatting
+{
+
+KLEO_EXPORT QString prettyNameAndEMail(int proto, const char *id, const char *name, const char *email, const char *comment);
+KLEO_EXPORT QString prettyNameAndEMail(int proto, const QString &id, const QString &name, const QString &email, const QString &comment);
+KLEO_EXPORT QString prettyNameAndEMail(const GpgME::Key &key);
+KLEO_EXPORT QString prettyNameAndEMail(const GpgME::UserID &key);
+
+KLEO_EXPORT QString prettyUserID(const GpgME::UserID &uid);
+KLEO_EXPORT QString prettyKeyID(const char *id);
+
+KLEO_EXPORT QString prettyName(int proto, const char *id, const char *name, const char *comment);
+KLEO_EXPORT QString prettyName(const GpgME::Key &key);
+KLEO_EXPORT QString prettyName(const GpgME::UserID &uid);
+KLEO_EXPORT QString prettyName(const GpgME::UserID::Signature &sig);
+
+KLEO_EXPORT QString prettyEMail(const char *email, const char *id);
+KLEO_EXPORT QString prettyEMail(const GpgME::Key &key);
+KLEO_EXPORT QString prettyEMail(const GpgME::UserID &uid);
+KLEO_EXPORT QString prettyEMail(const GpgME::UserID::Signature &sig);
+
+enum ToolTipOption {
+ KeyID = 0x001,
+ Validity = 0x002,
+ StorageLocation = 0x004,
+ SerialNumber = 0x008,
+ Issuer = 0x010,
+ Subject = 0x020,
+ ExpiryDates = 0x040,
+ CertificateType = 0x080,
+ CertificateUsage = 0x100,
+ Fingerprint = 0x200,
+ UserIDs = 0x400,
+ OwnerTrust = 0x800,
+
+ AllOptions = 0xfff
+};
+
+KLEO_EXPORT QString toolTip(const GpgME::Key &key, int opts);
+
+KLEO_EXPORT QString expirationDateString(const GpgME::Key &key);
+KLEO_EXPORT QString expirationDateString(const GpgME::Subkey &subkey);
+KLEO_EXPORT QString expirationDateString(const GpgME::UserID::Signature &sig);
+KLEO_EXPORT QDate expirationDate(const GpgME::Key &key);
+KLEO_EXPORT QDate expirationDate(const GpgME::Subkey &subkey);
+KLEO_EXPORT QDate expirationDate(const GpgME::UserID::Signature &sig);
+
+KLEO_EXPORT QString creationDateString(const GpgME::Key &key);
+KLEO_EXPORT QString creationDateString(const GpgME::Subkey &subkey);
+KLEO_EXPORT QString creationDateString(const GpgME::UserID::Signature &sig);
+KLEO_EXPORT QDate creationDate(const GpgME::Key &key);
+KLEO_EXPORT QDate creationDate(const GpgME::Subkey &subkey);
+KLEO_EXPORT QDate creationDate(const GpgME::UserID::Signature &sig);
+
+KLEO_EXPORT QString displayName(GpgME::Protocol prot);
+KLEO_EXPORT QString type(const GpgME::Key &key);
+KLEO_EXPORT QString type(const GpgME::Subkey &subkey);
+
+KLEO_EXPORT QString ownerTrustShort(const GpgME::Key &key);
+KLEO_EXPORT QString ownerTrustShort(GpgME::Key::OwnerTrust trust);
+
+KLEO_EXPORT QString validityShort(const GpgME::Subkey &subkey);
+KLEO_EXPORT QString validityShort(const GpgME::UserID &uid);
+KLEO_EXPORT QString validityShort(const GpgME::UserID::Signature &sig);
+/* A sentence about the validity of the UserID */
+KLEO_EXPORT QString validity(const GpgME::UserID &uid);
+
+KLEO_EXPORT QString formatForComboBox(const GpgME::Key &key);
+
+KLEO_EXPORT QString formatKeyLink(const GpgME::Key &key);
+
+KLEO_EXPORT QString signatureToString(const GpgME::Signature &sig, const GpgME::Key &key);
+
+KLEO_EXPORT const char *summaryToString(const GpgME::Signature::Summary summary);
+
+KLEO_EXPORT QString importMetaData(const GpgME::Import &import);
+KLEO_EXPORT QString importMetaData(const GpgME::Import &import, const QStringList &sources);
+
+KLEO_EXPORT QString formatOverview(const GpgME::Key &key);
+KLEO_EXPORT QString usageString(const GpgME::Subkey &subkey);
+KLEO_EXPORT QString summaryLine(const GpgME::Key &key);
+
+KLEO_EXPORT QIcon iconForUid(const GpgME::UserID &uid);
+
+/* Is the key valid i.e. are all uids fully trusted? */
+KLEO_EXPORT bool uidsHaveFullValidity(const GpgME::Key &key);
+
+/* The compliance mode of the gnupg system. Empty if compliance
+ * mode is not set. */
+KLEO_EXPORT QString complianceMode();
+
+/* Is the given key in compliance with CO_DE_VS? */
+KLEO_EXPORT bool isKeyDeVs(const GpgME::Key &key);
+
+/* A sentence if the key confirms to the current compliance mode */
+KLEO_EXPORT QString complianceStringForKey(const GpgME::Key &key);
+
+/* A single word for use in keylists to describe the validity of the
+ * given key, including any conformance statements relevant to the
+ * current conformance mode. */
+KLEO_EXPORT QString complianceStringShort(const GpgME::Key &key);
+}
+}
+
+#endif /* __KLEOPATRA_UTILS_FORMATTING_H__ */